mac80211: minstrel_ht: improve sample rate selection
authorFelix Fietkau <nbd@nbd.name>
Fri, 15 Jan 2021 12:02:39 +0000 (13:02 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 22 Jan 2021 08:11:37 +0000 (09:11 +0100)
Always allow sampling of rates faster than the primary max throughput rate.
When the second max_tp_rate is higher than the first one, sample attempts were
previously skipped, potentially causing rate control to get stuck at a slightly
lower rate

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Link: https://lore.kernel.org/r/20210115120242.89616-7-nbd@nbd.name
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rc80211_minstrel_ht.c

index 8b23768..aa71a58 100644 (file)
@@ -1379,13 +1379,13 @@ minstrel_get_sample_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi)
        mrs = &mg->rates[sample_idx];
        sample_idx += sample_group * MCS_GROUP_RATES;
 
-       /* Set tp_rate1, tp_rate2 to the highest / second highest max_tp_rate */
+       tp_rate1 = mi->max_tp_rate[0];
+
+       /* Set tp_rate2 to the second highest max_tp_rate */
        if (minstrel_get_duration(mi->max_tp_rate[0]) >
            minstrel_get_duration(mi->max_tp_rate[1])) {
-               tp_rate1 = mi->max_tp_rate[1];
                tp_rate2 = mi->max_tp_rate[0];
        } else {
-               tp_rate1 = mi->max_tp_rate[0];
                tp_rate2 = mi->max_tp_rate[1];
        }