CVSROOT: /cvs Module name: src Changes by: s...@cvs.openbsd.org 2016/11/30 04:38:26
Added files: sys/net80211 : ieee80211_mira.c ieee80211_mira.h Log message: Add a new implementation of MiRA, a rate scaling algorithm for 802.11n. This algorithm was designed for use with MIMO and Tx aggregation. This is joint work with tb@, who helped with all the tricky math bits. Additional help with testing by phessler@, mpi@, and jmatthew@. I believe this is now ready for wider testing, and for future work to happen in-tree. A paper which explains the algorithm can be found at: http://www.cs.ucla.edu/wing/publication/papers/Pefkianakis.MOBICOM10.pdf Roughly, this algorithm attempts to keep track of the current "goodput" (the effective data rate) for each MCS. It converges towards a rate which gets the most bits per second transmitted with least loss. Occasionally, frames will be steered to different rates to probe for changes. (The algorithm does not send frames on its own. It only advances whenever the driver has sent a frame.) Time-based probing to adjacent MCS rates occurs periodically. This is similar to what AMRR does, except that eventually mira will try out multi-antenna modes as well. Event-based probing happens when a sudden change in goodput is detected. I've chosen to make downwards probing fast, and upwards probing slow. (The paper does not specify such a preference.) This means it should react quickly to worsening conditions and pull the rate down (perhaps to the lowest possible rate). It should then raise upwards slowly on a rate-per-rate basis as conditions improve again. In my testing this works as intended as I keep moving a laptop outside and inside the AP's range. Not linked to the build yet. ok mpi@ kettenis@