AP: Unsolicited broadcast Probe Response configuration
Add hostapd configuration options for unsolicited broadcast Probe Response transmission for in-band discovery in 6 GHz. Maximum allowed packet interval is 20 TUs (IEEE P802.11ax/D8.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@codeaurora.org>
This commit is contained in:
parent
11736a1a78
commit
024b4b2a29
5 changed files with 58 additions and 0 deletions
|
@ -3617,6 +3617,16 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
||||||
conf->he_6ghz_rx_ant_pat = atoi(pos);
|
conf->he_6ghz_rx_ant_pat = atoi(pos);
|
||||||
} else if (os_strcmp(buf, "he_6ghz_tx_ant_pat") == 0) {
|
} else if (os_strcmp(buf, "he_6ghz_tx_ant_pat") == 0) {
|
||||||
conf->he_6ghz_tx_ant_pat = atoi(pos);
|
conf->he_6ghz_tx_ant_pat = atoi(pos);
|
||||||
|
} else if (os_strcmp(buf, "unsol_bcast_probe_resp_interval") == 0) {
|
||||||
|
int val = atoi(pos);
|
||||||
|
|
||||||
|
if (val < 0 || val > 20) {
|
||||||
|
wpa_printf(MSG_ERROR,
|
||||||
|
"Line %d: invalid unsol_bcast_probe_resp_interval value",
|
||||||
|
line);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
bss->unsol_bcast_probe_resp_interval = val;
|
||||||
#endif /* CONFIG_IEEE80211AX */
|
#endif /* CONFIG_IEEE80211AX */
|
||||||
} else if (os_strcmp(buf, "max_listen_interval") == 0) {
|
} else if (os_strcmp(buf, "max_listen_interval") == 0) {
|
||||||
bss->max_listen_interval = atoi(pos);
|
bss->max_listen_interval = atoi(pos);
|
||||||
|
|
|
@ -933,6 +933,14 @@ wmm_ac_vo_acm=0
|
||||||
# (default)
|
# (default)
|
||||||
#he_6ghz_tx_ant_pat=1
|
#he_6ghz_tx_ant_pat=1
|
||||||
|
|
||||||
|
# Unsolicited broadcast Probe Response transmission settings
|
||||||
|
# This is for the 6 GHz band only. If the interval is set to a non-zero value,
|
||||||
|
# the AP schedules unsolicited broadcast Probe Response frames to be
|
||||||
|
# transmitted for in-band discovery. Refer to
|
||||||
|
# IEEE P802.11ax/D8.0 26.17.2.3.2, AP behavior for fast passive scanning.
|
||||||
|
# Valid range: 0..20 TUs; default is 0 (disabled)
|
||||||
|
#unsol_bcast_probe_resp_interval=0
|
||||||
|
|
||||||
##### IEEE 802.1X-2004 related configuration ##################################
|
##### IEEE 802.1X-2004 related configuration ##################################
|
||||||
|
|
||||||
# Require IEEE 802.1X authorization
|
# Require IEEE 802.1X authorization
|
||||||
|
|
|
@ -878,6 +878,8 @@ struct hostapd_bss_config {
|
||||||
|
|
||||||
int *pasn_groups;
|
int *pasn_groups;
|
||||||
#endif /* CONFIG_PASN */
|
#endif /* CONFIG_PASN */
|
||||||
|
|
||||||
|
unsigned int unsol_bcast_probe_resp_interval;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1124,6 +1124,23 @@ static u8 * hostapd_probe_resp_offloads(struct hostapd_data *hapd,
|
||||||
#endif /* NEED_AP_MLME */
|
#endif /* NEED_AP_MLME */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_IEEE80211AX
|
||||||
|
/* Unsolicited broadcast Probe Response transmission, 6 GHz 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)
|
void sta_track_del(struct hostapd_sta_info *info)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_TAXONOMY
|
#ifdef CONFIG_TAXONOMY
|
||||||
|
@ -1719,6 +1736,10 @@ void ieee802_11_free_ap_params(struct wpa_driver_ap_params *params)
|
||||||
os_free(params->fd_frame_tmpl);
|
os_free(params->fd_frame_tmpl);
|
||||||
params->fd_frame_tmpl = NULL;
|
params->fd_frame_tmpl = NULL;
|
||||||
#endif /* CONFIG_FILS */
|
#endif /* CONFIG_FILS */
|
||||||
|
#ifdef CONFIG_IEEE80211AX
|
||||||
|
os_free(params->unsol_bcast_probe_resp_tmpl);
|
||||||
|
params->unsol_bcast_probe_resp_tmpl = NULL;
|
||||||
|
#endif /* CONFIG_IEEE80211AX */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1769,6 +1790,8 @@ int ieee802_11_set_beacon(struct hostapd_data *hapd)
|
||||||
params.he_bss_color = hapd->iface->conf->he_op.he_bss_color;
|
params.he_bss_color = hapd->iface->conf->he_op.he_bss_color;
|
||||||
params.twt_responder = hostapd_get_he_twt_responder(hapd,
|
params.twt_responder = hostapd_get_he_twt_responder(hapd,
|
||||||
IEEE80211_MODE_AP);
|
IEEE80211_MODE_AP);
|
||||||
|
params.unsol_bcast_probe_resp_tmpl =
|
||||||
|
hostapd_unsol_bcast_probe_resp(hapd, ¶ms);
|
||||||
#endif /* CONFIG_IEEE80211AX */
|
#endif /* CONFIG_IEEE80211AX */
|
||||||
hapd->reenable_beacon = 0;
|
hapd->reenable_beacon = 0;
|
||||||
#ifdef CONFIG_SAE
|
#ifdef CONFIG_SAE
|
||||||
|
|
|
@ -1561,6 +1561,21 @@ struct wpa_driver_ap_params {
|
||||||
* FILS Discovery frame template length
|
* FILS Discovery frame template length
|
||||||
*/
|
*/
|
||||||
size_t fd_frame_tmpl_len;
|
size_t fd_frame_tmpl_len;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unsolicited broadcast Probe Response interval in TUs
|
||||||
|
*/
|
||||||
|
unsigned int 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 {
|
struct wpa_driver_mesh_bss_params {
|
||||||
|
|
Loading…
Reference in a new issue