add chaos_calmer branch
[15.05/openwrt.git] / package / kernel / mac80211 / patches / 326-ath9k-use-one-shot-read-in-ath9k_hw_update_mibstats.patch
1 From: Oleksij Rempel <linux@rempel-privat.de>
2 Date: Sun, 22 Mar 2015 19:29:53 +0100
3 Subject: [PATCH] ath9k: use one shot read in ath9k_hw_update_mibstats
4
5 this will reduce some overhead on usb bus.
6
7 Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
8 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
9 ---
10
11 --- a/drivers/net/wireless/ath/ath9k/ani.c
12 +++ b/drivers/net/wireless/ath/ath9k/ani.c
13 @@ -107,11 +107,21 @@ static const struct ani_cck_level_entry
14  static void ath9k_hw_update_mibstats(struct ath_hw *ah,
15                                      struct ath9k_mib_stats *stats)
16  {
17 -       stats->ackrcv_bad += REG_READ(ah, AR_ACK_FAIL);
18 -       stats->rts_bad += REG_READ(ah, AR_RTS_FAIL);
19 -       stats->fcs_bad += REG_READ(ah, AR_FCS_FAIL);
20 -       stats->rts_good += REG_READ(ah, AR_RTS_OK);
21 -       stats->beacons += REG_READ(ah, AR_BEACON_CNT);
22 +       u32 addr[5] = {AR_RTS_OK, AR_RTS_FAIL, AR_ACK_FAIL,
23 +                      AR_FCS_FAIL, AR_BEACON_CNT};
24 +       u32 data[5];
25 +
26 +       REG_READ_MULTI(ah, &addr[0], &data[0], 5);
27 +       /* AR_RTS_OK */
28 +       stats->rts_good += data[0];
29 +       /* AR_RTS_FAIL */
30 +       stats->rts_bad += data[1];
31 +       /* AR_ACK_FAIL */
32 +       stats->ackrcv_bad += data[2];
33 +       /* AR_FCS_FAIL */
34 +       stats->fcs_bad += data[3];
35 +       /* AR_BEACON_CNT */
36 +       stats->beacons += data[4];
37  }
38  
39  static void ath9k_ani_restart(struct ath_hw *ah)