소스 검색

ath9k: fix interrupt storms on AR913x

Signed-off-by: Felix Fietkau <[email protected]>

SVN-Revision: 39062
Felix Fietkau 12 년 전
부모
커밋
4b03d33e31
1개의 변경된 파일13개의 추가작업 그리고 7개의 파일을 삭제
  1. 13 7
      package/kernel/mac80211/patches/300-pending_work.patch

+ 13 - 7
package/kernel/mac80211/patches/300-pending_work.patch

@@ -11856,7 +11856,18 @@
  			ah->intr_txqs |= MS(s1_s, AR_ISR_S1_QCU_TXERR);
  			ah->intr_txqs |= MS(s1_s, AR_ISR_S1_QCU_TXEOL);
  		}
-@@ -120,7 +139,12 @@ static bool ar9002_hw_get_isr(struct ath
+@@ -114,13 +133,23 @@ static bool ar9002_hw_get_isr(struct ath
+ 		*masked |= mask2;
+ 	}
+ 
++	if (!(pCap->hw_caps & ATH9K_HW_CAP_RAC_SUPPORTED)) {
++		REG_WRITE(ah, AR_ISR, isr);
++		REG_READ(ah, AR_ISR);
++	}
++
+ 	if (AR_SREV_9100(ah))
+ 		return true;
+ 
  	if (isr & AR_ISR_GENTMR) {
  		u32 s5_s;
  
@@ -11870,7 +11881,7 @@
  		ah->intr_gen_timer_trigger =
  				MS(s5_s, AR_ISR_S5_GENTIMER_TRIG);
  
-@@ -133,6 +157,16 @@ static bool ar9002_hw_get_isr(struct ath
+@@ -133,6 +162,11 @@ static bool ar9002_hw_get_isr(struct ath
  		if ((s5_s & AR_ISR_S5_TIM_TIMER) &&
  		    !(pCap->hw_caps & ATH9K_HW_CAP_AUTOSLEEP))
  			*masked |= ATH9K_INT_TIM_TIMER;
@@ -11879,11 +11890,6 @@
 +			REG_WRITE(ah, AR_ISR_S5, s5_s);
 +			isr &= ~AR_ISR_GENTMR;
 +		}
-+	}
-+
-+	if (!(pCap->hw_caps & ATH9K_HW_CAP_RAC_SUPPORTED)) {
-+		REG_WRITE(ah, AR_ISR, isr);
-+		REG_READ(ah, AR_ISR);
  	}
  
  	if (sync_cause) {