diff options
author | adrian <adrian@FreeBSD.org> | 2011-01-31 15:42:42 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2011-01-31 15:42:42 +0000 |
commit | 7fba0650585e47cf4e320dd6e702355f99a33bd5 (patch) | |
tree | 4264e302e29f31977935a40a060a862650e5d5ca | |
parent | 2131e1901390a6c52fb5f11784f08408f89b04fc (diff) | |
download | FreeBSD-src-7fba0650585e47cf4e320dd6e702355f99a33bd5.zip FreeBSD-src-7fba0650585e47cf4e320dd6e702355f99a33bd5.tar.gz |
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.
-rw-r--r-- | sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c b/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c index af3d1d9..24e7bcf 100644 --- a/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c +++ b/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c @@ -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)) { |