diff options
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.patch | 39 |
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) |