svn commit: r225921 - head/sys/dev/ath/ath_hal/ar5416

Adrian Chadd adrian at FreeBSD.org
Sun Oct 2 13:43:07 UTC 2011


Author: adrian
Date: Sun Oct  2 13:43:06 2011
New Revision: 225921
URL: http://svn.freebsd.org/changeset/base/225921

Log:
  Disable TX interrupt mitigation just for the time being.
  
  There are some timing concerns which I've yet to fully map out.
  In any case, there's an existing software driven mitigation method
  for TX interrupts and when TX'ing 11n frames, the whole frame itself
  generates an interrupt rather then the subframes.

Modified:
  head/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c
  head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c

Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c	Sun Oct  2 13:29:29 2011	(r225920)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c	Sun Oct  2 13:43:06 2011	(r225921)
@@ -142,8 +142,6 @@ ar5416GetPendingInterrupts(struct ath_ha
 #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
 		*masked |= mask2;
 	}
@@ -216,18 +214,12 @@ ar5416SetInterrupts(struct ath_hal *ah, 
 	 * Overwrite default mask if Interrupt mitigation
 	 * is specified for AR5416
 	 */
-	mask = ints & HAL_INT_COMMON;
-	if (ints & HAL_INT_TX)
-		mask |= AR_IMR_TXMINTR | AR_IMR_TXINTM;
 	if (ints & HAL_INT_RX)
 		mask |= AR_IMR_RXERR | AR_IMR_RXMINTR | AR_IMR_RXINTM;
-	if (ints & HAL_INT_TX) {
-		if (ahp->ah_txErrInterruptMask)
-			mask |= AR_IMR_TXERR;
-		if (ahp->ah_txEolInterruptMask)
-			mask |= AR_IMR_TXEOL;
-	}
 #else
+	if (ints & HAL_INT_RX)
+		mask |= AR_IMR_RXOK | AR_IMR_RXERR | AR_IMR_RXDESC;
+#endif
 	if (ints & HAL_INT_TX) {
 		if (ahp->ah_txOkInterruptMask)
 			mask |= AR_IMR_TXOK;
@@ -238,9 +230,6 @@ ar5416SetInterrupts(struct ath_hal *ah, 
 		if (ahp->ah_txEolInterruptMask)
 			mask |= AR_IMR_TXEOL;
 	}
-	if (ints & HAL_INT_RX)
-		mask |= AR_IMR_RXOK | AR_IMR_RXERR | AR_IMR_RXDESC;
-#endif
 	if (ints & (HAL_INT_BMISC)) {
 		mask |= AR_IMR_BCNMISC;
 		if (ints & HAL_INT_TIM)

Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c	Sun Oct  2 13:29:29 2011	(r225920)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c	Sun Oct  2 13:43:06 2011	(r225921)
@@ -360,10 +360,8 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMO
 #ifdef	AH_AR5416_INTERRUPT_MITIGATION
 	OS_REG_WRITE(ah, AR_MIRT, 0);
 
-	OS_REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
-	OS_REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 2000);
-	OS_REG_RMW_FIELD(ah, AR_TIMT, AR_TIMT_LAST, 300);
-	OS_REG_RMW_FIELD(ah, AR_TIMT, AR_TIMT_FIRST, 750);
+	OS_REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 250);
+	OS_REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 700);
 #endif
 	ar5416InitBB(ah, chan);
 


More information about the svn-src-head mailing list