diff mbox

[3/3] wpa_supplicant: ap: allow disabling HT without HT overrides

Message ID 1488903659-8807-3-git-send-email-andrei.otcheretianski@intel.com
State Accepted
Headers show

Commit Message

Andrei Otcheretianski March 7, 2017, 4:20 p.m. UTC
From: Johannes Berg <johannes.berg@intel.com>

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 <johannes.berg@intel.com>
---
 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 mbox

Patch

diff --git a/wpa_supplicant/ap.c b/wpa_supplicant/ap.c
index 494ae67..568a29c 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 319873f..027d232 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 84ea075..01f003a 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(ht);
 	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 a2482d4..908b641 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 f5e7cda..5f3dcfe 100644
--- a/wpa_supplicant/wpa_cli.c
+++ b/wpa_supplicant/wpa_cli.c
@@ -1371,7 +1371,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",