Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== "sample" rate control module ====== This is an implementation of John Bickett's paper. The sample rate control module does a few things different to onoe and amrr. It doesn't simply bump the transmission rate up or down. The thirty second overview: * It "samples" all of the rates, both CCK and OFDM; * It calculates an average TX time based on the packet error rate and the perfect (ie, 0 error) TX time; * It picks the highest rate which minimises average TX time. ===== Legacy (pre-802.11n) behaviour ===== The best thing to do is read the paper. Sorry! ===== Adrian's modifications for 802.11n ===== In order to make ath_rate_sample work ('good enough for testing') for 802.11n, Adrian made a few changes: * The MCS rates (1, 2, 3 stream) needed to be added to the TX schedule tables; * .. and MCS aware packet length calculations were added; * A lot of the packet counters became 64 bits rather than 32 bits, as the 32 bit counters could wrap after a few hours; * The ath_rate API for TX completion was extended to include aggregate information - specifically the number of frames in the aggregate and the number of failures. (From this the "number of good" frames can be determined); * A weighted average (EWMA) is kept for each of the TX rates; * The average TX time is calculated based on the EWMA rather than the total error rate; * Since 2 stream rates have a slightly higher TX time than 1 stream rates, add a fudge in pick_best_rate() which gives a little leeway for this. There are likely quite a few other changes which haven't been listed here - look at the SVN history! ===== What doesn't work well right now ===== Although this works, it can be much, much better! * The default parameters (EWMA smoothing rate = 95%) is not optimal - bursty failures will force the EWMA to drop quickly but sampling doesn't bump up the EWMA very quickly. So it can take many minutes of sampling to allow a higher rate to become OK again. * .. and it's quite possible that the smoothing rate should be per-node and dynamic - ie, try to find a way to let the EWMA recover (much) quicker from the sampling. ===== Where to go from here ===== TBD! ===== References ===== * http://svnweb.freebsd.org/base/head/sys/dev/ath/ath_rate/sample/ * http://dspace.mit.edu/handle/1721.1/34116 * http://pdos.csail.mit.edu/papers/jbicket-ms.pdf dev/ath_rate_sample_4.txt Last modified: 2012/09/08 22:47by AdrianChadd