summaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/576-ath9k_rx_dma_stop_check.patch
blob: b8280f68d7f5520ddb6f64319988bcfc219b6a6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -718,6 +718,12 @@ bool ath9k_hw_stopdmarecv(struct ath_hw 
 		udelay(AH_TIME_QUANTUM);
 	}
 
+	if (!AR_SREV_9300_20_OR_LATER(ah) && (mac_status & 0x700) == 0) {
+		/* DMA is idle but the MAC is still stuck processing events */
+		*reset = true;
+		return true;
+	}
+
 	if (i == 0) {
 		ath_err(common,
 			"DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x DMADBG_7=0x%08x\n",