mac80211/ath9k: some more performance improvements
[openwrt/staging/dedeckeh.git] / package / mac80211 / patches / 561-ath9k_optimize_hw_check.patch
1 --- a/drivers/net/wireless/ath/ath9k/beacon.c
2 +++ b/drivers/net/wireless/ath/ath9k/beacon.c
3 @@ -421,6 +421,9 @@ void ath_beacon_tasklet(unsigned long da
4 if (ath9k_hw_numtxpending(ah, sc->beacon.beaconq) != 0) {
5 sc->beacon.bmisscnt++;
6
7 + if (!ath9k_hw_check_alive(ah))
8 + ieee80211_queue_work(sc->hw, &sc->hw_check_work);
9 +
10 if (sc->beacon.bmisscnt < BSTUCK_THRESH * sc->nbcnvifs) {
11 ath_dbg(common, BSTUCK,
12 "missed %u consecutive beacons\n",
13 --- a/drivers/net/wireless/ath/ath9k/main.c
14 +++ b/drivers/net/wireless/ath/ath9k/main.c
15 @@ -695,17 +695,6 @@ void ath9k_tasklet(unsigned long data)
16 goto out;
17 }
18
19 - /*
20 - * Only run the baseband hang check if beacons stop working in AP or
21 - * IBSS mode, because it has a high false positive rate. For station
22 - * mode it should not be necessary, since the upper layers will detect
23 - * this through a beacon miss automatically and the following channel
24 - * change will trigger a hardware reset anyway
25 - */
26 - if (ath9k_hw_numtxpending(ah, sc->beacon.beaconq) != 0 &&
27 - !ath9k_hw_check_alive(ah))
28 - ieee80211_queue_work(sc->hw, &sc->hw_check_work);
29 -
30 if ((status & ATH9K_INT_TSFOOR) && sc->ps_enabled) {
31 /*
32 * TSF sync does not look correct; remain awake to sync with