[PATCH v2 1/2] AP: Unsolicited broadcast probe resp support
Aloka Dixit
alokad at codeaurora.org
Thu Sep 10 22:45:46 EDT 2020
This patch adds hostapd configuration options for unsolicited broadcast
probe response transmission for in-band discovery in 6GHz.
Maximum allowed packet interval is 20 TUs (IEEE P802.11ax/D6.0
26.17.2.3.2, AP behavior for fast passive scanning).
Setting value to 0 disables the transmission.
Signed-off-by: Aloka Dixit <alokad at codeaurora.org>
---
hostapd/config_file.c | 4 ++++
hostapd/hostapd.conf | 6 ++++++
src/ap/ap_config.h | 2 ++
src/ap/beacon.c | 21 +++++++++++++++++++++
src/drivers/driver.h | 15 +++++++++++++++
5 files changed, 48 insertions(+)
diff --git a/hostapd/config_file.c b/hostapd/config_file.c
index 1861b5203f0f..c16a5838c588 100644
--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
@@ -3549,6 +3549,10 @@ static int hostapd_config_fill(struct hostapd_config *conf,
conf->he_oper_centr_freq_seg0_idx = atoi(pos);
} else if (os_strcmp(buf, "he_oper_centr_freq_seg1_idx") == 0) {
conf->he_oper_centr_freq_seg1_idx = atoi(pos);
+ } else if (os_strcmp(buf,
+ "unsol_bcast_probe_resp_interval") == 0) {
+ bss->unsol_bcast_probe_resp_interval =
+ (atoi(pos) > 20) ? 20 : atoi(pos);
#endif /* CONFIG_IEEE80211AX */
} else if (os_strcmp(buf, "max_listen_interval") == 0) {
bss->max_listen_interval = atoi(pos);
diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
index 25b4e49276c0..adfb79f2fde1 100644
--- a/hostapd/hostapd.conf
+++ b/hostapd/hostapd.conf
@@ -867,6 +867,12 @@ wmm_ac_vo_acm=0
#he_spr_srg_obss_pd_min_offset
#he_spr_srg_obss_pd_max_offset
+# Unsolicited broadcast probe response transmission settings, 6GHz only.
+# If interval is set to non-zero, the AP schedules unsolicited
+# broadcast probe response frames for in-band discovery. Refer to
+# IEEE P802.11ax/D6.0 26.17.2.3.2, AP behavior for fast passive scanning.
+#unsol_bcast_probe_resp_interval=0(default) to 20 TUs.
+
##### IEEE 802.1X-2004 related configuration ##################################
# Require IEEE 802.1X authorization
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
index b705c378fe28..74584159a6a6 100644
--- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h
@@ -860,6 +860,8 @@ struct hostapd_bss_config {
*/
u8 mka_psk_set;
#endif /* CONFIG_MACSEC */
+
+ u32 unsol_bcast_probe_resp_interval;
};
/**
diff --git a/src/ap/beacon.c b/src/ap/beacon.c
index b3b33b7faf1d..5b182d1488d5 100644
--- a/src/ap/beacon.c
+++ b/src/ap/beacon.c
@@ -1113,6 +1113,21 @@ static u8 * hostapd_probe_resp_offloads(struct hostapd_data *hapd,
#endif /* NEED_AP_MLME */
+#ifdef CONFIG_IEEE80211AX
+/* Unsolicited broadcast probe response transmission, 6GHz only */
+static u8 *hostapd_unsol_bcast_probe_resp(struct hostapd_data *hapd,
+ struct wpa_driver_ap_params *params)
+{
+ if (!is_6ghz_op_class(hapd->iconf->op_class))
+ return NULL;
+
+ params->unsol_bcast_probe_resp_interval =
+ hapd->conf->unsol_bcast_probe_resp_interval;
+
+ return hostapd_gen_probe_resp(hapd, NULL, 0,
+ ¶ms->unsol_bcast_probe_resp_tmpl_len);
+}
+#endif /* CONFIG_IEEE80211AX */
void sta_track_del(struct hostapd_sta_info *info)
{
@@ -1461,6 +1476,10 @@ void ieee802_11_free_ap_params(struct wpa_driver_ap_params *params)
params->head = NULL;
os_free(params->proberesp);
params->proberesp = NULL;
+#ifdef CONFIG_IEEE80211AX
+ os_free(params->unsol_bcast_probe_resp_tmpl);
+ params->unsol_bcast_probe_resp_tmpl = NULL;
+#endif /* CONFIG_IEEE80211AX */
}
@@ -1505,6 +1524,8 @@ int ieee802_11_set_beacon(struct hostapd_data *hapd)
params.he_bss_color = hapd->iface->conf->he_op.he_bss_color;
params.twt_responder = hostapd_get_he_twt_responder(hapd,
IEEE80211_MODE_AP);
+ params.unsol_bcast_probe_resp_tmpl =
+ hostapd_unsol_bcast_probe_resp(hapd, ¶ms);
#endif /* CONFIG_IEEE80211AX */
hapd->reenable_beacon = 0;
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index e8defaba2118..83270387cf04 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -1508,6 +1508,21 @@ struct wpa_driver_ap_params {
* twt_responder - Whether Target Wait Time responder is enabled
*/
int twt_responder;
+
+ /**
+ * Unsolicited broadcast probe response interval
+ */
+ u32 unsol_bcast_probe_resp_interval;
+
+ /**
+ * Unsolicited broadcast probe response template data
+ */
+ u8 *unsol_bcast_probe_resp_tmpl;
+
+ /**
+ * Unsolicited broadcast probe response template length
+ */
+ size_t unsol_bcast_probe_resp_tmpl_len;
};
struct wpa_driver_mesh_bss_params {
--
2.25.0
More information about the Hostap
mailing list