|
@@ -620,7 +620,13 @@ static void ath_beacon_config_sta(struct ath_softc *sc,
|
|
|
ath9k_hw_disable_interrupts(ah);
|
|
|
ath9k_hw_set_sta_beacon_timers(ah, &bs);
|
|
|
ah->imask |= ATH9K_INT_BMISS;
|
|
|
- ath9k_hw_set_interrupts(ah, ah->imask);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If the beacon config is called beacause of TSFOOR,
|
|
|
+ * Interrupts will be enabled back at the end of ath9k_tasklet
|
|
|
+ */
|
|
|
+ if (!(sc->ps_flags & PS_TSFOOR_SYNC))
|
|
|
+ ath9k_hw_set_interrupts(ah, ah->imask);
|
|
|
}
|
|
|
|
|
|
static void ath_beacon_config_adhoc(struct ath_softc *sc,
|
|
@@ -661,7 +667,12 @@ static void ath_beacon_config_adhoc(struct ath_softc *sc,
|
|
|
ath9k_hw_disable_interrupts(ah);
|
|
|
ath9k_beacon_init(sc, nexttbtt, intval);
|
|
|
sc->beacon.bmisscnt = 0;
|
|
|
- ath9k_hw_set_interrupts(ah, ah->imask);
|
|
|
+ /*
|
|
|
+ * If the beacon config is called beacause of TSFOOR,
|
|
|
+ * Interrupts will be enabled back at the end of ath9k_tasklet
|
|
|
+ */
|
|
|
+ if (!(sc->ps_flags & PS_TSFOOR_SYNC))
|
|
|
+ ath9k_hw_set_interrupts(ah, ah->imask);
|
|
|
}
|
|
|
|
|
|
static bool ath9k_allow_beacon_config(struct ath_softc *sc,
|