wifi: mac80211: Cleanup sta TXQs on flush
authorAlexander Wetzel <Alexander@wetzel-home.de>
Tue, 4 Feb 2025 12:31:29 +0000 (13:31 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 11 Feb 2025 11:40:18 +0000 (12:40 +0100)
Drop the sta TXQs on flush when the drivers is not supporting
flush.

ieee80211_set_disassoc() tries to clean up everything for the sta.
But it ignored queued frames in the sta TX queues when the driver
isn't supporting the flush driver ops.

Signed-off-by: Alexander Wetzel <Alexander@wetzel-home.de>
Link: https://patch.msgid.link/20250204123129.9162-1-Alexander@wetzel-home.de
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/util.c

index f6b631faf4f7f99309466ec3b1d52f7a7acf450e..7f02bd5891eb94645dd8efedce130086916690d2 100644 (file)
@@ -687,7 +687,7 @@ void __ieee80211_flush_queues(struct ieee80211_local *local,
                              struct ieee80211_sub_if_data *sdata,
                              unsigned int queues, bool drop)
 {
-       if (!local->ops->flush)
+       if (!local->ops->flush && !drop)
                return;
 
        /*
@@ -714,7 +714,8 @@ void __ieee80211_flush_queues(struct ieee80211_local *local,
                }
        }
 
-       drv_flush(local, sdata, queues, drop);
+       if (local->ops->flush)
+               drv_flush(local, sdata, queues, drop);
 
        ieee80211_wake_queues_by_reason(&local->hw, queues,
                                        IEEE80211_QUEUE_STOP_REASON_FLUSH,