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:
parent
23401900d3
commit
9bf15204ae
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user