mac80211: Update to version 5.10-rc6-1
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / subsys / 332-mac80211-fix-regression-in-sta-connection-monitor.patch
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
deleted file mode 100644 (file)
index 93a9eca..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-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 a frame was acked and probe frames were sent, the connection monitoring
-needs to be reset, otherwise it will keep probing until the connection is
-considered dead, even though frames have been acked in the mean time.
-
-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/status.c
-+++ b/net/mac80211/status.c
-@@ -989,10 +989,6 @@ static void __ieee80211_tx_status(struct
-               if (!(info->flags & IEEE80211_TX_CTL_INJECTED) && acked)
-                       ieee80211_frame_acked(sta, skb);
--              if ((sta->sdata->vif.type == NL80211_IFTYPE_STATION) &&
--                  ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
--                      ieee80211_sta_tx_notify(sta->sdata, (void *) skb->data,
--                                              acked, info->status.tx_time);
-       }
-       /* SNMP counters
-@@ -1127,11 +1123,18 @@ void ieee80211_tx_status_ext(struct ieee
-       noack_success = !!(info->flags & IEEE80211_TX_STAT_NOACK_TRANSMITTED);
-       if (pubsta) {
-+              struct ieee80211_sub_if_data *sdata = sta->sdata;
-+
-               if (!acked && !noack_success)
-                       sta->status_stats.retry_failed++;
-               sta->status_stats.retry_count += retry_count;
-               if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) {
-+                      if (sdata->vif.type == NL80211_IFTYPE_STATION &&
-+                          skb && !(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP))
-+                              ieee80211_sta_tx_notify(sdata, (void *) skb->data,
-+                                                      acked, info->status.tx_time);
-+
-                       if (acked) {
-                               sta->status_stats.last_ack = jiffies;
-@@ -1141,6 +1144,11 @@ void ieee80211_tx_status_ext(struct ieee
-                               /* Track when last packet was ACKed */
-                               sta->status_stats.last_pkt_time = jiffies;
-+                              /* Reset connection monitor */
-+                              if (sdata->vif.type == NL80211_IFTYPE_STATION &&
-+                                  unlikely(sdata->u.mgd.probe_send_count > 0))
-+                                      sdata->u.mgd.probe_send_count = 0;
-+
-                               if (info->status.is_valid_ack_signal) {
-                                       sta->status_stats.last_ack_signal =
-                                                        (s8)info->status.ack_signal;
---- 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);
- }