]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ath9k: fix aphy / wiphy idle mismatch
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Mon, 20 Dec 2010 16:29:59 +0000 (11:29 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 17 Feb 2011 22:46:52 +0000 (14:46 -0800)
commit afe68d0a8f5961652e26cea39d74e2cc820de841 upstream.

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: 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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/pci.c

index 4a066d141409ed8b89190087b7308c75bfd41790..38616df92ec7081895f4b3b3157c1b100d31867d 100644 (file)
@@ -1370,6 +1370,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 af4cdc2df88ea43ae6e850d7b974892b2bd3f553..894ebadbb1d39997e1fdb0e2ccf00f0f211d485c 100644 (file)
@@ -291,6 +291,7 @@ static int ath_pci_resume(struct pci_dev *pdev)
        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;