Search Linux Wireless

Re: [PATCH] ath9k: Fix interrupt handling for the AR9002 family

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2013-12-15 21:13, Felix Fietkau wrote:
> On 2013-12-14 15:11, Sujith Manoharan wrote:
>> From: Sujith Manoharan <c_manoha@xxxxxxxxxxxxxxxx>
>> 
>> This patch adds a driver workaround for a HW issue.
>> 
>> A race condition in the HW results in missing interrupts,
>> which can be avoided by a read/write with the ISR register.
>> All chips in the AR9002 series are affected by this bug - AR9003
>> and above do not have this problem.
>> 
>> Cc: stable@xxxxxxxxxxxxxxx
>> Signed-off-by: Sujith Manoharan <c_manoha@xxxxxxxxxxxxxxxx>
> Please don't apply this patch just yet, it seems to be causing interrupt
> storms. I'm currently looking into it.
This change on top of it should fix the interrupt storms (which were
observed on AR913x):
---
--- a/drivers/net/wireless/ath/ath9k/ar9002_mac.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_mac.c
@@ -133,6 +133,11 @@ static bool ar9002_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
 		*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;
 
@@ -164,11 +169,6 @@ static bool ar9002_hw_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
 		}
 	}
 
-	if (!(pCap->hw_caps & ATH9K_HW_CAP_RAC_SUPPORTED)) {
-		REG_WRITE(ah, AR_ISR, isr);
-		REG_READ(ah, AR_ISR);
-	}
-
 	if (sync_cause) {
 		ath9k_debug_sync_cause(common, sync_cause);
 		fatal_int =


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




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux