correct fixed rate handling; the rixmap was changed a while back

to be indexed by the ieee rate code
This commit is contained in:
Sam Leffler 2009-01-07 23:30:26 +00:00
parent 7ee3780799
commit 5f82a460f8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=186879

View File

@ -754,23 +754,18 @@ ath_rate_ctl_reset(struct ath_softc *sc, struct ieee80211_node *ni)
sn->static_rix = -1;
if (tp != NULL && tp->ucastrate != IEEE80211_FIXED_RATE_NONE) {
/*
* A fixed rate is to be used; ic_fixed_rate is the
* IEEE code for this rate (sans basic bit). Convert this
* to the index into the negotiated rate set for
* the node.
* A fixed rate is to be used; ucastrate is the IEEE code
* for this rate (sans basic bit). Check this against the
* negotiated rate set for the node. Note the fixed rate
* may not be available for various reasons so we only
* setup the static rate index if the lookup is successful.
* XXX handle MCS
*/
/* NB: the rate set is assumed sorted */
srate = ni->ni_rates.rs_nrates - 1;
for (; srate >= 0 && RATE(srate) != tp->ucastrate; srate--)
;
/*
* The fixed rate may not be available due to races
* and mode settings. Also orphaned nodes created in
* adhoc mode may not have any rate set so this lookup
* can fail.
*/
if (srate >= 0)
sn->static_rix = sc->sc_rixmap[srate];
for (srate = ni->ni_rates.rs_nrates - 1; srate >= 0; srate--)
if (RATE(srate) == tp->ucastrate) {
sn->static_rix = sc->sc_rixmap[tp->ucastrate];
break;
}
}
/*