+--- a/drivers/net/wireless/ath/ath9k/beacon.c
++++ b/drivers/net/wireless/ath/ath9k/beacon.c
+@@ -386,9 +386,7 @@ void ath_beacon_tasklet(unsigned long da
+ ath_dbg(common, ATH_DBG_BSTUCK,
+ "beacon is officially stuck\n");
+ sc->sc_flags |= SC_OP_TSF_RESET;
+- spin_lock(&sc->sc_pcu_lock);
+- ath_reset(sc, true);
+- spin_unlock(&sc->sc_pcu_lock);
++ ieee80211_queue_work(sc->hw, &sc->hw_reset_work);
+ }
+
+ return;