aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/326-ath9k-use-one-shot-read-in-ath9k_hw_update_mibstats.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/326-ath9k-use-one-shot-read-in-ath9k_hw_update_mibstats.patch')
-rw-r--r--package/kernel/mac80211/patches/326-ath9k-use-one-shot-read-in-ath9k_hw_update_mibstats.patch39
1 files changed, 39 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/326-ath9k-use-one-shot-read-in-ath9k_hw_update_mibstats.patch b/package/kernel/mac80211/patches/326-ath9k-use-one-shot-read-in-ath9k_hw_update_mibstats.patch
new file mode 100644
index 0000000000..6420eeddcf
--- /dev/null
+++ b/package/kernel/mac80211/patches/326-ath9k-use-one-shot-read-in-ath9k_hw_update_mibstats.patch
@@ -0,0 +1,39 @@
+From: Oleksij Rempel <linux@rempel-privat.de>
+Date: Sun, 22 Mar 2015 19:29:53 +0100
+Subject: [PATCH] ath9k: use one shot read in ath9k_hw_update_mibstats
+
+this will reduce some overhead on usb bus.
+
+Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+
+--- a/drivers/net/wireless/ath/ath9k/ani.c
++++ b/drivers/net/wireless/ath/ath9k/ani.c
+@@ -107,11 +107,21 @@ static const struct ani_cck_level_entry
+ static void ath9k_hw_update_mibstats(struct ath_hw *ah,
+ struct ath9k_mib_stats *stats)
+ {
+- stats->ackrcv_bad += REG_READ(ah, AR_ACK_FAIL);
+- stats->rts_bad += REG_READ(ah, AR_RTS_FAIL);
+- stats->fcs_bad += REG_READ(ah, AR_FCS_FAIL);
+- stats->rts_good += REG_READ(ah, AR_RTS_OK);
+- stats->beacons += REG_READ(ah, AR_BEACON_CNT);
++ u32 addr[5] = {AR_RTS_OK, AR_RTS_FAIL, AR_ACK_FAIL,
++ AR_FCS_FAIL, AR_BEACON_CNT};
++ u32 data[5];
++
++ REG_READ_MULTI(ah, &addr[0], &data[0], 5);
++ /* AR_RTS_OK */
++ stats->rts_good += data[0];
++ /* AR_RTS_FAIL */
++ stats->rts_bad += data[1];
++ /* AR_ACK_FAIL */
++ stats->ackrcv_bad += data[2];
++ /* AR_FCS_FAIL */
++ stats->fcs_bad += data[3];
++ /* AR_BEACON_CNT */
++ stats->beacons += data[4];
+ }
+
+ static void ath9k_ani_restart(struct ath_hw *ah)