diff options
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/334-mac80211-minstrel-remove-deferred-sampling-code.patch')
-rw-r--r-- | package/kernel/mac80211/patches/subsys/334-mac80211-minstrel-remove-deferred-sampling-code.patch | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/package/kernel/mac80211/patches/subsys/334-mac80211-minstrel-remove-deferred-sampling-code.patch b/package/kernel/mac80211/patches/subsys/334-mac80211-minstrel-remove-deferred-sampling-code.patch deleted file mode 100644 index e3a877fb94..0000000000 --- a/package/kernel/mac80211/patches/subsys/334-mac80211-minstrel-remove-deferred-sampling-code.patch +++ /dev/null @@ -1,96 +0,0 @@ -From: Felix Fietkau <nbd@nbd.name> -Date: Wed, 11 Nov 2020 19:17:44 +0100 -Subject: [PATCH] mac80211: minstrel: remove deferred sampling code - -Deferring sampling attempts to the second stage has some bad interactions -with drivers that process the rate table in hardware and use the probe flag -to indicate probing packets (e.g. most mt76 drivers). On affected drivers -it can lead to probing not working at all. - -If the link conditions turn worse, it might not be such a good idea to -do a lot of sampling for lower rates in this case. - -Fix this by simply skipping the sample attempt instead of deferring it, -but keep the checks that would allow it to be sampled if it was skipped -too often, but only if it has less than 95% success probability. - -Also ensure that IEEE80211_TX_CTL_RATE_CTRL_PROBE is set for all probing -packets. - -Cc: stable@vger.kernel.org -Fixes: cccf129f820e ("mac80211: add the 'minstrel' rate control algorithm") -Signed-off-by: Felix Fietkau <nbd@nbd.name> ---- - ---- a/net/mac80211/rc80211_minstrel.c -+++ b/net/mac80211/rc80211_minstrel.c -@@ -287,12 +287,6 @@ minstrel_tx_status(void *priv, struct ie - mi->r[ndx].stats.success += success; - } - -- if ((info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) && (i >= 0)) -- mi->sample_packets++; -- -- if (mi->sample_deferred > 0) -- mi->sample_deferred--; -- - if (time_after(jiffies, mi->last_stats_update + - mp->update_interval / (mp->new_avg ? 2 : 1))) - minstrel_update_stats(mp, mi); -@@ -367,7 +361,7 @@ minstrel_get_rate(void *priv, struct iee - return; - - delta = (mi->total_packets * sampling_ratio / 100) - -- (mi->sample_packets + mi->sample_deferred / 2); -+ mi->sample_packets; - - /* delta < 0: no sampling required */ - prev_sample = mi->prev_sample; -@@ -376,7 +370,6 @@ minstrel_get_rate(void *priv, struct iee - return; - - if (mi->total_packets >= 10000) { -- mi->sample_deferred = 0; - mi->sample_packets = 0; - mi->total_packets = 0; - } else if (delta > mi->n_rates * 2) { -@@ -401,19 +394,8 @@ minstrel_get_rate(void *priv, struct iee - * rate sampling method should be used. - * Respect such rates that are not sampled for 20 interations. - */ -- if (mrr_capable && -- msr->perfect_tx_time > mr->perfect_tx_time && -- msr->stats.sample_skipped < 20) { -- /* Only use IEEE80211_TX_CTL_RATE_CTRL_PROBE to mark -- * packets that have the sampling rate deferred to the -- * second MRR stage. Increase the sample counter only -- * if the deferred sample rate was actually used. -- * Use the sample_deferred counter to make sure that -- * the sampling is not done in large bursts */ -- info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; -- rate++; -- mi->sample_deferred++; -- } else { -+ if (msr->perfect_tx_time < mr->perfect_tx_time || -+ msr->stats.sample_skipped >= 20) { - if (!msr->sample_limit) - return; - -@@ -433,6 +415,7 @@ minstrel_get_rate(void *priv, struct iee - - rate->idx = mi->r[ndx].rix; - rate->count = minstrel_get_retry_count(&mi->r[ndx], info); -+ info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE; - } - - ---- a/net/mac80211/rc80211_minstrel.h -+++ b/net/mac80211/rc80211_minstrel.h -@@ -126,7 +126,6 @@ struct minstrel_sta_info { - u8 max_prob_rate; - unsigned int total_packets; - unsigned int sample_packets; -- int sample_deferred; - - unsigned int sample_row; - unsigned int sample_column; |