EHT: Allow EHT to be disabled using disable_eht=1 in wpa_supplicant

This is similar to the previously added disable_ht/vht/he parameters.

Signed-off-by: Jouni Malinen <quic_jouni@quicinc.com>
This commit is contained in:
Jouni Malinen 2022-10-17 11:12:17 +03:00 committed by Jouni Malinen
parent 041f6cea94
commit e5d15e2254
10 changed files with 42 additions and 0 deletions

View file

@ -1251,6 +1251,11 @@ struct wpa_driver_associate_params {
* 2 = both hunting-and-pecking loop and hash-to-element enabled
*/
int sae_pwe;
/**
* disable_eht - Disable EHT for this connection
*/
int disable_eht;
};
enum hide_ssid {

View file

@ -6059,6 +6059,12 @@ static int nl80211_ht_vht_overrides(struct nl_msg *msg,
}
#endif /* CONFIG_HE_OVERRIDES */
if (params->disable_eht) {
wpa_printf(MSG_DEBUG, " * EHT disabled");
if (nla_put_flag(msg, NL80211_ATTR_DISABLE_EHT))
return -1;
}
return 0;
}

View file

@ -2664,6 +2664,7 @@ static const struct parse_data ssid_fields[] = {
{ INT_RANGE(beacon_prot, 0, 1) },
{ INT_RANGE(transition_disable, 0, 255) },
{ INT_RANGE(sae_pk, 0, 2) },
{ INT_RANGE(disable_eht, 0, 1)},
};
#undef OFFSET

View file

@ -880,6 +880,7 @@ static void wpa_config_write_network(FILE *f, struct wpa_ssid *ssid)
#ifdef CONFIG_HE_OVERRIDES
INT(disable_he);
#endif /* CONFIG_HE_OVERRIDES */
INT(disable_eht);
#undef STR
#undef INT

View file

@ -1192,6 +1192,14 @@ struct wpa_ssid {
* 2 = both hunting-and-pecking loop and hash-to-element enabled
*/
int sae_pwe;
/**
* disable_eht - Disable EHT (IEEE 802.11be) for this network
*
* By default, use it if it is available, but this can be configured
* to 1 to have it disabled.
*/
int disable_eht;
};
#endif /* CONFIG_SSID_H */

View file

@ -2027,6 +2027,7 @@ mscs_fail:
#ifdef CONFIG_HE_OVERRIDES
wpa_supplicant_apply_he_overrides(wpa_s, ssid, &params);
#endif /* CONFIG_HE_OVERRIDES */
wpa_supplicant_apply_eht_overrides(wpa_s, ssid, &params);
#ifdef CONFIG_IEEE80211R
if (auth_type == WLAN_AUTH_FT && wpa_s->sme.ft_ies &&
get_ie(wpa_s->sme.ft_ies, wpa_s->sme.ft_ies_len,

View file

@ -1479,6 +1479,7 @@ static const char *network_fields[] = {
#ifdef CONFIG_HE_OVERRIDES
"disable_he",
#endif /* CONFIG_HE_OVERRIDES */
"disable_eht",
"ap_max_inactivity", "dtim_period", "beacon_int",
#ifdef CONFIG_MACSEC
"macsec_policy",

View file

@ -4119,6 +4119,7 @@ static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit)
#ifdef CONFIG_HE_OVERRIDES
wpa_supplicant_apply_he_overrides(wpa_s, ssid, &params);
#endif /* CONFIG_HE_OVERRIDES */
wpa_supplicant_apply_eht_overrides(wpa_s, ssid, &params);
#ifdef CONFIG_P2P
/*
@ -5915,6 +5916,17 @@ void wpa_supplicant_apply_he_overrides(
#endif /* CONFIG_HE_OVERRIDES */
void wpa_supplicant_apply_eht_overrides(
struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
struct wpa_driver_associate_params *params)
{
if (!ssid)
return;
params->disable_eht = ssid->disable_eht;
}
static int pcsc_reader_init(struct wpa_supplicant *wpa_s)
{
#ifdef PCSC_FUNCS

View file

@ -1627,6 +1627,10 @@ fast_reauth=1
# 2: MCS 0-9
# 3: not supported
# disable_eht: Whether EHT should be disabled.
# 0 = EHT enabled (if supported) (default)
# 1 = EHT disabled
# multi_ap_backhaul_sta: Multi-AP backhaul STA functionality
# 0 = normal STA (default)
# 1 = backhaul STA

View file

@ -1584,6 +1584,9 @@ void wpa_supplicant_apply_vht_overrides(
void wpa_supplicant_apply_he_overrides(
struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
struct wpa_driver_associate_params *params);
void wpa_supplicant_apply_eht_overrides(
struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
struct wpa_driver_associate_params *params);
int wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid);
int wpa_supplicant_set_wpa_none_key(struct wpa_supplicant *wpa_s,