From c7ff3cee42e9825ad478557d78dfae3607b385de Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 5 Feb 2011 22:54:37 +0000 Subject: [PATCH] Add a temporary workaround so the 11n rate scenario setup code sets a useful TX chainmask. since the upper layers don't (yet) know about the active TX/RX chainmasks, it can't tell the rate scenario functions what to use. I'll eventually sort this out; this restores functionality in the meantime. --- sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c b/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c index b3597dee2e1..945c58253a1 100644 --- a/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c +++ b/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c @@ -620,6 +620,20 @@ ar5416Set11nRateScenario(struct ath_hal *ah, struct ath_desc *ds, HALASSERT(nseries == 4); (void)nseries; + /* + * XXX since the upper layers doesn't know the current chainmask + * XXX setup, just override its decisions here. + * XXX The upper layers need to be taught this! + */ + if (series[0].Tries != 0) + series[0].ChSel = AH5416(ah)->ah_tx_chainmask; + if (series[1].Tries != 0) + series[1].ChSel = AH5416(ah)->ah_tx_chainmask; + if (series[2].Tries != 0) + series[2].ChSel = AH5416(ah)->ah_tx_chainmask; + if (series[3].Tries != 0) + series[3].ChSel = AH5416(ah)->ah_tx_chainmask; + /* * Only one of RTS and CTS enable must be set. * If a frame has both set, just do RTS protection - @@ -642,7 +656,6 @@ ar5416Set11nRateScenario(struct ath_hal *ah, struct ath_desc *ds, (ads->ds_ctl0 & ~(AR_RTSEnable | AR_CTSEnable)); } - ads->ds_ctl2 = set11nTries(series, 0) | set11nTries(series, 1) | set11nTries(series, 2)