"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.

The best thing to do is read the paper. Sorry!

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!

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.

TBD!

  • dev/ath_rate_sample_4.txt
  • Last modified: 2012/09/08 22:47
  • by AdrianChadd