Date: Sun, 2 Oct 2011 13:43:06 +0000 (UTC) From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r225921 - head/sys/dev/ath/ath_hal/ar5416 Message-ID: <201110021343.p92Dh61L065821@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201110021343.p92Dh61L065821>