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.
This commit is contained in:
Adrian Chadd 2011-10-02 13:43:06 +00:00
parent 23401900d3
commit 9bf15204ae
2 changed files with 5 additions and 18 deletions

View File

@ -142,8 +142,6 @@ ar5416GetPendingInterrupts(struct ath_hal *ah, HAL_INT *masked)
#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, HAL_INT ints)
* 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, HAL_INT ints)
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)

View File

@ -360,10 +360,8 @@ ar5416Reset(struct ath_hal *ah, HAL_OPMODE opmode,
#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);