[][MAC80211][hostapd][Remove merged upstream patches]
[Description]
Remove merged upstream patches.
Already included in hostapd-2022-05-08-b859b9bc
[Release-log]
N/A
Change-Id: I09520918cf868c108ee79642f0b1f9abc9d5116a
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6089588
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/800-DFS-Introduce-dfs_set_valid_channel-utility-routine.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/800-DFS-Introduce-dfs_set_valid_channel-utility-routine.patch
deleted file mode 100644
index 5edd2d1..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/800-DFS-Introduce-dfs_set_valid_channel-utility-routine.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 3ebfdca86d2d4e45d8c72239819086e244cbd4f2 Mon Sep 17 00:00:00 2001
-From: Lorenzo Bianconi <lorenzo@kernel.org>
-Date: Mon, 20 Dec 2021 16:48:17 +0100
-Subject: [PATCH 900/911] DFS: Introduce dfs_set_valid_channel() utility
- routine
-
-This is a preliminary change to introduce radar/CAC background detection
-support.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/ap/dfs.c | 38 ++++++++++++++++++++++++--------------
- 1 file changed, 24 insertions(+), 14 deletions(-)
-
-diff --git a/src/ap/dfs.c b/src/ap/dfs.c
-index 53a50653b..09b2bb7d4 100644
---- a/src/ap/dfs.c
-+++ b/src/ap/dfs.c
-@@ -586,6 +586,29 @@ dfs_get_valid_channel(struct hostapd_iface *iface,
- }
-
-
-+static int dfs_set_valid_channel(struct hostapd_iface *iface, int skip_radar)
-+{
-+ struct hostapd_channel_data *channel;
-+ u8 cf1 = 0, cf2 = 0;
-+ int sec = 0;
-+
-+ channel = dfs_get_valid_channel(iface, &sec, &cf1, &cf2,
-+ skip_radar);
-+ if (!channel) {
-+ wpa_printf(MSG_ERROR, "could not get valid channel");
-+ return -1;
-+ }
-+
-+ iface->freq = channel->freq;
-+ iface->conf->channel = channel->chan;
-+ iface->conf->secondary_channel = sec;
-+ hostapd_set_oper_centr_freq_seg0_idx(iface->conf, cf1);
-+ hostapd_set_oper_centr_freq_seg1_idx(iface->conf, cf2);
-+
-+ return 0;
-+}
-+
-+
- static int set_dfs_state_freq(struct hostapd_iface *iface, int freq, u32 state)
- {
- struct hostapd_hw_modes *mode;
-@@ -773,7 +796,6 @@ static unsigned int dfs_get_cac_time(struct hostapd_iface *iface,
- */
- int hostapd_handle_dfs(struct hostapd_iface *iface)
- {
-- struct hostapd_channel_data *channel;
- int res, n_chans, n_chans1, start_chan_idx, start_chan_idx1;
- int skip_radar = 0;
-
-@@ -828,22 +850,10 @@ int hostapd_handle_dfs(struct hostapd_iface *iface)
- wpa_printf(MSG_DEBUG, "DFS %d chans unavailable - choose other channel: %s",
- res, res ? "yes": "no");
- if (res) {
-- int sec = 0;
-- u8 cf1 = 0, cf2 = 0;
--
-- channel = dfs_get_valid_channel(iface, &sec, &cf1, &cf2,
-- skip_radar);
-- if (!channel) {
-- wpa_printf(MSG_ERROR, "could not get valid channel");
-+ if (dfs_set_valid_channel(iface, skip_radar) < 0) {
- hostapd_set_state(iface, HAPD_IFACE_DFS);
- return 0;
- }
--
-- iface->freq = channel->freq;
-- iface->conf->channel = channel->chan;
-- iface->conf->secondary_channel = sec;
-- hostapd_set_oper_centr_freq_seg0_idx(iface->conf, cf1);
-- hostapd_set_oper_centr_freq_seg1_idx(iface->conf, cf2);
- }
- } while (res);
-
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/801-DFS-Add-capability-to-select-radar-only-channels.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/801-DFS-Add-capability-to-select-radar-only-channels.patch
deleted file mode 100644
index 22300fa..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/801-DFS-Add-capability-to-select-radar-only-channels.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-From 119b1e4f41d2b983150f5f0cb6dcb2c060c6c3c8 Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:13:20 +0800
-Subject: [PATCH 901/911] DFS: Add capability to select radar-only channels
-
-Introduce type parameter to dfs_get_valid_channel() routine to allow
-selection of a radar-only channel where the CAC detection has not been
-performed yet. This is a preliminary patch to enable background
-radar/CAC detection.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/ap/dfs.c | 50 ++++++++++++++++++++++++++++++++++++--------------
- 1 file changed, 36 insertions(+), 14 deletions(-)
-
-diff --git a/src/ap/dfs.c b/src/ap/dfs.c
-index 09b2bb7d4..56564b901 100644
---- a/src/ap/dfs.c
-+++ b/src/ap/dfs.c
-@@ -52,15 +52,33 @@ static int dfs_get_used_n_chans(struct hostapd_iface *iface, int *seg1)
- }
-
-
-+enum dfs_channel_type {
-+ DFS_ANY_CHANNEL,
-+ DFS_AVAILABLE, /* non-radar or radar-available */
-+ DFS_NO_CAC_YET, /* radar-not-yet-available */
-+};
-+
-+/* dfs_channel_available: select new channel according to type parameter */
- static int dfs_channel_available(struct hostapd_channel_data *chan,
-- int skip_radar)
-+ enum dfs_channel_type type)
- {
-+ if (type == DFS_NO_CAC_YET) {
-+ /* Select only radar channel where CAC has not been
-+ * performed yet
-+ */
-+ if ((chan->flag & HOSTAPD_CHAN_RADAR) &&
-+ (chan->flag & HOSTAPD_CHAN_DFS_MASK) ==
-+ HOSTAPD_CHAN_DFS_USABLE)
-+ return 1;
-+ return 0;
-+ }
-+
- /*
- * When radar detection happens, CSA is performed. However, there's no
- * time for CAC, so radar channels must be skipped when finding a new
- * channel for CSA, unless they are available for immediate use.
- */
-- if (skip_radar && (chan->flag & HOSTAPD_CHAN_RADAR) &&
-+ if (type == DFS_AVAILABLE && (chan->flag & HOSTAPD_CHAN_RADAR) &&
- ((chan->flag & HOSTAPD_CHAN_DFS_MASK) !=
- HOSTAPD_CHAN_DFS_AVAILABLE))
- return 0;
-@@ -139,7 +157,7 @@ dfs_get_chan_data(struct hostapd_hw_modes *mode, int freq, int first_chan_idx)
-
- static int dfs_chan_range_available(struct hostapd_hw_modes *mode,
- int first_chan_idx, int num_chans,
-- int skip_radar)
-+ enum dfs_channel_type type)
- {
- struct hostapd_channel_data *first_chan, *chan;
- int i;
-@@ -178,7 +196,7 @@ static int dfs_chan_range_available(struct hostapd_hw_modes *mode,
- return 0;
- }
-
-- if (!dfs_channel_available(chan, skip_radar)) {
-+ if (!dfs_channel_available(chan, type)) {
- wpa_printf(MSG_DEBUG, "DFS: channel not available %d",
- first_chan->freq + i * 20);
- return 0;
-@@ -208,7 +226,7 @@ static int is_in_chanlist(struct hostapd_iface *iface,
- */
- static int dfs_find_channel(struct hostapd_iface *iface,
- struct hostapd_channel_data **ret_chan,
-- int idx, int skip_radar)
-+ int idx, enum dfs_channel_type type)
- {
- struct hostapd_hw_modes *mode;
- struct hostapd_channel_data *chan;
-@@ -233,7 +251,7 @@ static int dfs_find_channel(struct hostapd_iface *iface,
- }
-
- /* Skip incompatible chandefs */
-- if (!dfs_chan_range_available(mode, i, n_chans, skip_radar)) {
-+ if (!dfs_chan_range_available(mode, i, n_chans, type)) {
- wpa_printf(MSG_DEBUG,
- "DFS: range not available for %d (%d)",
- chan->freq, chan->chan);
-@@ -476,7 +494,7 @@ dfs_get_valid_channel(struct hostapd_iface *iface,
- int *secondary_channel,
- u8 *oper_centr_freq_seg0_idx,
- u8 *oper_centr_freq_seg1_idx,
-- int skip_radar)
-+ enum dfs_channel_type type)
- {
- struct hostapd_hw_modes *mode;
- struct hostapd_channel_data *chan = NULL;
-@@ -505,7 +523,7 @@ dfs_get_valid_channel(struct hostapd_iface *iface,
- return NULL;
-
- /* Get the count first */
-- num_available_chandefs = dfs_find_channel(iface, NULL, 0, skip_radar);
-+ num_available_chandefs = dfs_find_channel(iface, NULL, 0, type);
- wpa_printf(MSG_DEBUG, "DFS: num_available_chandefs=%d",
- num_available_chandefs);
- if (num_available_chandefs == 0)
-@@ -526,7 +544,7 @@ dfs_get_valid_channel(struct hostapd_iface *iface,
- return NULL;
-
- chan_idx = _rand % num_available_chandefs;
-- dfs_find_channel(iface, &chan, chan_idx, skip_radar);
-+ dfs_find_channel(iface, &chan, chan_idx, type);
- if (!chan) {
- wpa_printf(MSG_DEBUG, "DFS: no random channel found");
- return NULL;
-@@ -555,7 +573,7 @@ dfs_get_valid_channel(struct hostapd_iface *iface,
- for (i = 0; i < num_available_chandefs - 1; i++) {
- /* start from chan_idx + 1, end when chan_idx - 1 */
- chan_idx2 = (chan_idx + 1 + i) % num_available_chandefs;
-- dfs_find_channel(iface, &chan2, chan_idx2, skip_radar);
-+ dfs_find_channel(iface, &chan2, chan_idx2, type);
- if (chan2 && abs(chan2->chan - chan->chan) > 12) {
- /* two channels are not adjacent */
- sec_chan_idx_80p80 = chan2->chan;
-@@ -593,7 +611,8 @@ static int dfs_set_valid_channel(struct hostapd_iface *iface, int skip_radar)
- int sec = 0;
-
- channel = dfs_get_valid_channel(iface, &sec, &cf1, &cf2,
-- skip_radar);
-+ skip_radar ? DFS_AVAILABLE :
-+ DFS_ANY_CHANNEL);
- if (!channel) {
- wpa_printf(MSG_ERROR, "could not get valid channel");
- return -1;
-@@ -976,7 +995,8 @@ dfs_downgrade_bandwidth(struct hostapd_iface *iface, int *secondary_channel,
- channel = dfs_get_valid_channel(iface, secondary_channel,
- oper_centr_freq_seg0_idx,
- oper_centr_freq_seg1_idx,
-- *skip_radar);
-+ *skip_radar ? DFS_AVAILABLE :
-+ DFS_ANY_CHANNEL);
- if (channel) {
- wpa_printf(MSG_DEBUG, "DFS: Selected channel: %d",
- channel->chan);
-@@ -1017,7 +1037,8 @@ static int hostapd_dfs_start_channel_switch_cac(struct hostapd_iface *iface)
- channel = dfs_get_valid_channel(iface, &secondary_channel,
- &oper_centr_freq_seg0_idx,
- &oper_centr_freq_seg1_idx,
-- skip_radar);
-+ skip_radar ? DFS_AVAILABLE :
-+ DFS_ANY_CHANNEL);
-
- if (!channel) {
- channel = dfs_downgrade_bandwidth(iface, &secondary_channel,
-@@ -1088,7 +1109,8 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
- channel = dfs_get_valid_channel(iface, &secondary_channel,
- &oper_centr_freq_seg0_idx,
- &oper_centr_freq_seg1_idx,
-- skip_radar);
-+ skip_radar ? DFS_AVAILABLE :
-+ DFS_ANY_CHANNEL);
-
- if (!channel) {
- /*
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/802-nl80211-Report-background-radar-CAC-detection-capabi.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/802-nl80211-Report-background-radar-CAC-detection-capabi.patch
deleted file mode 100644
index 1647f8f..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/802-nl80211-Report-background-radar-CAC-detection-capabi.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 5fb4920aa49934d3a602556fbe35ab6ed11374d1 Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:17:28 +0800
-Subject: [PATCH 902/911] nl80211: Report background radar/CAC detection
- capability
-
-Report background radar/CAC detection capability if supported
-by the underlying driver/hardware.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/drivers/driver.h | 2 ++
- src/drivers/driver_nl80211_capa.c | 4 ++++
- 2 files changed, 6 insertions(+)
-
-diff --git a/src/drivers/driver.h b/src/drivers/driver.h
-index 44304d487..68964c9d5 100644
---- a/src/drivers/driver.h
-+++ b/src/drivers/driver.h
-@@ -2032,6 +2032,8 @@ struct wpa_driver_capa {
- #define WPA_DRIVER_FLAGS2_OCV 0x0000000000000080ULL
- /** Driver expects user space implementation of SME in AP mode */
- #define WPA_DRIVER_FLAGS2_AP_SME 0x0000000000000100ULL
-+/** Driver supports background radar/CAC detection */
-+#define WPA_DRIVER_RADAR_BACKGROUND 0x0000000000000400ULL
- u64 flags2;
-
- #define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \
-diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c
-index 83868b78e..05703ec64 100644
---- a/src/drivers/driver_nl80211_capa.c
-+++ b/src/drivers/driver_nl80211_capa.c
-@@ -665,6 +665,10 @@ static void wiphy_info_ext_feature_flags(struct wiphy_info_data *info,
- if (ext_feature_isset(ext_features, len,
- NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION))
- capa->flags2 |= WPA_DRIVER_FLAGS2_OCV;
-+
-+ if (ext_feature_isset(ext_features, len,
-+ NL80211_EXT_FEATURE_RADAR_BACKGROUND))
-+ capa->flags2 |= WPA_DRIVER_RADAR_BACKGROUND;
- }
-
-
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/803-DFS-Rely-on-channel_type-in-dfs_downgrade_bandwidth.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/803-DFS-Rely-on-channel_type-in-dfs_downgrade_bandwidth.patch
deleted file mode 100644
index 9c5d850..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/803-DFS-Rely-on-channel_type-in-dfs_downgrade_bandwidth.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 18111f0a47b33da2f75cebd65f9201150bc3a1a9 Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:18:45 +0800
-Subject: [PATCH 903/911] DFS: Rely on channel_type in
- dfs_downgrade_bandwidth()
-
-Add the capability to specify all 3 channel type possibilities in
-dfs_downgrade_bandwidth(). This is a preliminary change to introduce
-radar/CAC background detection support.
-
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/ap/dfs.c | 32 +++++++++++++++-----------------
- 1 file changed, 15 insertions(+), 17 deletions(-)
-
-diff --git a/src/ap/dfs.c b/src/ap/dfs.c
-index 56564b901..05cb63ac4 100644
---- a/src/ap/dfs.c
-+++ b/src/ap/dfs.c
-@@ -987,7 +987,8 @@ int hostapd_dfs_pre_cac_expired(struct hostapd_iface *iface, int freq,
- static struct hostapd_channel_data *
- dfs_downgrade_bandwidth(struct hostapd_iface *iface, int *secondary_channel,
- u8 *oper_centr_freq_seg0_idx,
-- u8 *oper_centr_freq_seg1_idx, int *skip_radar)
-+ u8 *oper_centr_freq_seg1_idx,
-+ enum dfs_channel_type *channel_type)
- {
- struct hostapd_channel_data *channel;
-
-@@ -995,23 +996,22 @@ dfs_downgrade_bandwidth(struct hostapd_iface *iface, int *secondary_channel,
- channel = dfs_get_valid_channel(iface, secondary_channel,
- oper_centr_freq_seg0_idx,
- oper_centr_freq_seg1_idx,
-- *skip_radar ? DFS_AVAILABLE :
-- DFS_ANY_CHANNEL);
-+ *channel_type);
- if (channel) {
- wpa_printf(MSG_DEBUG, "DFS: Selected channel: %d",
- channel->chan);
- return channel;
- }
-
-- if (*skip_radar) {
-- *skip_radar = 0;
-+ if (*channel_type != DFS_ANY_CHANNEL) {
-+ *channel_type = DFS_ANY_CHANNEL;
- } else {
- int oper_chwidth;
-
- oper_chwidth = hostapd_get_oper_chwidth(iface->conf);
- if (oper_chwidth == CHANWIDTH_USE_HT)
- break;
-- *skip_radar = 1;
-+ *channel_type = DFS_AVAILABLE;
- hostapd_set_oper_chwidth(iface->conf, oper_chwidth - 1);
- }
- }
-@@ -1029,7 +1029,7 @@ static int hostapd_dfs_start_channel_switch_cac(struct hostapd_iface *iface)
- int secondary_channel;
- u8 oper_centr_freq_seg0_idx = 0;
- u8 oper_centr_freq_seg1_idx = 0;
-- int skip_radar = 0;
-+ enum dfs_channel_type channel_type = DFS_ANY_CHANNEL;
- int err = 1;
-
- /* Radar detected during active CAC */
-@@ -1037,14 +1037,13 @@ static int hostapd_dfs_start_channel_switch_cac(struct hostapd_iface *iface)
- channel = dfs_get_valid_channel(iface, &secondary_channel,
- &oper_centr_freq_seg0_idx,
- &oper_centr_freq_seg1_idx,
-- skip_radar ? DFS_AVAILABLE :
-- DFS_ANY_CHANNEL);
-+ channel_type);
-
- if (!channel) {
- channel = dfs_downgrade_bandwidth(iface, &secondary_channel,
- &oper_centr_freq_seg0_idx,
- &oper_centr_freq_seg1_idx,
-- &skip_radar);
-+ &channel_type);
- if (!channel) {
- wpa_printf(MSG_ERROR, "No valid channel available");
- return err;
-@@ -1078,7 +1077,7 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
- u8 oper_centr_freq_seg0_idx;
- u8 oper_centr_freq_seg1_idx;
- u8 new_vht_oper_chwidth;
-- int skip_radar = 1;
-+ enum dfs_channel_type channel_type = DFS_AVAILABLE;
- struct csa_settings csa_settings;
- unsigned int i;
- int err = 1;
-@@ -1103,14 +1102,13 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
- * uniform spreading.
- */
- if (iface->dfs_domain == HOSTAPD_DFS_REGION_ETSI)
-- skip_radar = 0;
-+ channel_type = DFS_ANY_CHANNEL;
-
- /* Perform channel switch/CSA */
- channel = dfs_get_valid_channel(iface, &secondary_channel,
- &oper_centr_freq_seg0_idx,
- &oper_centr_freq_seg1_idx,
-- skip_radar ? DFS_AVAILABLE :
-- DFS_ANY_CHANNEL);
-+ channel_type);
-
- if (!channel) {
- /*
-@@ -1118,11 +1116,11 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
- * there is another channel where we can switch even if it
- * requires to perform a CAC first.
- */
-- skip_radar = 0;
-+ channel_type = DFS_ANY_CHANNEL;
- channel = dfs_downgrade_bandwidth(iface, &secondary_channel,
- &oper_centr_freq_seg0_idx,
- &oper_centr_freq_seg1_idx,
-- &skip_radar);
-+ &channel_type);
- if (!channel) {
- /*
- * Toggle interface state to enter DFS state
-@@ -1133,7 +1131,7 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
- return 0;
- }
-
-- if (!skip_radar) {
-+ if (channel_type == DFS_ANY_CHANNEL) {
- iface->freq = channel->freq;
- iface->conf->channel = channel->chan;
- iface->conf->secondary_channel = secondary_channel;
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/804-nl80211-Radar-background-flag-setting.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/804-nl80211-Radar-background-flag-setting.patch
deleted file mode 100644
index ace1b11..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/804-nl80211-Radar-background-flag-setting.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 9ac9d78cb92dd3ffce4dd514f80d5a166d722ce0 Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:19:45 +0800
-Subject: [PATCH 904/911] nl80211: Radar background flag setting
-
-Allow background radar detection flag to be set when specifying a
-channel. This is a preliminary change to introduce radar/CAC background
-detection support.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/drivers/driver.h | 5 +++++
- src/drivers/driver_nl80211.c | 5 +++++
- 2 files changed, 10 insertions(+)
-
-diff --git a/src/drivers/driver.h b/src/drivers/driver.h
-index 68964c9d5..90adbf0f4 100644
---- a/src/drivers/driver.h
-+++ b/src/drivers/driver.h
-@@ -783,6 +783,11 @@ struct hostapd_freq_params {
- * for IEEE 802.11ay EDMG configuration.
- */
- struct ieee80211_edmg_config edmg;
-+
-+ /**
-+ * radar_background - Whether radar/CAC background is requested
-+ */
-+ bool radar_background;
- };
-
- /**
-diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
-index bf4fda770..6cf127ca7 100644
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -4901,6 +4901,8 @@ static int nl80211_put_freq_params(struct nl_msg *msg,
- wpa_printf(MSG_DEBUG, " * he_enabled=%d", freq->he_enabled);
- wpa_printf(MSG_DEBUG, " * vht_enabled=%d", freq->vht_enabled);
- wpa_printf(MSG_DEBUG, " * ht_enabled=%d", freq->ht_enabled);
-+ wpa_printf(MSG_DEBUG, " * radar_background=%d",
-+ freq->radar_background);
-
- hw_mode = ieee80211_freq_to_chan(freq->freq, &channel);
- is_24ghz = hw_mode == HOSTAPD_MODE_IEEE80211G ||
-@@ -4978,6 +4980,9 @@ static int nl80211_put_freq_params(struct nl_msg *msg,
- NL80211_CHAN_NO_HT))
- return -ENOBUFS;
- }
-+ if (freq->radar_background)
-+ nla_put_flag(msg, NL80211_ATTR_RADAR_BACKGROUND);
-+
- return 0;
- }
-
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/805-DFS-Configure-background-radar-CAC-detection.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/805-DFS-Configure-background-radar-CAC-detection.patch
deleted file mode 100644
index 1d94fe0..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/805-DFS-Configure-background-radar-CAC-detection.patch
+++ /dev/null
@@ -1,352 +0,0 @@
-From e1171aa4bd128d019fc5d53431472abddeb5cca0 Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:20:30 +0800
-Subject: [PATCH 905/911] DFS: Configure background radar/CAC detection
-
-Introduce the capability to perform radar/CAC detection on an offchannel
-radar chain available on some hardware (e.g., mt7915). This feature
-allows to avoid CAC downtime switching on a different channel during CAC
-detection on the selected radar channel.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/ap/ap_drv_ops.c | 9 ++-
- src/ap/ap_drv_ops.h | 3 +-
- src/ap/dfs.c | 181 ++++++++++++++++++++++++++++++++++++++++----
- src/ap/hostapd.h | 15 ++++
- 4 files changed, 189 insertions(+), 19 deletions(-)
-
-diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c
-index 033ad097e..1fc538104 100644
---- a/src/ap/ap_drv_ops.c
-+++ b/src/ap/ap_drv_ops.c
-@@ -810,7 +810,8 @@ int hostapd_start_dfs_cac(struct hostapd_iface *iface,
- int channel, int ht_enabled, int vht_enabled,
- int he_enabled,
- int sec_channel_offset, int oper_chwidth,
-- int center_segment0, int center_segment1)
-+ int center_segment0, int center_segment1,
-+ bool radar_background)
- {
- struct hostapd_data *hapd = iface->bss[0];
- struct hostapd_freq_params data;
-@@ -836,10 +837,14 @@ int hostapd_start_dfs_cac(struct hostapd_iface *iface,
- wpa_printf(MSG_ERROR, "Can't set freq params");
- return -1;
- }
-+ data.radar_background = radar_background;
-
- res = hapd->driver->start_dfs_cac(hapd->drv_priv, &data);
- if (!res) {
-- iface->cac_started = 1;
-+ if (radar_background)
-+ iface->radar_background.cac_started = 1;
-+ else
-+ iface->cac_started = 1;
- os_get_reltime(&iface->dfs_cac_start);
- }
-
-diff --git a/src/ap/ap_drv_ops.h b/src/ap/ap_drv_ops.h
-index 61c8f64eb..b4d6395ae 100644
---- a/src/ap/ap_drv_ops.h
-+++ b/src/ap/ap_drv_ops.h
-@@ -130,7 +130,8 @@ int hostapd_start_dfs_cac(struct hostapd_iface *iface,
- int channel, int ht_enabled, int vht_enabled,
- int he_enabled,
- int sec_channel_offset, int oper_chwidth,
-- int center_segment0, int center_segment1);
-+ int center_segment0, int center_segment1,
-+ bool radar_background);
- int hostapd_drv_do_acs(struct hostapd_data *hapd);
- int hostapd_drv_update_dh_ie(struct hostapd_data *hapd, const u8 *peer,
- u16 reason_code, const u8 *ie, size_t ielen);
-diff --git a/src/ap/dfs.c b/src/ap/dfs.c
-index 05cb63ac4..5dc261589 100644
---- a/src/ap/dfs.c
-+++ b/src/ap/dfs.c
-@@ -20,6 +20,25 @@
- #include "crypto/crypto.h"
-
-
-+enum dfs_channel_type {
-+ DFS_ANY_CHANNEL,
-+ DFS_AVAILABLE, /* non-radar or radar-available */
-+ DFS_NO_CAC_YET, /* radar-not-yet-available */
-+};
-+
-+static struct hostapd_channel_data *
-+dfs_downgrade_bandwidth(struct hostapd_iface *iface, int *secondary_channel,
-+ u8 *oper_centr_freq_seg0_idx,
-+ u8 *oper_centr_freq_seg1_idx,
-+ enum dfs_channel_type *channel_type);
-+
-+
-+static bool dfs_use_radar_background(struct hostapd_iface *iface)
-+{
-+ return iface->drv_flags2 & WPA_DRIVER_RADAR_BACKGROUND;
-+}
-+
-+
- static int dfs_get_used_n_chans(struct hostapd_iface *iface, int *seg1)
- {
- int n_chans = 1;
-@@ -52,12 +71,6 @@ static int dfs_get_used_n_chans(struct hostapd_iface *iface, int *seg1)
- }
-
-
--enum dfs_channel_type {
-- DFS_ANY_CHANNEL,
-- DFS_AVAILABLE, /* non-radar or radar-available */
-- DFS_NO_CAC_YET, /* radar-not-yet-available */
--};
--
- /* dfs_channel_available: select new channel according to type parameter */
- static int dfs_channel_available(struct hostapd_channel_data *chan,
- enum dfs_channel_type type)
-@@ -878,7 +891,8 @@ int hostapd_handle_dfs(struct hostapd_iface *iface)
-
- /* Finally start CAC */
- hostapd_set_state(iface, HAPD_IFACE_DFS);
-- wpa_printf(MSG_DEBUG, "DFS start CAC on %d MHz", iface->freq);
-+ wpa_printf(MSG_DEBUG, "DFS start CAC on %d MHz%s", iface->freq,
-+ dfs_use_radar_background(iface) ? " (background)" : "");
- wpa_msg(iface->bss[0]->msg_ctx, MSG_INFO, DFS_EVENT_CAC_START
- "freq=%d chan=%d sec_chan=%d, width=%d, seg0=%d, seg1=%d, cac_time=%ds",
- iface->freq,
-@@ -895,13 +909,37 @@ int hostapd_handle_dfs(struct hostapd_iface *iface)
- iface->conf->secondary_channel,
- hostapd_get_oper_chwidth(iface->conf),
- hostapd_get_oper_centr_freq_seg0_idx(iface->conf),
-- hostapd_get_oper_centr_freq_seg1_idx(iface->conf));
-+ hostapd_get_oper_centr_freq_seg1_idx(iface->conf),
-+ dfs_use_radar_background(iface));
-
- if (res) {
- wpa_printf(MSG_ERROR, "DFS start_dfs_cac() failed, %d", res);
- return -1;
- }
-
-+ if (dfs_use_radar_background(iface)) {
-+ /* Cache background radar parameters. */
-+ iface->radar_background.channel = iface->conf->channel;
-+ iface->radar_background.secondary_channel =
-+ iface->conf->secondary_channel;
-+ iface->radar_background.freq = iface->freq;
-+ iface->radar_background.centr_freq_seg0_idx =
-+ hostapd_get_oper_centr_freq_seg0_idx(iface->conf);
-+ iface->radar_background.centr_freq_seg1_idx =
-+ hostapd_get_oper_centr_freq_seg1_idx(iface->conf);
-+
-+ /*
-+ * Let's select a random channel according to the
-+ * regulations and perform CAC on dedicated radar chain.
-+ */
-+ res = dfs_set_valid_channel(iface, 1);
-+ if (res < 0)
-+ return res;
-+
-+ iface->radar_background.temp_ch = 1;
-+ return 1;
-+ }
-+
- return 0;
- }
-
-@@ -923,6 +961,86 @@ int hostapd_is_dfs_chan_available(struct hostapd_iface *iface)
- }
-
-
-+static void hostpad_dfs_update_background_chain(struct hostapd_iface *iface)
-+{
-+ int sec = 0;
-+ enum dfs_channel_type channel_type = DFS_NO_CAC_YET;
-+ struct hostapd_channel_data *channel;
-+ u8 oper_centr_freq_seg0_idx = 0;
-+ u8 oper_centr_freq_seg1_idx = 0;
-+
-+ /*
-+ * Allow selection of DFS channel in ETSI to comply with
-+ * uniform spreading.
-+ */
-+ if (iface->dfs_domain == HOSTAPD_DFS_REGION_ETSI)
-+ channel_type = DFS_ANY_CHANNEL;
-+
-+ channel = dfs_get_valid_channel(iface, &sec, &oper_centr_freq_seg0_idx,
-+ &oper_centr_freq_seg1_idx,
-+ channel_type);
-+ if (!channel ||
-+ channel->chan == iface->conf->channel ||
-+ channel->chan == iface->radar_background.channel)
-+ channel = dfs_downgrade_bandwidth(iface, &sec,
-+ &oper_centr_freq_seg0_idx,
-+ &oper_centr_freq_seg1_idx,
-+ &channel_type);
-+ if (!channel ||
-+ hostapd_start_dfs_cac(iface, iface->conf->hw_mode,
-+ channel->freq, channel->chan,
-+ iface->conf->ieee80211n,
-+ iface->conf->ieee80211ac,
-+ iface->conf->ieee80211ax,
-+ sec, hostapd_get_oper_chwidth(iface->conf),
-+ oper_centr_freq_seg0_idx,
-+ oper_centr_freq_seg1_idx, true)) {
-+ wpa_printf(MSG_ERROR, "DFS failed to start CAC offchannel");
-+ iface->radar_background.channel = -1;
-+ return;
-+ }
-+
-+ iface->radar_background.channel = channel->chan;
-+ iface->radar_background.freq = channel->freq;
-+ iface->radar_background.secondary_channel = sec;
-+ iface->radar_background.centr_freq_seg0_idx = oper_centr_freq_seg0_idx;
-+ iface->radar_background.centr_freq_seg1_idx = oper_centr_freq_seg1_idx;
-+
-+ wpa_printf(MSG_DEBUG,
-+ "%s: setting background chain to chan %d (%d MHz)",
-+ __func__, channel->chan, channel->freq);
-+}
-+
-+
-+static bool
-+hostapd_dfs_is_background_event(struct hostapd_iface *iface, int freq)
-+{
-+ return dfs_use_radar_background(iface) &&
-+ iface->radar_background.channel != -1 &&
-+ iface->radar_background.freq == freq;
-+}
-+
-+
-+static int
-+hostapd_dfs_start_channel_switch_background(struct hostapd_iface *iface)
-+{
-+ iface->conf->channel = iface->radar_background.channel;
-+ iface->freq = iface->radar_background.freq;
-+ iface->conf->secondary_channel =
-+ iface->radar_background.secondary_channel;
-+ hostapd_set_oper_centr_freq_seg0_idx(
-+ iface->conf, iface->radar_background.centr_freq_seg0_idx);
-+ hostapd_set_oper_centr_freq_seg1_idx(
-+ iface->conf, iface->radar_background.centr_freq_seg1_idx);
-+
-+ hostpad_dfs_update_background_chain(iface);
-+ hostapd_disable_iface(iface);
-+ hostapd_enable_iface(iface);
-+
-+ return 0;
-+}
-+
-+
- int hostapd_dfs_complete_cac(struct hostapd_iface *iface, int success, int freq,
- int ht_enabled, int chan_offset, int chan_width,
- int cf1, int cf2)
-@@ -943,6 +1061,22 @@ int hostapd_dfs_complete_cac(struct hostapd_iface *iface, int success, int freq,
- set_dfs_state(iface, freq, ht_enabled, chan_offset,
- chan_width, cf1, cf2,
- HOSTAPD_CHAN_DFS_AVAILABLE);
-+
-+ /*
-+ * Radar event from background chain for the selected
-+ * channel. Perform CSA, move the main chain to the
-+ * selected channel and configure the background chain
-+ * to a new DFS channel.
-+ */
-+ if (hostapd_dfs_is_background_event(iface, freq)) {
-+ iface->radar_background.cac_started = 0;
-+ if (!iface->radar_background.temp_ch)
-+ return 0;
-+
-+ iface->radar_background.temp_ch = 0;
-+ return hostapd_dfs_start_channel_switch_background(iface);
-+ }
-+
- /*
- * Just mark the channel available when CAC completion
- * event is received in enabled state. CAC result could
-@@ -959,6 +1093,9 @@ int hostapd_dfs_complete_cac(struct hostapd_iface *iface, int success, int freq,
- iface->cac_started = 0;
- }
- }
-+ } else if (hostapd_dfs_is_background_event(iface, freq)) {
-+ iface->radar_background.cac_started = 0;
-+ hostpad_dfs_update_background_chain(iface);
- }
-
- return 0;
-@@ -1269,9 +1406,14 @@ int hostapd_dfs_nop_finished(struct hostapd_iface *iface, int freq,
- set_dfs_state(iface, freq, ht_enabled, chan_offset, chan_width,
- cf1, cf2, HOSTAPD_CHAN_DFS_USABLE);
-
-- /* Handle cases where all channels were initially unavailable */
-- if (iface->state == HAPD_IFACE_DFS && !iface->cac_started)
-+ if (iface->state == HAPD_IFACE_DFS && !iface->cac_started) {
-+ /* Handle cases where all channels were initially unavailable */
- hostapd_handle_dfs(iface);
-+ } else if (dfs_use_radar_background(iface) &&
-+ iface->radar_background.channel == -1) {
-+ /* Reset radar background chain if disabled */
-+ hostpad_dfs_update_background_chain(iface);
-+ }
-
- return 0;
- }
-@@ -1309,17 +1451,24 @@ int hostapd_dfs_start_cac(struct hostapd_iface *iface, int freq,
- int ht_enabled, int chan_offset, int chan_width,
- int cf1, int cf2)
- {
-- /* This is called when the driver indicates that an offloaded DFS has
-- * started CAC. */
-- hostapd_set_state(iface, HAPD_IFACE_DFS);
-+ if (hostapd_dfs_is_background_event(iface, freq)) {
-+ iface->radar_background.cac_started = 1;
-+ } else {
-+ /* This is called when the driver indicates that an offloaded
-+ * DFS has started CAC. */
-+ hostapd_set_state(iface, HAPD_IFACE_DFS);
-+ iface->cac_started = 1;
-+ }
- /* TODO: How to check CAC time for ETSI weather channels? */
- iface->dfs_cac_ms = 60000;
- wpa_msg(iface->bss[0]->msg_ctx, MSG_INFO, DFS_EVENT_CAC_START
- "freq=%d chan=%d chan_offset=%d width=%d seg0=%d "
-- "seg1=%d cac_time=%ds",
-+ "seg1=%d cac_time=%ds%s",
- freq, (freq - 5000) / 5, chan_offset, chan_width, cf1, cf2,
-- iface->dfs_cac_ms / 1000);
-- iface->cac_started = 1;
-+ iface->dfs_cac_ms / 1000,
-+ hostapd_dfs_is_background_event(iface, freq) ?
-+ " (background)" : "");
-+
- os_get_reltime(&iface->dfs_cac_start);
- return 0;
- }
-diff --git a/src/ap/hostapd.h b/src/ap/hostapd.h
-index a4ea32517..095524e49 100644
---- a/src/ap/hostapd.h
-+++ b/src/ap/hostapd.h
-@@ -541,6 +541,21 @@ struct hostapd_iface {
- int *basic_rates;
- int freq;
-
-+ /* Background radar configuration */
-+ struct {
-+ int channel;
-+ int secondary_channel;
-+ int freq;
-+ int centr_freq_seg0_idx;
-+ int centr_freq_seg1_idx;
-+ /* Main chain is on temporary channel during
-+ * CAC detection on radar offchain.
-+ */
-+ unsigned int temp_ch:1;
-+ /* CAC started on radar offchain */
-+ unsigned int cac_started:1;
-+ } radar_background;
-+
- u16 hw_flags;
-
- /* Number of associated Non-ERP stations (i.e., stations using 802.11b
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/806-DFS-Introduce-hostapd_dfs_request_channel_switch.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/806-DFS-Introduce-hostapd_dfs_request_channel_switch.patch
deleted file mode 100644
index da1cb94..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/806-DFS-Introduce-hostapd_dfs_request_channel_switch.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-From 22eb74742a126bd356e6f25e3522e1c5bb5229ef Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:21:17 +0800
-Subject: [PATCH 906/911] DFS: Introduce hostapd_dfs_request_channel_switch()
-
-This is a preliminary patch to add Channel Switch Announcement for
-background radar detection.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/ap/dfs.c | 163 ++++++++++++++++++++++++++++-----------------------
- 1 file changed, 90 insertions(+), 73 deletions(-)
-
-diff --git a/src/ap/dfs.c b/src/ap/dfs.c
-index 5dc261589..000b411be 100644
---- a/src/ap/dfs.c
-+++ b/src/ap/dfs.c
-@@ -961,6 +961,90 @@ int hostapd_is_dfs_chan_available(struct hostapd_iface *iface)
- }
-
-
-+static int hostapd_dfs_request_channel_switch(struct hostapd_iface *iface,
-+ int channel, int freq,
-+ int secondary_channel,
-+ u8 current_vht_oper_chwidth,
-+ u8 oper_centr_freq_seg0_idx,
-+ u8 oper_centr_freq_seg1_idx)
-+{
-+ struct hostapd_hw_modes *cmode = iface->current_mode;
-+ int ieee80211_mode = IEEE80211_MODE_AP, err;
-+ struct csa_settings csa_settings;
-+ u8 new_vht_oper_chwidth;
-+ unsigned int i;
-+
-+ wpa_printf(MSG_DEBUG, "DFS will switch to a new channel %d", channel);
-+ wpa_msg(iface->bss[0]->msg_ctx, MSG_INFO, DFS_EVENT_NEW_CHANNEL
-+ "freq=%d chan=%d sec_chan=%d", freq, channel,
-+ secondary_channel);
-+
-+ new_vht_oper_chwidth = hostapd_get_oper_chwidth(iface->conf);
-+ hostapd_set_oper_chwidth(iface->conf, current_vht_oper_chwidth);
-+
-+ /* Setup CSA request */
-+ os_memset(&csa_settings, 0, sizeof(csa_settings));
-+ csa_settings.cs_count = 5;
-+ csa_settings.block_tx = 1;
-+#ifdef CONFIG_MESH
-+ if (iface->mconf)
-+ ieee80211_mode = IEEE80211_MODE_MESH;
-+#endif /* CONFIG_MESH */
-+ err = hostapd_set_freq_params(&csa_settings.freq_params,
-+ iface->conf->hw_mode,
-+ freq, channel,
-+ iface->conf->enable_edmg,
-+ iface->conf->edmg_channel,
-+ iface->conf->ieee80211n,
-+ iface->conf->ieee80211ac,
-+ iface->conf->ieee80211ax,
-+ secondary_channel,
-+ new_vht_oper_chwidth,
-+ oper_centr_freq_seg0_idx,
-+ oper_centr_freq_seg1_idx,
-+ cmode->vht_capab,
-+ &cmode->he_capab[ieee80211_mode]);
-+
-+ if (err) {
-+ wpa_printf(MSG_ERROR,
-+ "DFS failed to calculate CSA freq params");
-+ hostapd_disable_iface(iface);
-+ return err;
-+ }
-+
-+ for (i = 0; i < iface->num_bss; i++) {
-+ err = hostapd_switch_channel(iface->bss[i], &csa_settings);
-+ if (err)
-+ break;
-+ }
-+
-+ if (err) {
-+ wpa_printf(MSG_WARNING,
-+ "DFS failed to schedule CSA (%d) - trying fallback",
-+ err);
-+ iface->freq = freq;
-+ iface->conf->channel = channel;
-+ iface->conf->secondary_channel = secondary_channel;
-+ hostapd_set_oper_chwidth(iface->conf, new_vht_oper_chwidth);
-+ hostapd_set_oper_centr_freq_seg0_idx(iface->conf,
-+ oper_centr_freq_seg0_idx);
-+ hostapd_set_oper_centr_freq_seg1_idx(iface->conf,
-+ oper_centr_freq_seg1_idx);
-+
-+ hostapd_disable_iface(iface);
-+ hostapd_enable_iface(iface);
-+
-+ return 0;
-+ }
-+
-+ /* Channel configuration will be updated once CSA completes and
-+ * ch_switch_notify event is received */
-+ wpa_printf(MSG_DEBUG, "DFS waiting channel switch event");
-+
-+ return 0;
-+}
-+
-+
- static void hostpad_dfs_update_background_chain(struct hostapd_iface *iface)
- {
- int sec = 0;
-@@ -1213,14 +1297,8 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
- int secondary_channel;
- u8 oper_centr_freq_seg0_idx;
- u8 oper_centr_freq_seg1_idx;
-- u8 new_vht_oper_chwidth;
- enum dfs_channel_type channel_type = DFS_AVAILABLE;
-- struct csa_settings csa_settings;
-- unsigned int i;
-- int err = 1;
-- struct hostapd_hw_modes *cmode = iface->current_mode;
- u8 current_vht_oper_chwidth = hostapd_get_oper_chwidth(iface->conf);
-- int ieee80211_mode = IEEE80211_MODE_AP;
-
- wpa_printf(MSG_DEBUG, "%s called (CAC active: %s, CSA active: %s)",
- __func__, iface->cac_started ? "yes" : "no",
-@@ -1283,73 +1361,12 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
- }
- }
-
-- wpa_printf(MSG_DEBUG, "DFS will switch to a new channel %d",
-- channel->chan);
-- wpa_msg(iface->bss[0]->msg_ctx, MSG_INFO, DFS_EVENT_NEW_CHANNEL
-- "freq=%d chan=%d sec_chan=%d", channel->freq,
-- channel->chan, secondary_channel);
--
-- new_vht_oper_chwidth = hostapd_get_oper_chwidth(iface->conf);
-- hostapd_set_oper_chwidth(iface->conf, current_vht_oper_chwidth);
--
-- /* Setup CSA request */
-- os_memset(&csa_settings, 0, sizeof(csa_settings));
-- csa_settings.cs_count = 5;
-- csa_settings.block_tx = 1;
--#ifdef CONFIG_MESH
-- if (iface->mconf)
-- ieee80211_mode = IEEE80211_MODE_MESH;
--#endif /* CONFIG_MESH */
-- err = hostapd_set_freq_params(&csa_settings.freq_params,
-- iface->conf->hw_mode,
-- channel->freq,
-- channel->chan,
-- iface->conf->enable_edmg,
-- iface->conf->edmg_channel,
-- iface->conf->ieee80211n,
-- iface->conf->ieee80211ac,
-- iface->conf->ieee80211ax,
-- secondary_channel,
-- new_vht_oper_chwidth,
-- oper_centr_freq_seg0_idx,
-- oper_centr_freq_seg1_idx,
-- cmode->vht_capab,
-- &cmode->he_capab[ieee80211_mode]);
--
-- if (err) {
-- wpa_printf(MSG_ERROR, "DFS failed to calculate CSA freq params");
-- hostapd_disable_iface(iface);
-- return err;
-- }
--
-- for (i = 0; i < iface->num_bss; i++) {
-- err = hostapd_switch_channel(iface->bss[i], &csa_settings);
-- if (err)
-- break;
-- }
--
-- if (err) {
-- wpa_printf(MSG_WARNING, "DFS failed to schedule CSA (%d) - trying fallback",
-- err);
-- iface->freq = channel->freq;
-- iface->conf->channel = channel->chan;
-- iface->conf->secondary_channel = secondary_channel;
-- hostapd_set_oper_chwidth(iface->conf, new_vht_oper_chwidth);
-- hostapd_set_oper_centr_freq_seg0_idx(iface->conf,
-- oper_centr_freq_seg0_idx);
-- hostapd_set_oper_centr_freq_seg1_idx(iface->conf,
-- oper_centr_freq_seg1_idx);
--
-- hostapd_disable_iface(iface);
-- hostapd_enable_iface(iface);
-- return 0;
-- }
--
-- /* Channel configuration will be updated once CSA completes and
-- * ch_switch_notify event is received */
--
-- wpa_printf(MSG_DEBUG, "DFS waiting channel switch event");
-- return 0;
-+ return hostapd_dfs_request_channel_switch(iface, channel->chan,
-+ channel->freq,
-+ secondary_channel,
-+ current_vht_oper_chwidth,
-+ oper_centr_freq_seg0_idx,
-+ oper_centr_freq_seg1_idx);
- }
-
-
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/807-DFS-Enable-CSA-for-background-radar-detection.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/807-DFS-Enable-CSA-for-background-radar-detection.patch
deleted file mode 100644
index bd258ad..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/807-DFS-Enable-CSA-for-background-radar-detection.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 4445b818de45ca5511e81dc535606a368c97b86d Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:22:12 +0800
-Subject: [PATCH 907/911] DFS: Enable CSA for background radar detection
-
-Rely on hostapd_dfs_request_channel_switch() to enable CSA for
-background radar detection switching back to the selected channel.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/ap/dfs.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/src/ap/dfs.c b/src/ap/dfs.c
-index 000b411be..1224acd31 100644
---- a/src/ap/dfs.c
-+++ b/src/ap/dfs.c
-@@ -1108,6 +1108,8 @@ hostapd_dfs_is_background_event(struct hostapd_iface *iface, int freq)
- static int
- hostapd_dfs_start_channel_switch_background(struct hostapd_iface *iface)
- {
-+ u8 current_vht_oper_chwidth = hostapd_get_oper_chwidth(iface->conf);
-+
- iface->conf->channel = iface->radar_background.channel;
- iface->freq = iface->radar_background.freq;
- iface->conf->secondary_channel =
-@@ -1118,10 +1120,12 @@ hostapd_dfs_start_channel_switch_background(struct hostapd_iface *iface)
- iface->conf, iface->radar_background.centr_freq_seg1_idx);
-
- hostpad_dfs_update_background_chain(iface);
-- hostapd_disable_iface(iface);
-- hostapd_enable_iface(iface);
-
-- return 0;
-+ return hostapd_dfs_request_channel_switch(
-+ iface, iface->conf->channel, iface->freq,
-+ iface->conf->secondary_channel, current_vht_oper_chwidth,
-+ hostapd_get_oper_centr_freq_seg0_idx(iface->conf),
-+ hostapd_get_oper_centr_freq_seg1_idx(iface->conf));
- }
-
-
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/808-DFS-Switch-to-background-radar-channel-if-available.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/808-DFS-Switch-to-background-radar-channel-if-available.patch
deleted file mode 100644
index b6b0b86..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/808-DFS-Switch-to-background-radar-channel-if-available.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 5615f7c8b3abded17febe19e0d4f9914b561285c Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:22:49 +0800
-Subject: [PATCH 908/911] DFS: Switch to background radar channel if available
-
-On radar detection on the main chain switch to the channel monitored
-by the background chain if we have already performed the CAC there.
-If a radar pattern is reported on the background chain, just select a
-new random channel according to the regulations for monitoring.
-
-Tested-by: Owen Peng <owen.peng@mediatek.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
----
- src/ap/dfs.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 58 insertions(+), 7 deletions(-)
-
-diff --git a/src/ap/dfs.c b/src/ap/dfs.c
-index 1224acd31..d63caaee3 100644
---- a/src/ap/dfs.c
-+++ b/src/ap/dfs.c
-@@ -1295,6 +1295,53 @@ static int hostapd_dfs_start_channel_switch_cac(struct hostapd_iface *iface)
- }
-
-
-+static int
-+hostapd_dfs_background_start_channel_switch(struct hostapd_iface *iface,
-+ int freq)
-+{
-+ if (!dfs_use_radar_background(iface))
-+ return -1; /* Background radar chain not supported. */
-+
-+ wpa_printf(MSG_DEBUG,
-+ "%s called (background CAC active: %s, CSA active: %s)",
-+ __func__, iface->radar_background.cac_started ? "yes" : "no",
-+ hostapd_csa_in_progress(iface) ? "yes" : "no");
-+
-+ /* Check if CSA in progress */
-+ if (hostapd_csa_in_progress(iface))
-+ return 0;
-+
-+ if (hostapd_dfs_is_background_event(iface, freq)) {
-+ /*
-+ * Radar pattern is reported on the background chain.
-+ * Just select a new random channel according to the
-+ * regulations for monitoring.
-+ */
-+ hostpad_dfs_update_background_chain(iface);
-+ return 0;
-+ }
-+
-+ /*
-+ * If background radar detection is supported and the radar channel
-+ * monitored by the background chain is available switch to it without
-+ * waiting for the CAC.
-+ */
-+ if (iface->radar_background.channel == -1)
-+ return -1; /* Background radar chain not available. */
-+
-+ if (iface->radar_background.cac_started) {
-+ /*
-+ * Background channel not available yet. Perform CAC on the
-+ * main chain.
-+ */
-+ iface->radar_background.temp_ch = 1;
-+ return -1;
-+ }
-+
-+ return hostapd_dfs_start_channel_switch_background(iface);
-+}
-+
-+
- static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
- {
- struct hostapd_channel_data *channel;
-@@ -1399,15 +1446,19 @@ int hostapd_dfs_radar_detected(struct hostapd_iface *iface, int freq,
- if (!res)
- return 0;
-
-- /* Skip if reported radar event not overlapped our channels */
-- res = dfs_are_channels_overlapped(iface, freq, chan_width, cf1, cf2);
-- if (!res)
-- return 0;
-+ if (!hostapd_dfs_is_background_event(iface, freq)) {
-+ /* Skip if reported radar event not overlapped our channels */
-+ if (!dfs_are_channels_overlapped(iface, freq, chan_width,
-+ cf1, cf2))
-+ return 0;
-+ }
-
-- /* radar detected while operating, switch the channel. */
-- res = hostapd_dfs_start_channel_switch(iface);
-+ if (hostapd_dfs_background_start_channel_switch(iface, freq)) {
-+ /* Radar detected while operating, switch the channel. */
-+ return hostapd_dfs_start_channel_switch(iface);
-+ }
-
-- return res;
-+ return 0;
- }
-
-
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/809-hostapd-Allow-enabling-background-radar.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/809-hostapd-Allow-enabling-background-radar.patch
deleted file mode 100644
index 82ce87f..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/809-hostapd-Allow-enabling-background-radar.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From c9205badb2f9bc385c3cdfe74ceae033fc3e4923 Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:23:40 +0800
-Subject: [PATCH 909/911] hostapd: Allow enabling background radar
-
-This feature does not work on all radios that advertise this feature
-with the current driver implementation, and possibly some users don't
-want to use it even if it works fine, so disable it by default for now,
-but let users enable it as desired with enable_background_radar=1.
-
-Signed-off-by: Ben Greear <greearb@candelatech.com>
----
- hostapd/config_file.c | 2 ++
- hostapd/hostapd.conf | 10 ++++++++++
- src/ap/ap_config.h | 1 +
- src/ap/dfs.c | 3 ++-
- 4 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/hostapd/config_file.c b/hostapd/config_file.c
-index 0d3554375..b423789b8 100644
---- a/hostapd/config_file.c
-+++ b/hostapd/config_file.c
-@@ -3211,6 +3211,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
- conf->acs_freq_list_present = 1;
- } else if (os_strcmp(buf, "acs_exclude_6ghz_non_psc") == 0) {
- conf->acs_exclude_6ghz_non_psc = atoi(pos);
-+ } else if (os_strcmp(buf, "enable_background_radar") == 0) {
-+ conf->enable_background_radar = atoi(pos);
- } else if (os_strcmp(buf, "min_tx_power") == 0) {
- int val = atoi(pos);
-
-diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
-index 3c2019f73..f839ba708 100644
---- a/hostapd/hostapd.conf
-+++ b/hostapd/hostapd.conf
-@@ -225,6 +225,16 @@ channel=1
- # Default behavior is to include all PSC and non-PSC channels.
- #acs_exclude_6ghz_non_psc=1
-
-+# Enable background radar feature
-+# This feature allows CAC to be run on dedicated radio RF chains while the
-+# radio(s) are otherwise running normal AP activities on other channels.
-+# This requires that the driver and the radio support it before feature will
-+# actually be enabled, i.e., this parameter value is ignored with drivers that
-+# do not advertise support for the capability.
-+# 0: Leave disabled (default)
-+# 1: Enable it.
-+#enable_background_radar=1
-+
- # Set minimum permitted max TX power (in dBm) for ACS and DFS channel selection.
- # (default 0, i.e., not constraint)
- #min_tx_power=20
-diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
-index f3aff369f..8ed7c2aa1 100644
---- a/src/ap/ap_config.h
-+++ b/src/ap/ap_config.h
-@@ -964,6 +964,7 @@ struct hostapd_config {
- u8 min_tx_power;
- enum hostapd_hw_mode hw_mode; /* HOSTAPD_MODE_IEEE80211A, .. */
- int acs_exclude_6ghz_non_psc;
-+ int enable_background_radar;
- enum {
- LONG_PREAMBLE = 0,
- SHORT_PREAMBLE = 1
-diff --git a/src/ap/dfs.c b/src/ap/dfs.c
-index d63caaee3..48cd93507 100644
---- a/src/ap/dfs.c
-+++ b/src/ap/dfs.c
-@@ -35,7 +35,8 @@ dfs_downgrade_bandwidth(struct hostapd_iface *iface, int *secondary_channel,
-
- static bool dfs_use_radar_background(struct hostapd_iface *iface)
- {
-- return iface->drv_flags2 & WPA_DRIVER_RADAR_BACKGROUND;
-+ return (iface->drv_flags2 & WPA_DRIVER_RADAR_BACKGROUND) &&
-+ iface->conf->enable_background_radar;
- }
-
-
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/810-nl80211-Verify-that-nla_put_flag-succeeds-for-backgr.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/810-nl80211-Verify-that-nla_put_flag-succeeds-for-backgr.patch
deleted file mode 100644
index d9561da..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/810-nl80211-Verify-that-nla_put_flag-succeeds-for-backgr.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From f16170300d304dbfc7c4d265101136ae2dc912b0 Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:24:20 +0800
-Subject: [PATCH 910/911] nl80211: Verify that nla_put_flag() succeeds for
- background radar
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/drivers/driver_nl80211.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
-index 6cf127ca7..9de01f391 100644
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -4980,8 +4980,9 @@ static int nl80211_put_freq_params(struct nl_msg *msg,
- NL80211_CHAN_NO_HT))
- return -ENOBUFS;
- }
-- if (freq->radar_background)
-- nla_put_flag(msg, NL80211_ATTR_RADAR_BACKGROUND);
-+ if (freq->radar_background &&
-+ nla_put_flag(msg, NL80211_ATTR_RADAR_BACKGROUND))
-+ return -ENOBUFS;
-
- return 0;
- }
---
-2.29.2
-
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/811-Sync-with-mac80211-next.git-include-uapi-linux-nl802.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/811-Sync-with-mac80211-next.git-include-uapi-linux-nl802.patch
deleted file mode 100644
index 7d1ae65..0000000
--- a/autobuild_mac80211_release/package/network/services/hostapd/patches/811-Sync-with-mac80211-next.git-include-uapi-linux-nl802.patch
+++ /dev/null
@@ -1,414 +0,0 @@
-From 3204e0177e4d67fb1500c8296ee062110852383b Mon Sep 17 00:00:00 2001
-From: dzou <dzou@company.com>
-Date: Sun, 5 Jun 2022 23:46:07 +0800
-Subject: [PATCH 911/911] Sync with mac80211-next.git
- include/uapi/linux/nl80211.h
-
-This brings in nl80211 definitions as of 2022-01-04. In addition, update
-nl80211_command_to_string() to cover the new defined commands.
-
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- src/drivers/driver_nl80211_event.c | 7 +
- src/drivers/nl80211_copy.h | 230 +++++++++++++++++++++++++++--
- 2 files changed, 226 insertions(+), 11 deletions(-)
-
-diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c
-index c44cc27e8..83d32ed6d 100644
---- a/src/drivers/driver_nl80211_event.c
-+++ b/src/drivers/driver_nl80211_event.c
-@@ -172,6 +172,13 @@ static const char * nl80211_command_to_string(enum nl80211_commands cmd)
- C2S(NL80211_CMD_UNPROT_BEACON)
- C2S(NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS)
- C2S(NL80211_CMD_SET_SAR_SPECS)
-+ C2S(NL80211_CMD_OBSS_COLOR_COLLISION)
-+ C2S(NL80211_CMD_COLOR_CHANGE_REQUEST)
-+ C2S(NL80211_CMD_COLOR_CHANGE_STARTED)
-+ C2S(NL80211_CMD_COLOR_CHANGE_ABORTED)
-+ C2S(NL80211_CMD_COLOR_CHANGE_COMPLETED)
-+ C2S(NL80211_CMD_SET_FILS_AAD)
-+ C2S(NL80211_CMD_ASSOC_COMEBACK)
- C2S(__NL80211_CMD_AFTER_LAST)
- }
- #undef C2S
-diff --git a/src/drivers/nl80211_copy.h b/src/drivers/nl80211_copy.h
-index f962c06e9..195a238a3 100644
---- a/src/drivers/nl80211_copy.h
-+++ b/src/drivers/nl80211_copy.h
-@@ -11,7 +11,7 @@
- * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
- * Copyright 2008 Colin McCabe <colin@cozybit.com>
- * Copyright 2015-2017 Intel Deutschland GmbH
-- * Copyright (C) 2018-2020 Intel Corporation
-+ * Copyright (C) 2018-2021 Intel Corporation
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
-@@ -300,6 +300,29 @@
- * the interface goes down.
- */
-
-+/**
-+ * DOC: FILS shared key crypto offload
-+ *
-+ * This feature is applicable to drivers running in AP mode.
-+ *
-+ * FILS shared key crypto offload can be advertised by drivers by setting
-+ * @NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD flag. The drivers that support
-+ * FILS shared key crypto offload should be able to encrypt and decrypt
-+ * association frames for FILS shared key authentication as per IEEE 802.11ai.
-+ * With this capability, for FILS key derivation, drivers depend on userspace.
-+ *
-+ * After FILS key derivation, userspace shares the FILS AAD details with the
-+ * driver and the driver stores the same to use in decryption of association
-+ * request and in encryption of association response. The below parameters
-+ * should be given to the driver in %NL80211_CMD_SET_FILS_AAD.
-+ * %NL80211_ATTR_MAC - STA MAC address, used for storing FILS AAD per STA
-+ * %NL80211_ATTR_FILS_KEK - Used for encryption or decryption
-+ * %NL80211_ATTR_FILS_NONCES - Used for encryption or decryption
-+ * (STA Nonce 16 bytes followed by AP Nonce 16 bytes)
-+ *
-+ * Once the association is done, the driver cleans the FILS AAD data.
-+ */
-+
- /**
- * enum nl80211_commands - supported nl80211 commands
- *
-@@ -337,7 +360,10 @@
- * @NL80211_CMD_DEL_INTERFACE: Virtual interface was deleted, has attributes
- * %NL80211_ATTR_IFINDEX and %NL80211_ATTR_WIPHY. Can also be sent from
- * userspace to request deletion of a virtual interface, then requires
-- * attribute %NL80211_ATTR_IFINDEX.
-+ * attribute %NL80211_ATTR_IFINDEX. If multiple BSSID advertisements are
-+ * enabled using %NL80211_ATTR_MBSSID_CONFIG, %NL80211_ATTR_MBSSID_ELEMS,
-+ * and if this command is used for the transmitting interface, then all
-+ * the non-transmitting interfaces are deleted as well.
- *
- * @NL80211_CMD_GET_KEY: Get sequence counter information for a key specified
- * by %NL80211_ATTR_KEY_IDX and/or %NL80211_ATTR_MAC.
-@@ -1185,6 +1211,32 @@
- * passed using %NL80211_ATTR_SAR_SPEC. %NL80211_ATTR_WIPHY is used to
- * specify the wiphy index to be applied to.
- *
-+ * @NL80211_CMD_OBSS_COLOR_COLLISION: This notification is sent out whenever
-+ * mac80211/drv detects a bss color collision.
-+ *
-+ * @NL80211_CMD_COLOR_CHANGE_REQUEST: This command is used to indicate that
-+ * userspace wants to change the BSS color.
-+ *
-+ * @NL80211_CMD_COLOR_CHANGE_STARTED: Notify userland, that a color change has
-+ * started
-+ *
-+ * @NL80211_CMD_COLOR_CHANGE_ABORTED: Notify userland, that the color change has
-+ * been aborted
-+ *
-+ * @NL80211_CMD_COLOR_CHANGE_COMPLETED: Notify userland that the color change
-+ * has completed
-+ *
-+ * @NL80211_CMD_SET_FILS_AAD: Set FILS AAD data to the driver using -
-+ * &NL80211_ATTR_MAC - for STA MAC address
-+ * &NL80211_ATTR_FILS_KEK - for KEK
-+ * &NL80211_ATTR_FILS_NONCES - for FILS Nonces
-+ * (STA Nonce 16 bytes followed by AP Nonce 16 bytes)
-+ *
-+ * @NL80211_CMD_ASSOC_COMEBACK: notification about an association
-+ * temporal rejection with comeback. The event includes %NL80211_ATTR_MAC
-+ * to describe the BSSID address of the AP and %NL80211_ATTR_TIMEOUT to
-+ * specify the timeout value.
-+ *
- * @NL80211_CMD_MAX: highest used command number
- * @__NL80211_CMD_AFTER_LAST: internal use
- */
-@@ -1417,6 +1469,18 @@ enum nl80211_commands {
-
- NL80211_CMD_SET_SAR_SPECS,
-
-+ NL80211_CMD_OBSS_COLOR_COLLISION,
-+
-+ NL80211_CMD_COLOR_CHANGE_REQUEST,
-+
-+ NL80211_CMD_COLOR_CHANGE_STARTED,
-+ NL80211_CMD_COLOR_CHANGE_ABORTED,
-+ NL80211_CMD_COLOR_CHANGE_COMPLETED,
-+
-+ NL80211_CMD_SET_FILS_AAD,
-+
-+ NL80211_CMD_ASSOC_COMEBACK,
-+
- /* add new commands above here */
-
- /* used to define NL80211_CMD_MAX below */
-@@ -2413,7 +2477,9 @@ enum nl80211_commands {
- * space supports external authentication. This attribute shall be used
- * with %NL80211_CMD_CONNECT and %NL80211_CMD_START_AP request. The driver
- * may offload authentication processing to user space if this capability
-- * is indicated in the respective requests from the user space.
-+ * is indicated in the respective requests from the user space. (This flag
-+ * attribute deprecated for %NL80211_CMD_START_AP, use
-+ * %NL80211_ATTR_AP_SETTINGS_FLAGS)
- *
- * @NL80211_ATTR_NSS: Station's New/updated RX_NSS value notified using this
- * u8 attribute. This is used with %NL80211_CMD_STA_OPMODE_CHANGED.
-@@ -2560,6 +2626,39 @@ enum nl80211_commands {
- * disassoc events to indicate that an immediate reconnect to the AP
- * is desired.
- *
-+ * @NL80211_ATTR_OBSS_COLOR_BITMAP: bitmap of the u64 BSS colors for the
-+ * %NL80211_CMD_OBSS_COLOR_COLLISION event.
-+ *
-+ * @NL80211_ATTR_COLOR_CHANGE_COUNT: u8 attribute specifying the number of TBTT's
-+ * until the color switch event.
-+ * @NL80211_ATTR_COLOR_CHANGE_COLOR: u8 attribute specifying the color that we are
-+ * switching to
-+ * @NL80211_ATTR_COLOR_CHANGE_ELEMS: Nested set of attributes containing the IE
-+ * information for the time while performing a color switch.
-+ *
-+ * @NL80211_ATTR_MBSSID_CONFIG: Nested attribute for multiple BSSID
-+ * advertisements (MBSSID) parameters in AP mode.
-+ * Kernel uses this attribute to indicate the driver's support for MBSSID
-+ * and enhanced multi-BSSID advertisements (EMA AP) to the userspace.
-+ * Userspace should use this attribute to configure per interface MBSSID
-+ * parameters.
-+ * See &enum nl80211_mbssid_config_attributes for details.
-+ *
-+ * @NL80211_ATTR_MBSSID_ELEMS: Nested parameter to pass multiple BSSID elements.
-+ * Mandatory parameter for the transmitting interface to enable MBSSID.
-+ * Optional for the non-transmitting interfaces.
-+ *
-+ * @NL80211_ATTR_RADAR_BACKGROUND: Configure dedicated offchannel chain
-+ * available for radar/CAC detection on some hw. This chain can't be used
-+ * to transmit or receive frames and it is bounded to a running wdev.
-+ * Background radar/CAC detection allows to avoid the CAC downtime
-+ * switching on a different channel during CAC detection on the selected
-+ * radar channel.
-+ *
-+ * @NL80211_ATTR_AP_SETTINGS_FLAGS: u32 attribute contains ap settings flags,
-+ * enumerated in &enum nl80211_ap_settings_flags. This attribute shall be
-+ * used with %NL80211_CMD_START_AP request.
-+ *
- * @NUM_NL80211_ATTR: total number of nl80211_attrs available
- * @NL80211_ATTR_MAX: highest attribute number currently defined
- * @__NL80211_ATTR_AFTER_LAST: internal use
-@@ -3057,6 +3156,19 @@ enum nl80211_attrs {
-
- NL80211_ATTR_DISABLE_HE,
-
-+ NL80211_ATTR_OBSS_COLOR_BITMAP,
-+
-+ NL80211_ATTR_COLOR_CHANGE_COUNT,
-+ NL80211_ATTR_COLOR_CHANGE_COLOR,
-+ NL80211_ATTR_COLOR_CHANGE_ELEMS,
-+
-+ NL80211_ATTR_MBSSID_CONFIG,
-+ NL80211_ATTR_MBSSID_ELEMS,
-+
-+ NL80211_ATTR_RADAR_BACKGROUND,
-+
-+ NL80211_ATTR_AP_SETTINGS_FLAGS,
-+
- /* add attributes here, update the policy in nl80211.c */
-
- __NL80211_ATTR_AFTER_LAST,
-@@ -3650,11 +3762,12 @@ enum nl80211_mpath_info {
- * capabilities IE
- * @NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE: HE PPE thresholds information as
- * defined in HE capabilities IE
-- * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band HE capability attribute currently
-- * defined
- * @NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA: HE 6GHz band capabilities (__le16),
- * given for all 6 GHz band channels
-+ * @NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS: vendor element capabilities that are
-+ * advertised on this band/for this iftype (binary)
- * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
-+ * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band attribute currently defined
- */
- enum nl80211_band_iftype_attr {
- __NL80211_BAND_IFTYPE_ATTR_INVALID,
-@@ -3665,6 +3778,7 @@ enum nl80211_band_iftype_attr {
- NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
- NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
- NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
-+ NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
-
- /* keep last */
- __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
-@@ -4887,6 +5001,7 @@ enum nl80211_txrate_gi {
- * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz)
- * @NL80211_BAND_6GHZ: around 6 GHz band (5.9 - 7.2 GHz)
- * @NL80211_BAND_S1GHZ: around 900MHz, supported by S1G PHYs
-+ * @NL80211_BAND_LC: light communication band (placeholder)
- * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
- * since newer kernel versions may support more bands
- */
-@@ -4896,6 +5011,7 @@ enum nl80211_band {
- NL80211_BAND_60GHZ,
- NL80211_BAND_6GHZ,
- NL80211_BAND_S1GHZ,
-+ NL80211_BAND_LC,
-
- NUM_NL80211_BANDS,
- };
-@@ -5462,7 +5578,7 @@ enum nl80211_iface_limit_attrs {
- * => allows 8 of AP/GO that can have BI gcd >= min gcd
- *
- * numbers = [ #{STA} <= 2 ], channels = 2, max = 2
-- * => allows two STAs on different channels
-+ * => allows two STAs on the same or on different channels
- *
- * numbers = [ #{STA} <= 1, #{P2P-client,P2P-GO} <= 3 ], max = 4
- * => allows a STA plus three P2P interfaces
-@@ -5507,7 +5623,7 @@ enum nl80211_if_combination_attrs {
- * @NL80211_PLINK_ESTAB: mesh peer link is established
- * @NL80211_PLINK_HOLDING: mesh peer link is being closed or cancelled
- * @NL80211_PLINK_BLOCKED: all frames transmitted from this mesh
-- * plink are discarded
-+ * plink are discarded, except for authentication frames
- * @NUM_NL80211_PLINK_STATES: number of peer link states
- * @MAX_NL80211_PLINK_STATES: highest numerical value of plink states
- */
-@@ -5644,13 +5760,15 @@ enum nl80211_tdls_operation {
- NL80211_TDLS_DISABLE_LINK,
- };
-
--/*
-+/**
- * enum nl80211_ap_sme_features - device-integrated AP features
-- * Reserved for future use, no bits are defined in
-- * NL80211_ATTR_DEVICE_AP_SME yet.
-+ * @NL80211_AP_SME_SA_QUERY_OFFLOAD: SA Query procedures offloaded to driver
-+ * when user space indicates support for SA Query procedures offload during
-+ * "start ap" with %NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT.
-+ */
- enum nl80211_ap_sme_features {
-+ NL80211_AP_SME_SA_QUERY_OFFLOAD = 1 << 0,
- };
-- */
-
- /**
- * enum nl80211_feature_flags - device/driver features
-@@ -5950,6 +6068,17 @@ enum nl80211_feature_flags {
- * frame protection for all management frames exchanged during the
- * negotiation and range measurement procedure.
- *
-+ * @NL80211_EXT_FEATURE_BSS_COLOR: The driver supports BSS color collision
-+ * detection and change announcemnts.
-+ *
-+ * @NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD: Driver running in AP mode supports
-+ * FILS encryption and decryption for (Re)Association Request and Response
-+ * frames. Userspace has to share FILS AAD details to the driver by using
-+ * @NL80211_CMD_SET_FILS_AAD.
-+ *
-+ * @NL80211_EXT_FEATURE_RADAR_BACKGROUND: Device supports background radar/CAC
-+ * detection.
-+ *
- * @NUM_NL80211_EXT_FEATURES: number of extended features.
- * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
- */
-@@ -6014,6 +6143,9 @@ enum nl80211_ext_feature_index {
- NL80211_EXT_FEATURE_SECURE_LTF,
- NL80211_EXT_FEATURE_SECURE_RTT,
- NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE,
-+ NL80211_EXT_FEATURE_BSS_COLOR,
-+ NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
-+ NL80211_EXT_FEATURE_RADAR_BACKGROUND,
-
- /* add new features before the definition below */
- NUM_NL80211_EXT_FEATURES,
-@@ -6912,6 +7044,9 @@ enum nl80211_peer_measurement_ftm_capa {
- * @NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK: negotiate for LMR feedback. Only
- * valid if either %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED or
- * %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED is set.
-+ * @NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR: optional. The BSS color of the
-+ * responder. Only valid if %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED
-+ * or %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED is set.
- *
- * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal
- * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number
-@@ -6931,6 +7066,7 @@ enum nl80211_peer_measurement_ftm_req {
- NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED,
- NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED,
- NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK,
-+ NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR,
-
- /* keep last */
- NUM_NL80211_PMSR_FTM_REQ_ATTR,
-@@ -7299,4 +7435,76 @@ enum nl80211_sar_specs_attrs {
- NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
- };
-
-+/**
-+ * enum nl80211_mbssid_config_attributes - multiple BSSID (MBSSID) and enhanced
-+ * multi-BSSID advertisements (EMA) in AP mode.
-+ * Kernel uses some of these attributes to advertise driver's support for
-+ * MBSSID and EMA.
-+ * Remaining attributes should be used by the userspace to configure the
-+ * features.
-+ *
-+ * @__NL80211_MBSSID_CONFIG_ATTR_INVALID: Invalid
-+ *
-+ * @NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES: Used by the kernel to advertise
-+ * the maximum number of MBSSID interfaces supported by the driver.
-+ * Driver should indicate MBSSID support by setting
-+ * wiphy->mbssid_max_interfaces to a value more than or equal to 2.
-+ *
-+ * @NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY: Used by the kernel
-+ * to advertise the maximum profile periodicity supported by the driver
-+ * if EMA is enabled. Driver should indicate EMA support to the userspace
-+ * by setting wiphy->ema_max_profile_periodicity to
-+ * a non-zero value.
-+ *
-+ * @NL80211_MBSSID_CONFIG_ATTR_INDEX: Mandatory parameter to pass the index of
-+ * this BSS (u8) in the multiple BSSID set.
-+ * Value must be set to 0 for the transmitting interface and non-zero for
-+ * all non-transmitting interfaces. The userspace will be responsible
-+ * for using unique indices for the interfaces.
-+ * Range: 0 to wiphy->mbssid_max_interfaces-1.
-+ *
-+ * @NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX: Mandatory parameter for
-+ * a non-transmitted profile which provides the interface index (u32) of
-+ * the transmitted profile. The value must match one of the interface
-+ * indices advertised by the kernel. Optional if the interface being set up
-+ * is the transmitting one, however, if provided then the value must match
-+ * the interface index of the same.
-+ *
-+ * @NL80211_MBSSID_CONFIG_ATTR_EMA: Flag used to enable EMA AP feature.
-+ * Setting this flag is permitted only if the driver advertises EMA support
-+ * by setting wiphy->ema_max_profile_periodicity to non-zero.
-+ *
-+ * @__NL80211_MBSSID_CONFIG_ATTR_LAST: Internal
-+ * @NL80211_MBSSID_CONFIG_ATTR_MAX: highest attribute
-+ */
-+enum nl80211_mbssid_config_attributes {
-+ __NL80211_MBSSID_CONFIG_ATTR_INVALID,
-+
-+ NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES,
-+ NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY,
-+ NL80211_MBSSID_CONFIG_ATTR_INDEX,
-+ NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX,
-+ NL80211_MBSSID_CONFIG_ATTR_EMA,
-+
-+ /* keep last */
-+ __NL80211_MBSSID_CONFIG_ATTR_LAST,
-+ NL80211_MBSSID_CONFIG_ATTR_MAX = __NL80211_MBSSID_CONFIG_ATTR_LAST - 1,
-+};
-+
-+/**
-+ * enum nl80211_ap_settings_flags - AP settings flags
-+ *
-+ * @NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT: AP supports external
-+ * authentication.
-+ * @NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT: Userspace supports SA Query
-+ * procedures offload to driver. If driver advertises
-+ * %NL80211_AP_SME_SA_QUERY_OFFLOAD in AP SME features, userspace shall
-+ * ignore SA Query procedures and validations when this flag is set by
-+ * userspace.
-+ */
-+enum nl80211_ap_settings_flags {
-+ NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT = 1 << 0,
-+ NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT = 1 << 1,
-+};
-+
- #endif /* __LINUX_NL80211_H */
---
-2.29.2
-