aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2020-09-21 17:56:04 +0200
committerFelix Fietkau <nbd@nbd.name>2020-09-21 17:56:31 +0200
commit1c6d45644a54e50b6445bbc63eff1ae34b2f1e2e (patch)
treed5754acb08b78d48ee135683d15382c14af4b1e3
parent90853439a162d7c5389f6a68028b4390c349c04d (diff)
downloadupstream-1c6d45644a54e50b6445bbc63eff1ae34b2f1e2e.tar.gz
upstream-1c6d45644a54e50b6445bbc63eff1ae34b2f1e2e.tar.bz2
upstream-1c6d45644a54e50b6445bbc63eff1ae34b2f1e2e.zip
mac80211: fix regression in station connection monitor optimization
When the nulldata frame was acked, the probe send count needs to be reset, otherwise it will keep increasing until the connection is considered dead, even though it fine. Reported-by: Georgi Valkov <gvalkov@abv.bg> Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--package/kernel/mac80211/patches/subsys/332-mac80211-fix-regression-in-sta-connection-monitor.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/332-mac80211-fix-regression-in-sta-connection-monitor.patch b/package/kernel/mac80211/patches/subsys/332-mac80211-fix-regression-in-sta-connection-monitor.patch
new file mode 100644
index 0000000000..787883e217
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/332-mac80211-fix-regression-in-sta-connection-monitor.patch
@@ -0,0 +1,26 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Mon, 21 Sep 2020 17:43:06 +0200
+Subject: [PATCH] mac80211: fix regression in sta connection monitor
+
+When the nulldata frame was acked, the probe send count needs to be reset,
+otherwise it will keep increasing until the connection is considered dead,
+even though it fine.
+
+Fixes: 9abf4e49830d ("mac80211: optimize station connection monitor")
+Reported-by: Georgi Valkov <gvalkov@abv.bg>
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/net/mac80211/mlme.c
++++ b/net/mac80211/mlme.c
+@@ -2508,7 +2508,9 @@ void ieee80211_sta_tx_notify(struct ieee
+ !sdata->u.mgd.probe_send_count)
+ return;
+
+- if (!ack)
++ if (ack)
++ sdata->u.mgd.probe_send_count = 0;
++ else
+ sdata->u.mgd.nullfunc_failed = true;
+ ieee80211_queue_work(&sdata->local->hw, &sdata->work);
+ }