Signed-off-by: Parag Warudkar diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h index a56b241..b3088a1 100644 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h @@ -764,6 +764,7 @@ struct ath_softc { atomic_t wow_got_bmiss_intr; atomic_t wow_sleep_proc_intr; /* in the middle of WoW sleep ? */ u32 wow_intr_before_sleep; + bool suspending; #endif }; diff --git a/drivers/net/wireless/ath/ath9k/link.c b/drivers/net/wireless/ath/ath9k/link.c index ade3afb..fa77e19 100644 --- a/drivers/net/wireless/ath/ath9k/link.c +++ b/drivers/net/wireless/ath/ath9k/link.c @@ -158,7 +158,8 @@ void ath_start_rx_poll(struct ath_softc *sc, u8 nbeacon) { if (!AR_SREV_9300(sc->sc_ah)) return; - + if (sc->suspending) + return; if (!test_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags)) return; diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 6e66f9c..0cf88b7 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -2150,7 +2150,7 @@ static int ath9k_suspend(struct ieee80211_hw *hw, int ret = 0; mutex_lock(&sc->mutex); - + sc->suspending = 1; ath_cancel_work(sc); ath_stop_ani(sc); del_timer_sync(&sc->rx_poll_timer); @@ -2288,6 +2288,7 @@ static int ath9k_resume(struct ieee80211_hw *hw) ath9k_start_btcoex(sc); ath9k_ps_restore(sc); + sc->suspending = 0; mutex_unlock(&sc->mutex); return 0;