ath9k_hw: check for asynchronous MCI interrupt pending
authorMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Wed, 30 Nov 2011 05:11:20 +0000 (10:41 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 30 Nov 2011 20:08:46 +0000 (15:08 -0500)
MCI interrupt is an asynchronous one, so take care of it by having a
check in ath9k_hw_intrpend, which actually decides whether the interrupt
is really for the driver from ath_isr

Cc: Wilson Tsao <wtsao@qca.qualcomm.com>
Cc: Senthil Balasubramanian <senthilb@qca.qualcomm.com>
Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/mac.c

index 9d693201b0b59e5fb0ee51a298ddd0e7e10f85b6..0e4fbb3bea3310156eed28de8a6ac88466a2f744 100644 (file)
@@ -760,7 +760,10 @@ bool ath9k_hw_intrpend(struct ath_hw *ah)
                return true;
 
        host_isr = REG_READ(ah, AR_INTR_ASYNC_CAUSE);
-       if ((host_isr & AR_INTR_MAC_IRQ) && (host_isr != AR_INTR_SPURIOUS))
+
+       if (((host_isr & AR_INTR_MAC_IRQ) ||
+            (host_isr & AR_INTR_ASYNC_MASK_MCI)) &&
+           (host_isr != AR_INTR_SPURIOUS))
                return true;
 
        host_isr = REG_READ(ah, AR_INTR_SYNC_CAUSE);