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