Patchwork [1/3] P2P: add a conf parameter to start a GO as HT40 if allowed

login
register
mail settings
Submitter Arik Nemtsov
Date Sept. 4, 2012, 5:52 p.m.
Message ID <1346781171-16854-1-git-send-email-arik@wizery.com>
Download mbox | patch
Permalink /patch/181646/
State Accepted
Commit a93a15bbfd43e70393974da81deb12cdb4e85ebd
Headers show

Comments

Arik Nemtsov - Sept. 4, 2012, 5:52 p.m.
When specified in the conf file this parameter will make all
invocations of p2p_group_add and p2p_connect behave as if "ht40"
has been specified on the command line.
This shouldn't do harm since regulatory constraints and driver
capabilities are consulted anyway before starting HT40 mode.

Signed-hostap: Arik Nemtsov <arik@wizery.com>
---
 wpa_supplicant/config.c      |    1 +
 wpa_supplicant/config.h      |   10 ++++++++++
 wpa_supplicant/config_file.c |    2 ++
 wpa_supplicant/ctrl_iface.c  |    4 ++--
 4 files changed, 15 insertions(+), 2 deletions(-)
Jouni Malinen - Sept. 30, 2012, 5:37 p.m.
On Tue, Sep 04, 2012 at 08:52:49PM +0300, Arik Nemtsov wrote:
> When specified in the conf file this parameter will make all
> invocations of p2p_group_add and p2p_connect behave as if "ht40"
> has been specified on the command line.
> This shouldn't do harm since regulatory constraints and driver
> capabilities are consulted anyway before starting HT40 mode.

Thanks, applied (with p2p_invite added to that list since it has this
ht40 parameter, too).

Patch

diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
index be21029..3f64b03 100644
--- a/wpa_supplicant/config.c
+++ b/wpa_supplicant/config.c
@@ -3000,6 +3000,7 @@  static const struct global_parse_data global_fields[] = {
 	{ INT_RANGE(p2p_intra_bss, 0, 1), CFG_CHANGED_P2P_INTRA_BSS },
 	{ INT(p2p_group_idle), 0 },
 	{ FUNC(p2p_pref_chan), CFG_CHANGED_P2P_PREF_CHAN },
+	{ INT(p2p_go_ht40), 0 },
 #endif /* CONFIG_P2P */
 	{ FUNC(country), CFG_CHANGED_COUNTRY },
 	{ INT(bss_max_count), 0 },
diff --git a/wpa_supplicant/config.h b/wpa_supplicant/config.h
index b889ab8..9cf5468 100644
--- a/wpa_supplicant/config.h
+++ b/wpa_supplicant/config.h
@@ -747,6 +747,16 @@  struct wpa_config {
 	 *     matching network block
 	 */
 	int auto_interworking;
+
+	/**
+	 * p2p_go_ht40 - Default mode for HT40 enable when operating as GO.
+	 *
+	 * This will take effect for p2p_group_add and p2p_connect. Note that
+	 * regulatory constraints and driver capabilities are consulted anyway,
+	 * so setting it to 1 can't do real harm
+	 * By default: 0 (disabled)
+	 */
+	int p2p_go_ht40;
 };
 
 
diff --git a/wpa_supplicant/config_file.c b/wpa_supplicant/config_file.c
index 531957a..bd9c17f 100644
--- a/wpa_supplicant/config_file.c
+++ b/wpa_supplicant/config_file.c
@@ -868,6 +868,8 @@  static void wpa_config_write_global(FILE *f, struct wpa_config *config)
 		}
 		fprintf(f, "\n");
 	}
+	if (config->p2p_go_ht40)
+		fprintf(f, "p2p_go_ht40=%u\n", config->p2p_go_ht40);
 #endif /* CONFIG_P2P */
 	if (config->country[0] && config->country[1]) {
 		fprintf(f, "country=%c%c\n",
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index ba2edff..c9c6826 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -3117,7 +3117,7 @@  static int p2p_ctrl_connect(struct wpa_supplicant *wpa_s, char *cmd,
 	auth = os_strstr(pos, " auth") != NULL;
 	automatic = os_strstr(pos, " auto") != NULL;
 	pd = os_strstr(pos, " provdisc") != NULL;
-	ht40 = os_strstr(pos, " ht40") != NULL;
+	ht40 = (os_strstr(cmd, "ht40") != NULL) || wpa_s->conf->p2p_go_ht40;
 
 	pos2 = os_strstr(pos, " go_intent=");
 	if (pos2) {
@@ -3624,7 +3624,7 @@  static int p2p_ctrl_group_add(struct wpa_supplicant *wpa_s, char *cmd)
 	if (pos)
 		freq = atoi(pos + 5);
 
-	ht40 = os_strstr(cmd, "ht40") != NULL;
+	ht40 = (os_strstr(cmd, "ht40") != NULL) || wpa_s->conf->p2p_go_ht40;
 
 	if (os_strncmp(cmd, "persistent=", 11) == 0)
 		return p2p_ctrl_group_add_persistent(wpa_s, cmd + 11, freq,