mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
3a12c6679e
Legacy minstrel is essentially unmaintained and was showing poor performance Replace it with minstrel_ht and improve rate selection and sampling behavior Signed-off-by: Felix Fietkau <nbd@nbd.name>
32 lines
1.1 KiB
Diff
32 lines
1.1 KiB
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Sat, 26 Dec 2020 19:12:22 +0100
|
|
Subject: [PATCH] mac80211: minstrel_ht: improve sample rate selection
|
|
|
|
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>
|
|
---
|
|
|
|
--- a/net/mac80211/rc80211_minstrel_ht.c
|
|
+++ b/net/mac80211/rc80211_minstrel_ht.c
|
|
@@ -1379,13 +1379,13 @@ minstrel_get_sample_rate(struct minstrel
|
|
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];
|
|
}
|
|
|