From b07ff9cb04373ff14d75854c5ae9da319fc2e893 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Tue, 7 Mar 2017 18:20:59 +0200 Subject: [PATCH] wpa_supplicant: Allow disabling HT in AP mode without HT overrides Since VHT can be toggled explicitly, also expose being able to disable HT explicitly, without requiring HT overrides. Continue making it default to enabled though. Signed-off-by: Johannes Berg --- wpa_supplicant/ap.c | 7 +++++-- wpa_supplicant/config.c | 2 ++ wpa_supplicant/config_file.c | 1 + wpa_supplicant/config_ssid.h | 1 + wpa_supplicant/wpa_cli.c | 2 +- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/wpa_supplicant/ap.c b/wpa_supplicant/ap.c index d6aac3e0e..2866c043a 100644 --- a/wpa_supplicant/ap.c +++ b/wpa_supplicant/ap.c @@ -145,12 +145,15 @@ int wpa_supplicant_conf_ap_ht(struct wpa_supplicant *wpa_s, } #ifdef CONFIG_HT_OVERRIDES - if (ssid->disable_ht) { + if (ssid->disable_ht) + ssid->ht = 0; +#endif /* CONFIG_HT_OVERRIDES */ + + if (!ssid->ht) { conf->ieee80211n = 0; conf->ht_capab = 0; no_ht = 1; } -#endif /* CONFIG_HT_OVERRIDES */ if (!no_ht && mode && mode->ht_capab) { conf->ieee80211n = 1; diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c index 95971ea99..676b618b2 100644 --- a/wpa_supplicant/config.c +++ b/wpa_supplicant/config.c @@ -1995,6 +1995,7 @@ static const struct parse_data ssid_fields[] = { { FUNC(auth_alg) }, { FUNC(scan_freq) }, { FUNC(freq_list) }, + { INT_RANGE(ht, 0, 1) }, { INT_RANGE(vht, 0, 1) }, { INT_RANGE(ht40, -1, 1) }, { INT_RANGE(max_oper_chwidth, VHT_CHANWIDTH_USE_HT, @@ -2580,6 +2581,7 @@ void wpa_config_set_network_defaults(struct wpa_ssid *ssid) ssid->group_cipher = DEFAULT_GROUP; ssid->key_mgmt = DEFAULT_KEY_MGMT; ssid->bg_scan_period = DEFAULT_BG_SCAN_PERIOD; + ssid->ht = 1; #ifdef IEEE8021X_EAPOL ssid->eapol_flags = DEFAULT_EAPOL_FLAGS; ssid->eap_workaround = DEFAULT_EAP_WORKAROUND; diff --git a/wpa_supplicant/config_file.c b/wpa_supplicant/config_file.c index e5808612e..72e0a55eb 100644 --- a/wpa_supplicant/config_file.c +++ b/wpa_supplicant/config_file.c @@ -793,6 +793,7 @@ static void wpa_config_write_network(FILE *f, struct wpa_ssid *ssid) INT(peerkey); INT(mixed_cell); INT(vht); + INT_DEF(ht, 1); INT(ht40); INT(max_oper_chwidth); INT(vht_center_freq1); diff --git a/wpa_supplicant/config_ssid.h b/wpa_supplicant/config_ssid.h index a2482d4d6..908b6415d 100644 --- a/wpa_supplicant/config_ssid.h +++ b/wpa_supplicant/config_ssid.h @@ -470,6 +470,7 @@ struct wpa_ssid { int dot11MeshConfirmTimeout; /* msec */ int dot11MeshHoldingTimeout; /* msec */ + int ht; int ht40; int vht; diff --git a/wpa_supplicant/wpa_cli.c b/wpa_supplicant/wpa_cli.c index 8ef7f4673..c5091b5de 100644 --- a/wpa_supplicant/wpa_cli.c +++ b/wpa_supplicant/wpa_cli.c @@ -1372,7 +1372,7 @@ static const char *network_fields[] = { "bssid_whitelist", "psk", "proto", "key_mgmt", "bg_scan_period", "pairwise", "group", "auth_alg", "scan_freq", "freq_list", "max_oper_chwidth", "ht40", "vht", "vht_center_freq1", - "vht_center_freq2", + "vht_center_freq2", "ht", #ifdef IEEE8021X_EAPOL "eap", "identity", "anonymous_identity", "password", "ca_cert", "ca_path", "client_cert", "private_key", "private_key_passwd",