ath9k: skip ATH9K_INT_TIM_TIMER when we are idle
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Tue, 7 Dec 2010 23:13:22 +0000 (15:13 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 8 Dec 2010 20:38:45 +0000 (15:38 -0500)
We should not be idle when we get the ATH9K_INT_TIM_TIMER,
otherwise its a sign of something broken in our design with
our idle state machine and mac80211. Skip these and WARN once
just in case this is triggerable.

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

index 3e0c8a1874b49a585744c0a8952d1437af9829c3..41a312a3d40125ce725641c3e87fbe21c762e4c1 100644 (file)
@@ -765,6 +765,8 @@ irqreturn_t ath_isr(int irq, void *dev)
 
        if (!(ah->caps.hw_caps & ATH9K_HW_CAP_AUTOSLEEP))
                if (status & ATH9K_INT_TIM_TIMER) {
+                       if (ATH_DBG_WARN_ON_ONCE(sc->ps_idle))
+                               goto chip_reset;
                        /* Clear RxAbort bit so that we can
                         * receive frames */
                        ath9k_setpower(sc, ATH9K_PM_AWAKE);