]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: cfg80211: events, report background radar
authorJanusz Dziedzic <janusz.dziedzic@gmail.com>
Fri, 6 Feb 2026 17:15:50 +0000 (18:15 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 2 Mar 2026 08:10:28 +0000 (09:10 +0100)
In case we report radar event add also information
this is connected with background one, so user mode
application like hostapd, could check it and behave
correctly.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
Link: https://patch.msgid.link/20260206171830.553879-4-janusz.dziedzic@gmail.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/mlme.c
net/wireless/nl80211.c

index 283ea4c7c61eb0fd37c49f7a9a3949116695fbbf..5cd86253a62ecb298c93c15ad9d24c18b61cb897 100644 (file)
@@ -1226,11 +1226,12 @@ void cfg80211_background_cac_done_wk(struct work_struct *work)
        guard(wiphy)(&rdev->wiphy);
 
        rdev_set_radar_background(rdev, NULL);
-       rdev->background_radar_wdev = NULL;
 
        __cfg80211_background_cac_event(rdev, rdev->background_radar_wdev,
                                        &rdev->background_radar_chandef,
                                        NL80211_RADAR_CAC_FINISHED);
+
+       rdev->background_radar_wdev = NULL;
 }
 
 void cfg80211_background_cac_abort_wk(struct work_struct *work)
@@ -1330,11 +1331,12 @@ void cfg80211_stop_background_radar_detection(struct wireless_dev *wdev)
                return;
 
        rdev_set_radar_background(rdev, NULL);
-       rdev->background_radar_wdev = NULL; /* Release offchain ownership */
 
        __cfg80211_background_cac_event(rdev, wdev,
                                        &rdev->background_radar_chandef,
                                        NL80211_RADAR_CAC_ABORTED);
+
+       rdev->background_radar_wdev = NULL;
 }
 
 int cfg80211_assoc_ml_reconf(struct cfg80211_registered_device *rdev,
index 7e288d3ce5aee58b9d9aaac29d785813f77720cf..b619f99c221efa4839caa6fbed64e0e91815e6d9 100644 (file)
@@ -21229,6 +21229,13 @@ nl80211_radar_notify(struct cfg80211_registered_device *rdev,
                        goto nla_put_failure;
        }
 
+       if (rdev->background_radar_wdev &&
+           cfg80211_chandef_identical(&rdev->background_radar_chandef,
+                                      chandef)) {
+               if (nla_put_flag(msg, NL80211_ATTR_RADAR_BACKGROUND))
+                       goto nla_put_failure;
+       }
+
        if (nla_put_u32(msg, NL80211_ATTR_RADAR_EVENT, event))
                goto nla_put_failure;