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:
parent
041f6cea94
commit
e5d15e2254
10 changed files with 42 additions and 0 deletions
|
@ -1251,6 +1251,11 @@ struct wpa_driver_associate_params {
|
||||||
* 2 = both hunting-and-pecking loop and hash-to-element enabled
|
* 2 = both hunting-and-pecking loop and hash-to-element enabled
|
||||||
*/
|
*/
|
||||||
int sae_pwe;
|
int sae_pwe;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* disable_eht - Disable EHT for this connection
|
||||||
|
*/
|
||||||
|
int disable_eht;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum hide_ssid {
|
enum hide_ssid {
|
||||||
|
|
|
@ -6059,6 +6059,12 @@ static int nl80211_ht_vht_overrides(struct nl_msg *msg,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_HE_OVERRIDES */
|
#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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2664,6 +2664,7 @@ static const struct parse_data ssid_fields[] = {
|
||||||
{ INT_RANGE(beacon_prot, 0, 1) },
|
{ INT_RANGE(beacon_prot, 0, 1) },
|
||||||
{ INT_RANGE(transition_disable, 0, 255) },
|
{ INT_RANGE(transition_disable, 0, 255) },
|
||||||
{ INT_RANGE(sae_pk, 0, 2) },
|
{ INT_RANGE(sae_pk, 0, 2) },
|
||||||
|
{ INT_RANGE(disable_eht, 0, 1)},
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef OFFSET
|
#undef OFFSET
|
||||||
|
|
|
@ -880,6 +880,7 @@ static void wpa_config_write_network(FILE *f, struct wpa_ssid *ssid)
|
||||||
#ifdef CONFIG_HE_OVERRIDES
|
#ifdef CONFIG_HE_OVERRIDES
|
||||||
INT(disable_he);
|
INT(disable_he);
|
||||||
#endif /* CONFIG_HE_OVERRIDES */
|
#endif /* CONFIG_HE_OVERRIDES */
|
||||||
|
INT(disable_eht);
|
||||||
|
|
||||||
#undef STR
|
#undef STR
|
||||||
#undef INT
|
#undef INT
|
||||||
|
|
|
@ -1192,6 +1192,14 @@ struct wpa_ssid {
|
||||||
* 2 = both hunting-and-pecking loop and hash-to-element enabled
|
* 2 = both hunting-and-pecking loop and hash-to-element enabled
|
||||||
*/
|
*/
|
||||||
int sae_pwe;
|
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 */
|
#endif /* CONFIG_SSID_H */
|
||||||
|
|
|
@ -2027,6 +2027,7 @@ mscs_fail:
|
||||||
#ifdef CONFIG_HE_OVERRIDES
|
#ifdef CONFIG_HE_OVERRIDES
|
||||||
wpa_supplicant_apply_he_overrides(wpa_s, ssid, ¶ms);
|
wpa_supplicant_apply_he_overrides(wpa_s, ssid, ¶ms);
|
||||||
#endif /* CONFIG_HE_OVERRIDES */
|
#endif /* CONFIG_HE_OVERRIDES */
|
||||||
|
wpa_supplicant_apply_eht_overrides(wpa_s, ssid, ¶ms);
|
||||||
#ifdef CONFIG_IEEE80211R
|
#ifdef CONFIG_IEEE80211R
|
||||||
if (auth_type == WLAN_AUTH_FT && wpa_s->sme.ft_ies &&
|
if (auth_type == WLAN_AUTH_FT && wpa_s->sme.ft_ies &&
|
||||||
get_ie(wpa_s->sme.ft_ies, wpa_s->sme.ft_ies_len,
|
get_ie(wpa_s->sme.ft_ies, wpa_s->sme.ft_ies_len,
|
||||||
|
|
|
@ -1479,6 +1479,7 @@ static const char *network_fields[] = {
|
||||||
#ifdef CONFIG_HE_OVERRIDES
|
#ifdef CONFIG_HE_OVERRIDES
|
||||||
"disable_he",
|
"disable_he",
|
||||||
#endif /* CONFIG_HE_OVERRIDES */
|
#endif /* CONFIG_HE_OVERRIDES */
|
||||||
|
"disable_eht",
|
||||||
"ap_max_inactivity", "dtim_period", "beacon_int",
|
"ap_max_inactivity", "dtim_period", "beacon_int",
|
||||||
#ifdef CONFIG_MACSEC
|
#ifdef CONFIG_MACSEC
|
||||||
"macsec_policy",
|
"macsec_policy",
|
||||||
|
|
|
@ -4119,6 +4119,7 @@ static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit)
|
||||||
#ifdef CONFIG_HE_OVERRIDES
|
#ifdef CONFIG_HE_OVERRIDES
|
||||||
wpa_supplicant_apply_he_overrides(wpa_s, ssid, ¶ms);
|
wpa_supplicant_apply_he_overrides(wpa_s, ssid, ¶ms);
|
||||||
#endif /* CONFIG_HE_OVERRIDES */
|
#endif /* CONFIG_HE_OVERRIDES */
|
||||||
|
wpa_supplicant_apply_eht_overrides(wpa_s, ssid, ¶ms);
|
||||||
|
|
||||||
#ifdef CONFIG_P2P
|
#ifdef CONFIG_P2P
|
||||||
/*
|
/*
|
||||||
|
@ -5915,6 +5916,17 @@ void wpa_supplicant_apply_he_overrides(
|
||||||
#endif /* CONFIG_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)
|
static int pcsc_reader_init(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
#ifdef PCSC_FUNCS
|
#ifdef PCSC_FUNCS
|
||||||
|
|
|
@ -1627,6 +1627,10 @@ fast_reauth=1
|
||||||
# 2: MCS 0-9
|
# 2: MCS 0-9
|
||||||
# 3: not supported
|
# 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
|
# multi_ap_backhaul_sta: Multi-AP backhaul STA functionality
|
||||||
# 0 = normal STA (default)
|
# 0 = normal STA (default)
|
||||||
# 1 = backhaul STA
|
# 1 = backhaul STA
|
||||||
|
|
|
@ -1584,6 +1584,9 @@ void wpa_supplicant_apply_vht_overrides(
|
||||||
void wpa_supplicant_apply_he_overrides(
|
void wpa_supplicant_apply_he_overrides(
|
||||||
struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
|
struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid,
|
||||||
struct wpa_driver_associate_params *params);
|
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_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid);
|
||||||
int wpa_supplicant_set_wpa_none_key(struct wpa_supplicant *wpa_s,
|
int wpa_supplicant_set_wpa_none_key(struct wpa_supplicant *wpa_s,
|
||||||
|
|
Loading…
Add table
Reference in a new issue