aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2021-04-11 19:42:14 +0200
committerFelix Fietkau <nbd@nbd.name>2021-04-11 19:45:26 +0200
commit4ad1957eee084166a7dcdd265570c9fa2ffb1acd (patch)
treebad6f40a17510e8759f88dc4df1ea28384a3c560
parentde00033bbb8a5ef800f81e37644b723afae0fc1b (diff)
downloadupstream-4ad1957eee084166a7dcdd265570c9fa2ffb1acd.tar.gz
upstream-4ad1957eee084166a7dcdd265570c9fa2ffb1acd.tar.bz2
upstream-4ad1957eee084166a7dcdd265570c9fa2ffb1acd.zip
mac80211: add client mode connection monitor fix
Signed-off-by: Felix Fietkau <nbd@nbd.name> (cherry-picked from commit dfdb28c24aa60cf057ec45cbc11ab48ba2655f53)
-rw-r--r--package/kernel/mac80211/patches/subsys/374-mac80211-fix-time-is-after-bug-in-mlme.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/374-mac80211-fix-time-is-after-bug-in-mlme.patch b/package/kernel/mac80211/patches/subsys/374-mac80211-fix-time-is-after-bug-in-mlme.patch
new file mode 100644
index 0000000000..0573aece64
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/374-mac80211-fix-time-is-after-bug-in-mlme.patch
@@ -0,0 +1,31 @@
+From: Ben Greear <greearb@candelatech.com>
+Date: Tue, 30 Mar 2021 16:07:49 -0700
+Subject: [PATCH] mac80211: fix time-is-after bug in mlme
+
+The incorrect timeout check caused probing to happen when it did
+not need to happen. This in turn caused tx performance drop
+for around 5 seconds in ath10k-ct driver. Possibly that tx drop
+is due to a secondary issue, but fixing the probe to not happen
+when traffic is running fixes the symptom.
+
+Signed-off-by: Ben Greear <greearb@candelatech.com>
+Fixes: 9abf4e49830d ("mac80211: optimize station connection monitor")
+Acked-by: Felix Fietkau <nbd@nbd.name>
+Link: https://lore.kernel.org/r/20210330230749.14097-1-greearb@candelatech.com
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+
+--- a/net/mac80211/mlme.c
++++ b/net/mac80211/mlme.c
+@@ -4691,7 +4691,10 @@ static void ieee80211_sta_conn_mon_timer
+ timeout = sta->rx_stats.last_rx;
+ timeout += IEEE80211_CONNECTION_IDLE_TIME;
+
+- if (time_is_before_jiffies(timeout)) {
++ /* If timeout is after now, then update timer to fire at
++ * the later date, but do not actually probe at this time.
++ */
++ if (time_is_after_jiffies(timeout)) {
+ mod_timer(&ifmgd->conn_mon_timer, round_jiffies_up(timeout));
+ return;
+ }