On 2013-03-04 7:48 PM, Thomas Huehn wrote: > While minstrel bootstraps and fills the success probabilities of each > rate the lowest rate has typically a very high success probability > (often 100% in our tests). > Its statistics are never updated but considered to setup the mrr chain. > In our tests we see that especially the 3rd mrr stage (which is that > rate providing highest success probability) is filled with the lowest rate > because its initial high sucess probability is never updated. By design > the 4th mrr stage is filled with the lowest rate so often 3rd and 4th > mrr stage are equal. > > This patch follows minstrels general approach of assuming as little > as possible about rate dependencies. Consequently we include the > lowest rate into the random sampling table to get balanced up-to-date > statistics of all rates and therefore balanced decisions. > > Signed-off-by: Thomas Huehn <thomas@xxxxxxxxxxxxxxxxxxxxxxx> > --- > net/mac80211/rc80211_minstrel.c | 20 +++++++------------- > net/mac80211/rc80211_minstrel.h | 4 +++- > net/mac80211/rc80211_minstrel_ht.c | 1 - > 3 files changed, 10 insertions(+), 15 deletions(-) > > diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c > index aa59f29..aa1e81a 100644 > --- a/net/mac80211/rc80211_minstrel.c > +++ b/net/mac80211/rc80211_minstrel.c > @@ -370,26 +369,21 @@ static void > init_sample_table(struct minstrel_sta_info *mi) > { > unsigned int i, col, new_idx; > - unsigned int n_srates = mi->n_rates - 1; > u8 rnd[8]; > > mi->sample_column = 0; > mi->sample_row = 0; > - memset(mi->sample_table, 0, SAMPLE_COLUMNS * mi->n_rates); > + memset(mi->sample_table, 0xff, SAMPLE_COLUMNS * mi->n_rates); > > for (col = 0; col < SAMPLE_COLUMNS; col++) { > - for (i = 0; i < n_srates; i++) { > + for (i = 0; i < mi->n_rates; i++) { > get_random_bytes(rnd, sizeof(rnd)); > - new_idx = (i + rnd[i & 7]) % n_srates; > + new_idx = (i + rnd[i]) % mi->n_rates; Don't remove the '& 7' part, otherwise the rnd array will overflow. There's no need for it to be as big as the number of rates though. Also, there's a typo in the subject line: 'randmon'. - Felix -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html