Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Sep 2011 09:22:46 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r225573 - user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416
Message-ID:  <201109150922.p8F9MkDE065719@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Thu Sep 15 09:22:46 2011
New Revision: 225573
URL: http://svn.freebsd.org/changeset/base/225573

Log:
  Fix the interrupt mitigation stuff, now that I know what's going on.
  
  * If the RX mitigation interrupts fire, set HAL_INT_RX and clear the
    relevant underlying interrupt(s) as well.
  
  * If the TX mitigation interrupts fire, set HAL_INT_TX
  
  * If any of the TX status bits (ok, err, desc, eol) are set, update
    the TX bitmask, but don't set HAL_INT_TX if TX interrupt mitigation
    is enabled.

Modified:
  user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c

Modified: user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c	Thu Sep 15 09:06:28 2011	(r225572)
+++ user/adrian/if_ath_tx/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c	Thu Sep 15 09:22:46 2011	(r225573)
@@ -144,12 +144,29 @@ ar5416GetPendingInterrupts(struct ath_ha
 		 */
 
 		*masked = isr & HAL_INT_COMMON;
-		if (isr & (AR_ISR_RXOK | AR_ISR_RXERR | AR_ISR_RXMINTR |
-		    AR_ISR_RXINTM))
+#ifdef	AH_AR5416_INTERRUPT_MITIGATION
+		if (isr & (AR_ISR_RXMINTR | AR_ISR_RXINTM)) {
+			*masked |= HAL_INT_RX;
+		}
+		if (isr & (AR_ISR_TXMINTR | AR_ISR_TXINTM)) {
+			*masked |= HAL_INT_TX;
+		}
+#endif
+
+		/*
+		 * Don't signal this when doing interrupt mitigation
+		 */
+#ifndef	AH_AR5416_INTERRUPT_MITIGATION
+		if (isr & (AR_ISR_RXOK | AR_ISR_RXERR))
 			*masked |= HAL_INT_RX;
-		if (isr & (AR_ISR_TXOK | AR_ISR_TXDESC | AR_ISR_TXERR |
-		    AR_ISR_TXEOL | AR_ISR_TXMINTR | AR_ISR_TXINTM)) {
+#endif
+
+		if (isr & (AR_ISR_TXOK | AR_ISR_TXDESC | AR_ISR_TXERR | AR_ISR_TXEOL)) {
+
+#ifndef	AH_AR5416_INTERRUPT_MITIGATION
 			*masked |= HAL_INT_TX;
+#endif
+
 			if (pCap->halUseIsrRac) {
 				isr0 = OS_REG_READ(ah, AR_ISR_S0_S);
 				isr1 = OS_REG_READ(ah, AR_ISR_S1_S);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201109150922.p8F9MkDE065719>