From: Johannes Berg Date: Tue, 7 Mar 2017 16:20:59 +0000 (+0200) Subject: wpa_supplicant: Allow disabling HT in AP mode without HT overrides X-Git-Tag: hostap_2_7~1465 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b07ff9cb04373ff14d75854c5ae9da319fc2e893;p=thirdparty%2Fhostap.git 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 --- 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",