diff options
author | Felix Fietkau <nbd@openwrt.org> | 2010-10-16 02:30:30 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2010-10-16 02:30:30 +0000 |
commit | 8083a4380b0832bba5502e0ff05f112367ee7edc (patch) | |
tree | 7e0c5d6a40bad533cb1462d94c32ceddd41f3a1c /package/mac80211/patches/523-ath5k_use_common_counters.patch | |
parent | c4541431779b70fdf55de91ce735caa7404a68bd (diff) | |
download | upstream-8083a4380b0832bba5502e0ff05f112367ee7edc.tar.gz upstream-8083a4380b0832bba5502e0ff05f112367ee7edc.tar.bz2 upstream-8083a4380b0832bba5502e0ff05f112367ee7edc.zip |
mac80211: update to wireless-testing 2010-10-15, add a few ath9k fixes and performance enhancements
SVN-Revision: 23470
Diffstat (limited to 'package/mac80211/patches/523-ath5k_use_common_counters.patch')
-rw-r--r-- | package/mac80211/patches/523-ath5k_use_common_counters.patch | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/package/mac80211/patches/523-ath5k_use_common_counters.patch b/package/mac80211/patches/523-ath5k_use_common_counters.patch deleted file mode 100644 index 1899f8d465..0000000000 --- a/package/mac80211/patches/523-ath5k_use_common_counters.patch +++ /dev/null @@ -1,104 +0,0 @@ ---- a/drivers/net/wireless/ath/ath5k/ani.c -+++ b/drivers/net/wireless/ath/ath5k/ani.c -@@ -355,41 +355,28 @@ ath5k_ani_lower_immunity(struct ath5k_hw - - - /** -- * ath5k_hw_ani_get_listen_time() - Calculate time spent listening -+ * ath5k_hw_ani_get_listen_time() - Update counters and return listening time - * - * Return an approximation of the time spent "listening" in milliseconds (ms) -- * since the last call of this function by deducting the cycles spent -- * transmitting and receiving from the total cycle count. -- * Save profile count values for debugging/statistics and because we might want -- * to use them later. -- * -- * We assume no one else clears these registers! -+ * since the last call of this function. -+ * Save a snapshot of the counter values for debugging/statistics. - */ - static int - ath5k_hw_ani_get_listen_time(struct ath5k_hw *ah, struct ath5k_ani_state *as) - { -+ struct ath_common *common = ath5k_hw_common(ah); - int listen; - -- /* freeze */ -- ath5k_hw_reg_write(ah, AR5K_MIBC_FMC, AR5K_MIBC); -- /* read */ -- as->pfc_cycles = ath5k_hw_reg_read(ah, AR5K_PROFCNT_CYCLE); -- as->pfc_busy = ath5k_hw_reg_read(ah, AR5K_PROFCNT_RXCLR); -- as->pfc_tx = ath5k_hw_reg_read(ah, AR5K_PROFCNT_TX); -- as->pfc_rx = ath5k_hw_reg_read(ah, AR5K_PROFCNT_RX); -- /* clear */ -- ath5k_hw_reg_write(ah, 0, AR5K_PROFCNT_TX); -- ath5k_hw_reg_write(ah, 0, AR5K_PROFCNT_RX); -- ath5k_hw_reg_write(ah, 0, AR5K_PROFCNT_RXCLR); -- ath5k_hw_reg_write(ah, 0, AR5K_PROFCNT_CYCLE); -- /* un-freeze */ -- ath5k_hw_reg_write(ah, 0, AR5K_MIBC); -+ spin_lock_bh(&common->cc_lock); - -- /* TODO: where does 44000 come from? (11g clock rate?) */ -- listen = (as->pfc_cycles - as->pfc_rx - as->pfc_tx) / 44000; -+ ath_hw_cycle_counters_update(common); -+ memcpy(&as->last_cc, &common->cc_ani, sizeof(as->last_cc)); -+ -+ /* clears common->cc_ani */ -+ listen = ath_hw_get_listen_time(common); -+ -+ spin_unlock_bh(&common->cc_lock); - -- if (as->pfc_cycles == 0 || listen < 0) -- return 0; - return listen; - } - ---- a/drivers/net/wireless/ath/ath5k/ani.h -+++ b/drivers/net/wireless/ath/ath5k/ani.h -@@ -75,10 +75,7 @@ struct ath5k_ani_state { - unsigned int cck_errors; - - /* debug/statistics only: numbers from last ANI calibration */ -- unsigned int pfc_tx; -- unsigned int pfc_rx; -- unsigned int pfc_busy; -- unsigned int pfc_cycles; -+ struct ath_cycle_counters last_cc; - unsigned int last_listen; - unsigned int last_ofdm_errors; - unsigned int last_cck_errors; ---- a/drivers/net/wireless/ath/ath5k/debug.c -+++ b/drivers/net/wireless/ath/ath5k/debug.c -@@ -715,20 +715,21 @@ static ssize_t read_file_ani(struct file - len += snprintf(buf+len, sizeof(buf)-len, - "beacon RSSI average:\t%d\n", - sc->ah->ah_beacon_rssi_avg.avg); -+ -+#define CC_PRINT(_struct, _field) \ -+ _struct._field, \ -+ _struct.cycles > 0 ? \ -+ _struct._field*100/_struct.cycles : 0 -+ - len += snprintf(buf+len, sizeof(buf)-len, "profcnt tx\t\t%u\t(%d%%)\n", -- as->pfc_tx, -- as->pfc_cycles > 0 ? -- as->pfc_tx*100/as->pfc_cycles : 0); -+ CC_PRINT(as->last_cc, tx_frame)); - len += snprintf(buf+len, sizeof(buf)-len, "profcnt rx\t\t%u\t(%d%%)\n", -- as->pfc_rx, -- as->pfc_cycles > 0 ? -- as->pfc_rx*100/as->pfc_cycles : 0); -+ CC_PRINT(as->last_cc, rx_frame)); - len += snprintf(buf+len, sizeof(buf)-len, "profcnt busy\t\t%u\t(%d%%)\n", -- as->pfc_busy, -- as->pfc_cycles > 0 ? -- as->pfc_busy*100/as->pfc_cycles : 0); -+ CC_PRINT(as->last_cc, rx_busy)); -+#undef CC_PRINT - len += snprintf(buf+len, sizeof(buf)-len, "profcnt cycles\t\t%u\n", -- as->pfc_cycles); -+ as->last_cc.cycles); - len += snprintf(buf+len, sizeof(buf)-len, - "listen time\t\t%d\tlast: %d\n", - as->listen_time, as->last_listen); |