--- a/net/mac80211/rc80211_minstrel_ht.h +++ b/net/mac80211/rc80211_minstrel_ht.h @@ -103,6 +103,7 @@ struct minstrel_ht_sta { u8 sample_tries; u8 sample_count; u8 sample_slow; + u8 sample_retry; /* current MCS group to be sampled */ u8 sample_group; --- a/net/mac80211/rc80211_minstrel_ht.c +++ b/net/mac80211/rc80211_minstrel_ht.c @@ -261,6 +261,7 @@ minstrel_ht_update_stats(struct minstrel /* try to sample up to half of the availble rates during each interval */ mi->sample_count *= 4; + mi->sample_retry = mi->sample_count; cur_prob = 0; cur_prob_tp = 0; @@ -572,6 +573,11 @@ minstrel_get_sample_rate(struct minstrel return sample_idx; next: + if (mi->sample_retry > 0) { + mi->sample_retry--; + mi->sample_tries++; + mi->sample_wait = 1; + } minstrel_next_sample_idx(mi); return -1; }