P2P: Add a conf parameter to start a GO as HT40 if allowed
When specified in the conf file this parameter will make all invocations of p2p_group_add, p2p_connect, and p2p_invite 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>
This commit is contained in:
parent
369c8d7bcd
commit
a93a15bbfd
4 changed files with 16 additions and 3 deletions
|
@ -3006,6 +3006,7 @@ static const struct global_parse_data global_fields[] = {
|
||||||
{ INT_RANGE(p2p_intra_bss, 0, 1), CFG_CHANGED_P2P_INTRA_BSS },
|
{ INT_RANGE(p2p_intra_bss, 0, 1), CFG_CHANGED_P2P_INTRA_BSS },
|
||||||
{ INT(p2p_group_idle), 0 },
|
{ INT(p2p_group_idle), 0 },
|
||||||
{ FUNC(p2p_pref_chan), CFG_CHANGED_P2P_PREF_CHAN },
|
{ FUNC(p2p_pref_chan), CFG_CHANGED_P2P_PREF_CHAN },
|
||||||
|
{ INT(p2p_go_ht40), 0 },
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
{ FUNC(country), CFG_CHANGED_COUNTRY },
|
{ FUNC(country), CFG_CHANGED_COUNTRY },
|
||||||
{ INT(bss_max_count), 0 },
|
{ INT(bss_max_count), 0 },
|
||||||
|
|
|
@ -747,6 +747,16 @@ struct wpa_config {
|
||||||
* matching network block
|
* matching network block
|
||||||
*/
|
*/
|
||||||
int auto_interworking;
|
int auto_interworking;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* p2p_go_ht40 - Default mode for HT40 enable when operating as GO.
|
||||||
|
*
|
||||||
|
* This will take effect for p2p_group_add, p2p_connect, and p2p_invite.
|
||||||
|
* 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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -868,6 +868,8 @@ static void wpa_config_write_global(FILE *f, struct wpa_config *config)
|
||||||
}
|
}
|
||||||
fprintf(f, "\n");
|
fprintf(f, "\n");
|
||||||
}
|
}
|
||||||
|
if (config->p2p_go_ht40)
|
||||||
|
fprintf(f, "p2p_go_ht40=%u\n", config->p2p_go_ht40);
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
if (config->country[0] && config->country[1]) {
|
if (config->country[0] && config->country[1]) {
|
||||||
fprintf(f, "country=%c%c\n",
|
fprintf(f, "country=%c%c\n",
|
||||||
|
|
|
@ -3241,7 +3241,7 @@ static int p2p_ctrl_connect(struct wpa_supplicant *wpa_s, char *cmd,
|
||||||
auth = os_strstr(pos, " auth") != NULL;
|
auth = os_strstr(pos, " auth") != NULL;
|
||||||
automatic = os_strstr(pos, " auto") != NULL;
|
automatic = os_strstr(pos, " auto") != NULL;
|
||||||
pd = os_strstr(pos, " provdisc") != 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=");
|
pos2 = os_strstr(pos, " go_intent=");
|
||||||
if (pos2) {
|
if (pos2) {
|
||||||
|
@ -3672,7 +3672,7 @@ static int p2p_ctrl_invite_persistent(struct wpa_supplicant *wpa_s, char *cmd)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ht40 = os_strstr(cmd, " ht40") != NULL;
|
ht40 = (os_strstr(cmd, " ht40") != NULL) || wpa_s->conf->p2p_go_ht40;
|
||||||
|
|
||||||
return wpas_p2p_invite(wpa_s, _peer, ssid, NULL, freq, ht40);
|
return wpas_p2p_invite(wpa_s, _peer, ssid, NULL, freq, ht40);
|
||||||
}
|
}
|
||||||
|
@ -3748,7 +3748,7 @@ static int p2p_ctrl_group_add(struct wpa_supplicant *wpa_s, char *cmd)
|
||||||
if (pos)
|
if (pos)
|
||||||
freq = atoi(pos + 5);
|
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)
|
if (os_strncmp(cmd, "persistent=", 11) == 0)
|
||||||
return p2p_ctrl_group_add_persistent(wpa_s, cmd + 11, freq,
|
return p2p_ctrl_group_add_persistent(wpa_s, cmd + 11, freq,
|
||||||
|
|
Loading…
Reference in a new issue