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.
This commit is contained in:
Adrian Chadd 2011-02-05 22:54:37 +00:00
parent 8bcbc83bdf
commit c7ff3cee42

View file

@ -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)