diff options
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/332-mac80211-fix-regression-in-sta-connection-monitor.patch')
-rw-r--r-- | package/kernel/mac80211/patches/subsys/332-mac80211-fix-regression-in-sta-connection-monitor.patch | 70 |
1 files changed, 0 insertions, 70 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 deleted file mode 100644 index 93a9eca51f..0000000000 --- a/package/kernel/mac80211/patches/subsys/332-mac80211-fix-regression-in-sta-connection-monitor.patch +++ /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); - } |