1 --- a/drivers/net/wireless/ath/ath9k/main.c
2 +++ b/drivers/net/wireless/ath/ath9k/main.c
3 @@ -94,11 +94,13 @@ void ath9k_ps_wakeup(struct ath_softc *s
5 struct ath_common *common = ath9k_hw_common(sc->sc_ah);
7 + enum ath9k_power_mode power_mode;
9 spin_lock_irqsave(&sc->sc_pm_lock, flags);
10 if (++sc->ps_usecount != 1)
13 + power_mode = sc->sc_ah->power_mode;
14 ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_AWAKE);
17 @@ -106,10 +108,12 @@ void ath9k_ps_wakeup(struct ath_softc *s
18 * useful data. Better clear them now so that they don't mess up
19 * survey data results.
21 - spin_lock(&common->cc_lock);
22 - ath_hw_cycle_counters_update(common);
23 - memset(&common->cc_survey, 0, sizeof(common->cc_survey));
24 - spin_unlock(&common->cc_lock);
25 + if (power_mode != ATH9K_PM_AWAKE) {
26 + spin_lock(&common->cc_lock);
27 + ath_hw_cycle_counters_update(common);
28 + memset(&common->cc_survey, 0, sizeof(common->cc_survey));
29 + spin_unlock(&common->cc_lock);
33 spin_unlock_irqrestore(&sc->sc_pm_lock, flags);