summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2011-01-31 15:42:42 +0000
committeradrian <adrian@FreeBSD.org>2011-01-31 15:42:42 +0000
commit7fba0650585e47cf4e320dd6e702355f99a33bd5 (patch)
tree4264e302e29f31977935a40a060a862650e5d5ca
parent2131e1901390a6c52fb5f11784f08408f89b04fc (diff)
downloadFreeBSD-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.c2
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)) {
OpenPOWER on IntegriCloud