Add RA, a new 11n Tx rate adaptation module for net80211.
authorstsp <stsp@openbsd.org>
Fri, 12 Mar 2021 16:26:27 +0000 (16:26 +0000)
committerstsp <stsp@openbsd.org>
Fri, 12 Mar 2021 16:26:27 +0000 (16:26 +0000)
commit7611cb38512c61cc20d6799ca9f13cb7524a33a6
treee742bc3f11473c4594aabab9db33ee6fcc387836
parente8085cf369534cbe18980f85f87ade79cbb383f4
Add RA, a new 11n Tx rate adaptation module for net80211.

Written by Christian Ehrhardt and myself, based on ieee80211_mira.c
but with significant changes.

The main difference is that RA does not attempt to precisely measure
actual throughput but simply deducts a loss percentage from the
theoretical throughput which can be achieved by a given MCS.

Unlike MiRa, RA does not use timeouts to trigger probing.
Probing is triggered only by changes in measured throughput.

Unlike MiRA, RA doesn't care whether a frame was part of an A-MPDU.
RA simply collects statistics for individual subframes. This makes reporting
very easy for drivers and seems to work well enough in practice.

Another difference is that drivers can report multi-rate retries properly
via ieee80211_ra_add_stats_ht(mcs, total, fail) which can be called
several times before ieee80211_ra_choose() selects a new Tx rate.

There is no reason any issues could not be fixed in ieee8011_mira.c but
I felt it was a good moment to burn the house down and start over.
And since this code diverges from how MiRA is described in the research
paper applying the "MiRA" label becomes inappropriate.
sys/conf/files
sys/net80211/ieee80211_ra.c [new file with mode: 0644]
sys/net80211/ieee80211_ra.h [new file with mode: 0644]