328-ath9k-fix-processing-RXORN-interrupts.patch 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. From: Felix Fietkau <[email protected]>
  2. Date: Sat, 18 Oct 2014 13:31:52 +0200
  3. Subject: [PATCH] ath9k: fix processing RXORN interrupts
  4. The "goto chip_reset" is a bit misleading, because it does not actually
  5. issue a chip reset. Instead it is bypassing processing of other
  6. interrupts and assumes that the tasklet will issue a chip reset.
  7. In the case of RXORN this does not happen, so bypassing processing of
  8. other interrupts will simply allow them to fire again. Even if RXORN
  9. was triggering a reset, it is not critical enough to need the bypass
  10. here.
  11. Signed-off-by: Felix Fietkau <[email protected]>
  12. ---
  13. --- a/drivers/net/wireless/ath/ath9k/main.c
  14. +++ b/drivers/net/wireless/ath/ath9k/main.c
  15. @@ -545,11 +545,10 @@ irqreturn_t ath_isr(int irq, void *dev)
  16. sched = true;
  17. /*
  18. - * If a FATAL or RXORN interrupt is received, we have to reset the
  19. - * chip immediately.
  20. + * If a FATAL interrupt is received, we have to reset the chip
  21. + * immediately.
  22. */
  23. - if ((status & ATH9K_INT_FATAL) || ((status & ATH9K_INT_RXORN) &&
  24. - !(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)))
  25. + if (status & ATH9K_INT_FATAL)
  26. goto chip_reset;
  27. if ((ah->config.hw_hang_checks & HW_BB_WATCHDOG) &&