ath9k: Handle ASPM properly for RFKILL
authorSujith <Sujith.Manoharan@atheros.com>
Mon, 13 Apr 2009 16:26:25 +0000 (21:56 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Apr 2009 20:54:45 +0000 (16:54 -0400)
Radio enable/disable have to handle ASPM state properly.
This patch fixes it.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/main.c

index 8b6a7ea4e59bda4dfb4ef6948e46bee5a09a863c..1a9bf7ece4a516fbbb1833d182967cf5dab75c36 100644 (file)
@@ -1089,10 +1089,10 @@ void ath_radio_enable(struct ath_softc *sc)
        int r;
 
        ath9k_ps_wakeup(sc);
-       spin_lock_bh(&sc->sc_resetlock);
+       ath9k_hw_configpcipowersave(ah, 0);
 
+       spin_lock_bh(&sc->sc_resetlock);
        r = ath9k_hw_reset(ah, ah->curchan, false);
-
        if (r) {
                DPRINTF(sc, ATH_DBG_FATAL,
                        "Unable to reset channel %u (%uMhz) ",
@@ -1154,6 +1154,7 @@ void ath_radio_disable(struct ath_softc *sc)
        spin_unlock_bh(&sc->sc_resetlock);
 
        ath9k_hw_phy_disable(ah);
+       ath9k_hw_configpcipowersave(ah, 1);
        ath9k_hw_setpower(ah, ATH9K_PM_FULL_SLEEP);
        ath9k_ps_restore(sc);
 }