ath9k: Fix TX hang poll routine
authorSujith <Sujith.Manoharan@atheros.com>
Fri, 9 Oct 2009 04:21:28 +0000 (09:51 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 27 Oct 2009 20:47:55 +0000 (16:47 -0400)
When TX is hung, the chip is reset. Ensure that
the chip is awake by using the PS wrappers.

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

index a8620b1d091ba6a134f08e475bc74498db9f490f..2a4efcbced604dd7aeed122d7f65f364c34a9a56 100644 (file)
@@ -2079,7 +2079,9 @@ static void ath_tx_complete_poll_work(struct work_struct *work)
        if (needreset) {
                ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_RESET,
                          "tx hung, resetting the chip\n");
        if (needreset) {
                ath_print(ath9k_hw_common(sc->sc_ah), ATH_DBG_RESET,
                          "tx hung, resetting the chip\n");
+               ath9k_ps_wakeup(sc);
                ath_reset(sc, false);
                ath_reset(sc, false);
+               ath9k_ps_restore(sc);
        }
 
        ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work,
        }
 
        ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work,