The "goto chip_reset" is a bit misleading, because it does not actually
issue a chip reset. Instead it is bypassing processing of other
interrupts and assumes that the tasklet will issue a chip reset.

In the case of RXORN this does not happen, so bypassing processing of
other interrupts will simply allow them to fire again. Even if RXORN
was triggering a reset, it is not critical enough to need the bypass
here.

Signed-off-by: Felix Fietkau <[email protected]>
---
 drivers/net/wireless/ath/ath9k/main.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/main.c 
b/drivers/net/wireless/ath/ath9k/main.c
index 6f6a974..e7d4833 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -539,11 +539,10 @@ irqreturn_t ath_isr(int irq, void *dev)
                sched = true;
 
        /*
-        * If a FATAL or RXORN interrupt is received, we have to reset the
-        * chip immediately.
+        * If a FATAL interrupt is received, we have to reset the chip
+        * immediately.
         */
-       if ((status & ATH9K_INT_FATAL) || ((status & ATH9K_INT_RXORN) &&
-           !(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)))
+       if (status & ATH9K_INT_FATAL)
                goto chip_reset;
 
        if ((ah->config.hw_hang_checks & HW_BB_WATCHDOG) &&
-- 
2.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to