ath9k: fix aphy / wiphy idle mismatch
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Mon, 20 Dec 2010 16:29:59 +0000 (11:29 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Dec 2010 20:43:25 +0000 (15:43 -0500)
ath9k supports its own set of virtual wiphys, and it uses
the mac80211 idle notifications to know when a device needs
to be idle or not. We recently changed ath9k to force idle
on driver stop() and on resume but forgot to take into account
ath9k's own virtual wiphy idle states. These are used internally
by ath9k to check if the device's radio should be powered down
on each idle call. Without this change its possible that the
device could have been forced off but the virtual wiphy idle
was left on.

Cc: stable@kernel.org
Cc: Paul Stewart <pstew@google.com>
Cc: Amod Bodas <amod.bodas@atheros.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/pci.c

index 8a1691db166dd7beb316abc48350de181563a020..0348731accae26b3a481cb45d74369c9075f07b7 100644 (file)
@@ -1328,6 +1328,7 @@ static void ath9k_stop(struct ieee80211_hw *hw)
        ath9k_ps_restore(sc);
 
        sc->ps_idle = true;
+       ath9k_set_wiphy_idle(aphy, true);
        ath_radio_disable(sc, hw);
 
        sc->sc_flags |= SC_OP_INVALID;
index 3eb938d7a012bb695270ad16b929dcb0112914a3..10563334bb0960cce0d9e0be0344746fd664120e 100644 (file)
@@ -312,6 +312,7 @@ static int ath_pci_resume(struct device *device)
        ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 1);
 
        sc->ps_idle = true;
+       ath9k_set_wiphy_idle(aphy, true);
        ath_radio_disable(sc, hw);
 
        return 0;