Fix a few bugs in the net80211 VHT rate adaptation code.
authorstsp <stsp@openbsd.org>
Wed, 23 Mar 2022 09:21:47 +0000 (09:21 +0000)
committerstsp <stsp@openbsd.org>
Wed, 23 Mar 2022 09:21:47 +0000 (09:21 +0000)
commitd9a0b74bed8ceb54a18883ae157f40e34ea929a7
treec5a98de476da9fbc93e8d16c2c2131ae42e4f5f4
parent2426d74d418a97fac09c93fbca3cf132d12cec4d
Fix a few bugs in the net80211 VHT rate adaptation code.

Actually set rn->best_nss after deciding on a new best rate.
We are now switching between SISO and MIMO rates as intended.

When switching between ratesets, avoid switching directly to the highest
rate in the new rateset, which might be MCS 9 and not work at all from a
distance. Instead, use the most recently determined best rate in the set.

The bit which corresponds to the current best MS will not be set in the
rn->probed_rates[] array while we are probing an MCS other than the best.
Checking for this bit was simply wrong and prevented us from probing the
next rateset unless we managed to successfully probe up all the way
to the highest MCS in the current set.

Also fix errors in debug output.

Tested by bket, florian, Uwe Werler, and myself.

ok bket@
sys/net80211/ieee80211_ra_vht.c