aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/subsys/334-mac80211-minstrel-remove-deferred-sampling-code.patch
diff options
context:
space:
mode:
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.patch96
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;