Don't incorrectly set the burst duration setting in the TX descriptor.
After inspecting the ath9k source, it seems the AR5416 and later MACs don't take an explicit RTS/CTS duration. A per-scenario (ie, what multi- rate retry became) rts/cts control flag and packet duration is provided; the hardware then apparently fills in whatever details are required. The per-rate sp/lpack duration calculation just isn't used anywhere in the ath9k TX packet length calculations. The burst duration register controls something different; it seems to be involved with RTS/CTS protection of 11n aggregate frames and is set via a call to ar5416Set11nBurstDuration(). I've done some light testing with rts/cts protected frames and nothing seems to break; but this may break said RTS/CTS and CTS-to-self protection.
This commit is contained in:
parent
fda074e41d
commit
d39a3a978b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=218131
@ -227,7 +227,6 @@ ar5416SetupTxDesc(struct ath_hal *ah, struct ath_desc *ds,
|
||||
ads->ds_ctl0 |= (flags & HAL_TXDESC_CTSENA ? AR_CTSEnable : 0)
|
||||
| (flags & HAL_TXDESC_RTSENA ? AR_RTSEnable : 0)
|
||||
;
|
||||
ads->ds_ctl2 |= SM(rtsctsDuration, AR_BurstDur);
|
||||
ads->ds_ctl7 |= (rtsctsRate << AR_RTSCTSRate_S);
|
||||
}
|
||||
|
||||
@ -421,7 +420,6 @@ ar5416SetupFirstTxDesc(struct ath_hal *ah, struct ath_desc *ds,
|
||||
/* XXX validate rtsctsDuration */
|
||||
ads->ds_ctl0 |= (flags & HAL_TXDESC_CTSENA ? AR_CTSEnable : 0)
|
||||
| (flags & HAL_TXDESC_RTSENA ? AR_RTSEnable : 0);
|
||||
ads->ds_ctl2 |= SM(rtsctsDuration, AR_BurstDur);
|
||||
}
|
||||
|
||||
if (AR_SREV_KITE(ah)) {
|
||||
|
Loading…
Reference in New Issue
Block a user