Commit 3e8b1eb2 authored by Felix Fietkau's avatar Felix Fietkau Committed by Johannes Berg

mac80211/minstrel_ht: improve rate selection stability

Under load, otherwise stable rates can easily fluctuate because of
collisions. In my tests on a clean channel, the success probability of
the max throughput rate often stays somewhere between 90% and 100% under
load. This can cause some unnecessary switching to lower rates.
This patch improves stability by treating success probability values
between 90% and 100% the same.
In my tests on a 3x3 HT20 link with lots of TCP traffic, it improves the
average throughput by a few mbit/s.
Signed-off-by: default avatarFelix Fietkau <>
Signed-off-by: default avatarJohannes Berg <>
parent d260ff12
......@@ -202,14 +202,23 @@ minstrel_ht_calc_tp(struct minstrel_ht_sta *mi, int group, int rate)
struct minstrel_rate_stats *mr;
unsigned int nsecs = 0;
unsigned int tp;
unsigned int prob;
mr = &mi->groups[group].rates[rate];
prob = mr->probability;
if (mr->probability < MINSTREL_FRAC(1, 10)) {
if (prob < MINSTREL_FRAC(1, 10)) {
mr->cur_tp = 0;
* For the throughput calculation, limit the probability value to 90% to
* account for collision related packet error rate fluctuation
if (prob > MINSTREL_FRAC(9, 10))
prob = MINSTREL_FRAC(9, 10);
if (group != MINSTREL_CCK_GROUP)
nsecs = 1000 * mi->overhead / MINSTREL_TRUNC(mi->avg_ampdu_len);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment