|
@@ -592,14 +592,12 @@ void ath9k_tasklet(unsigned long data)
|
|
|
u32 status = sc->intrstatus;
|
|
|
u32 rxmask;
|
|
|
|
|
|
- ath9k_ps_wakeup(sc);
|
|
|
-
|
|
|
if (status & ATH9K_INT_FATAL) {
|
|
|
ath_reset(sc, true);
|
|
|
- ath9k_ps_restore(sc);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ ath9k_ps_wakeup(sc);
|
|
|
spin_lock(&sc->sc_pcu_lock);
|
|
|
|
|
|
if (!ath9k_hw_check_alive(ah))
|
|
@@ -969,6 +967,7 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
|
|
|
/* Stop ANI */
|
|
|
del_timer_sync(&common->ani.timer);
|
|
|
|
|
|
+ ath9k_ps_wakeup(sc);
|
|
|
spin_lock_bh(&sc->sc_pcu_lock);
|
|
|
|
|
|
ieee80211_stop_queues(hw);
|
|
@@ -1015,6 +1014,7 @@ int ath_reset(struct ath_softc *sc, bool retry_tx)
|
|
|
|
|
|
/* Start ANI */
|
|
|
ath_start_ani(common);
|
|
|
+ ath9k_ps_restore(sc);
|
|
|
|
|
|
return r;
|
|
|
}
|
|
@@ -1701,7 +1701,9 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
|
|
|
skip_chan_change:
|
|
|
if (changed & IEEE80211_CONF_CHANGE_POWER) {
|
|
|
sc->config.txpowlimit = 2 * conf->power_level;
|
|
|
+ ath9k_ps_wakeup(sc);
|
|
|
ath_update_txpow(sc);
|
|
|
+ ath9k_ps_restore(sc);
|
|
|
}
|
|
|
|
|
|
spin_lock_bh(&sc->wiphy_lock);
|