|
@@ -359,6 +359,11 @@ void ath_beacon_tasklet(unsigned long data)
|
|
|
int slot;
|
|
|
u32 bfaddr, bc = 0;
|
|
|
|
|
|
+ if (work_pending(&sc->hw_reset_work)) {
|
|
|
+ ath_dbg(common, RESET,
|
|
|
+ "reset work is pending, skip beaconing now\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
/*
|
|
|
* Check if the previous beacon has gone out. If
|
|
|
* not don't try to post another, skip this period
|
|
@@ -381,6 +386,7 @@ void ath_beacon_tasklet(unsigned long data)
|
|
|
ath9k_hw_bstuck_nfcal(ah);
|
|
|
} else if (sc->beacon.bmisscnt >= BSTUCK_THRESH) {
|
|
|
ath_dbg(common, BSTUCK, "beacon is officially stuck\n");
|
|
|
+ sc->beacon.bmisscnt = 0;
|
|
|
sc->sc_flags |= SC_OP_TSF_RESET;
|
|
|
ieee80211_queue_work(sc->hw, &sc->hw_reset_work);
|
|
|
}
|