aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-05-20 07:13:32 -0600
committerLinux Build Service Account <lnxbuild@localhost>2016-05-20 07:13:32 -0600
commitd660a0127fc500e2a9db4177e362ae9f4386e3c4 (patch)
tree0d6511244ef16e4c9c1fe7042dc249c1166e6dcf
parenta8325dbdadd0095eeb2783d66daae3be1b1e5443 (diff)
parent62cd79d473cda37895c02c7a003bcf7c5ea03603 (diff)
downloadandroid_external_wpa_supplicant_8-d660a0127fc500e2a9db4177e362ae9f4386e3c4.tar.gz
android_external_wpa_supplicant_8-d660a0127fc500e2a9db4177e362ae9f4386e3c4.tar.bz2
android_external_wpa_supplicant_8-d660a0127fc500e2a9db4177e362ae9f4386e3c4.zip
Promotion of wlan-service.lnx.1.0-00049.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 681619 Id460ff592648f2afb4ffec373badb7f6004b67f3 hostap: Provide option to disable HT20/40 COEX Change-Id: I54217adae988a2c0a860e4e0d002deeacfd67e22 CRs-Fixed: 681619
-rw-r--r--hostapd/config_file.c8
-rw-r--r--hostapd/hostapd.conf8
-rw-r--r--src/ap/ap_config.h1
-rw-r--r--src/ap/hw_features.c3
-rw-r--r--src/ap/ieee802_11_ht.c3
5 files changed, 23 insertions, 0 deletions
diff --git a/hostapd/config_file.c b/hostapd/config_file.c
index 795fc370..5540059d 100644
--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
@@ -2793,6 +2793,14 @@ static int hostapd_config_fill(struct hostapd_config *conf,
conf->require_ht = atoi(pos);
} else if (os_strcmp(buf, "obss_interval") == 0) {
conf->obss_interval = atoi(pos);
+ } else if (os_strcmp(buf, "ht2040_coex_disable") == 0) {
+ int val = atoi(pos);
+ if (val == 1 || val == 0) {
+ conf->ht2040_coex_disable = val;
+ } else {
+ wpa_printf(MSG_ERROR, "ht2040_coex_disable: "
+ "invalid value: %d", val);
+ }
#endif /* CONFIG_IEEE80211N */
#ifdef CONFIG_IEEE80211AC
} else if (os_strcmp(buf, "ieee80211ac") == 0) {
diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
index 6a4964e6..c9c4d7e3 100644
--- a/hostapd/hostapd.conf
+++ b/hostapd/hostapd.conf
@@ -517,6 +517,14 @@ wmm_ac_vo_acm=0
# no co-existence issues with neighboring devices are found.
#obss_interval=0
+# ht2040_coex_disable: Whether to disable HT20/40 CoEx or not. If this
+# entry is removed, it is same as the value set to 0, i.e., HT20/40
+# CoEx is enabled.
+# 0 = enable (default)
+# 1 = disable
+# Note: HT20/40 CoEx is mandatory for any device supporting HT in the standard.
+#ht2040_coex_disable=0
+
##### IEEE 802.11ac related configuration #####################################
# ieee80211ac: Whether IEEE 802.11ac (VHT) is enabled
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
index 6cf44c7e..71fc06e4 100644
--- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h
@@ -623,6 +623,7 @@ struct hostapd_config {
int secondary_channel;
int require_ht;
int obss_interval;
+ int ht2040_coex_disable;
u32 vht_capab;
int ieee80211ac;
int require_vht;
diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c
index 28324a8e..fcda6ab1 100644
--- a/src/ap/hw_features.c
+++ b/src/ap/hw_features.c
@@ -466,6 +466,9 @@ static int ieee80211n_check_40mhz(struct hostapd_iface *iface)
struct wpa_driver_scan_params params;
int ret;
+ if (iface->conf->ht2040_coex_disable == 1)
+ return 0;
+
if (!iface->conf->secondary_channel)
return 0; /* HT40 not used */
diff --git a/src/ap/ieee802_11_ht.c b/src/ap/ieee802_11_ht.c
index 11fde2a2..764e77b8 100644
--- a/src/ap/ieee802_11_ht.c
+++ b/src/ap/ieee802_11_ht.c
@@ -218,6 +218,9 @@ void hostapd_2040_coex_action(struct hostapd_data *hapd,
HOSTAPD_LEVEL_DEBUG, "hostapd_public_action - action=%d",
mgmt->u.action.u.public_action.action);
+ if (iface->conf->ht2040_coex_disable == 1)
+ return;
+
if (!(iface->conf->ht_capab & HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET))
return;