mac80211: update to linux 6.1-rc8
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / subsys / 317-v5.17-cfg80211-schedule-offchan_cac_abort_wk-in-cfg80211_r.patch
diff --git a/package/kernel/mac80211/patches/subsys/317-v5.17-cfg80211-schedule-offchan_cac_abort_wk-in-cfg80211_r.patch b/package/kernel/mac80211/patches/subsys/317-v5.17-cfg80211-schedule-offchan_cac_abort_wk-in-cfg80211_r.patch
deleted file mode 100644 (file)
index df7afef..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-From: Lorenzo Bianconi <lorenzo@kernel.org>
-Date: Tue, 16 Nov 2021 12:41:52 +0100
-Subject: [PATCH] cfg80211: schedule offchan_cac_abort_wk in
- cfg80211_radar_event
-
-If necessary schedule offchan_cac_abort_wk work in cfg80211_radar_event
-routine adding offchan parameter to cfg80211_radar_event signature.
-Rename cfg80211_radar_event in __cfg80211_radar_event and introduce
-the two following inline helpers:
-- cfg80211_radar_event
-- cfg80211_offchan_radar_event
-Doing so the drv will not need to run cfg80211_offchan_cac_abort() after
-radar detection on the offchannel chain.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
-Link: https://lore.kernel.org/r/3ff583e021e3343a3ced54a7b09b5e184d1880dc.1637062727.git.lorenzo@kernel.org
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
-
---- a/include/net/cfg80211.h
-+++ b/include/net/cfg80211.h
-@@ -7580,15 +7580,33 @@ void cfg80211_cqm_txe_notify(struct net_
- void cfg80211_cqm_beacon_loss_notify(struct net_device *dev, gfp_t gfp);
- /**
-- * cfg80211_radar_event - radar detection event
-+ * __cfg80211_radar_event - radar detection event
-  * @wiphy: the wiphy
-  * @chandef: chandef for the current channel
-+ * @offchan: the radar has been detected on the offchannel chain
-  * @gfp: context flags
-  *
-  * This function is called when a radar is detected on the current chanenl.
-  */
--void cfg80211_radar_event(struct wiphy *wiphy,
--                        struct cfg80211_chan_def *chandef, gfp_t gfp);
-+void __cfg80211_radar_event(struct wiphy *wiphy,
-+                          struct cfg80211_chan_def *chandef,
-+                          bool offchan, gfp_t gfp);
-+
-+static inline void
-+cfg80211_radar_event(struct wiphy *wiphy,
-+                   struct cfg80211_chan_def *chandef,
-+                   gfp_t gfp)
-+{
-+      __cfg80211_radar_event(wiphy, chandef, false, gfp);
-+}
-+
-+static inline void
-+cfg80211_offchan_radar_event(struct wiphy *wiphy,
-+                           struct cfg80211_chan_def *chandef,
-+                           gfp_t gfp)
-+{
-+      __cfg80211_radar_event(wiphy, chandef, true, gfp);
-+}
- /**
-  * cfg80211_sta_opmode_change_notify - STA's ht/vht operation mode change event
---- a/net/wireless/mlme.c
-+++ b/net/wireless/mlme.c
-@@ -905,13 +905,13 @@ void cfg80211_dfs_channels_update_work(s
- }
--void cfg80211_radar_event(struct wiphy *wiphy,
--                        struct cfg80211_chan_def *chandef,
--                        gfp_t gfp)
-+void __cfg80211_radar_event(struct wiphy *wiphy,
-+                          struct cfg80211_chan_def *chandef,
-+                          bool offchan, gfp_t gfp)
- {
-       struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
--      trace_cfg80211_radar_event(wiphy, chandef);
-+      trace_cfg80211_radar_event(wiphy, chandef, offchan);
-       /* only set the chandef supplied channel to unavailable, in
-        * case the radar is detected on only one of multiple channels
-@@ -919,6 +919,9 @@ void cfg80211_radar_event(struct wiphy *
-        */
-       cfg80211_set_dfs_state(wiphy, chandef, NL80211_DFS_UNAVAILABLE);
-+      if (offchan)
-+              queue_work(cfg80211_wq, &rdev->offchan_cac_abort_wk);
-+
-       cfg80211_sched_dfs_chan_update(rdev);
-       nl80211_radar_notify(rdev, chandef, NL80211_RADAR_DETECTED, NULL, gfp);
-@@ -926,7 +929,7 @@ void cfg80211_radar_event(struct wiphy *
-       memcpy(&rdev->radar_chandef, chandef, sizeof(struct cfg80211_chan_def));
-       queue_work(cfg80211_wq, &rdev->propagate_radar_detect_wk);
- }
--EXPORT_SYMBOL(cfg80211_radar_event);
-+EXPORT_SYMBOL(__cfg80211_radar_event);
- void cfg80211_cac_event(struct net_device *netdev,
-                       const struct cfg80211_chan_def *chandef,
-@@ -998,7 +1001,8 @@ __cfg80211_offchan_cac_event(struct cfg8
-               rdev->offchan_radar_wdev = NULL;
-               break;
-       case NL80211_RADAR_CAC_ABORTED:
--              cancel_delayed_work(&rdev->offchan_cac_done_wk);
-+              if (!cancel_delayed_work(&rdev->offchan_cac_done_wk))
-+                      return;
-               wdev = rdev->offchan_radar_wdev;
-               rdev->offchan_radar_wdev = NULL;
-               break;
---- a/net/wireless/trace.h
-+++ b/net/wireless/trace.h
-@@ -3022,18 +3022,21 @@ TRACE_EVENT(cfg80211_ch_switch_started_n
- );
- TRACE_EVENT(cfg80211_radar_event,
--      TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef),
--      TP_ARGS(wiphy, chandef),
-+      TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef,
-+               bool offchan),
-+      TP_ARGS(wiphy, chandef, offchan),
-       TP_STRUCT__entry(
-               WIPHY_ENTRY
-               CHAN_DEF_ENTRY
-+              __field(bool, offchan)
-       ),
-       TP_fast_assign(
-               WIPHY_ASSIGN;
-               CHAN_DEF_ASSIGN(chandef);
-+              __entry->offchan = offchan;
-       ),
--      TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT,
--                WIPHY_PR_ARG, CHAN_DEF_PR_ARG)
-+      TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT ", offchan %d",
-+                WIPHY_PR_ARG, CHAN_DEF_PR_ARG, __entry->offchan)
- );
- TRACE_EVENT(cfg80211_cac_event,