P2P: Allow configuring CTWindow when working as GO
Read p2p_go_ctwindow (0-127 TUs) from the config file, and pass it to the driver on GO start. Use p2p_go_ctwindow=0 (no CTWindow) by default. Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
This commit is contained in:
parent
c77ffc6daf
commit
0b8bcaa50f
8 changed files with 37 additions and 0 deletions
|
@ -629,6 +629,10 @@ struct hostapd_config {
|
||||||
u8 vht_oper_centr_freq_seg0_idx;
|
u8 vht_oper_centr_freq_seg0_idx;
|
||||||
u8 vht_oper_centr_freq_seg1_idx;
|
u8 vht_oper_centr_freq_seg1_idx;
|
||||||
|
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
u8 p2p_go_ctwindow;
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
#ifdef CONFIG_TESTING_OPTIONS
|
#ifdef CONFIG_TESTING_OPTIONS
|
||||||
double ignore_probe_probability;
|
double ignore_probe_probability;
|
||||||
double ignore_auth_probability;
|
double ignore_auth_probability;
|
||||||
|
|
|
@ -1008,6 +1008,9 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
||||||
params->hessid = hapd->conf->hessid;
|
params->hessid = hapd->conf->hessid;
|
||||||
params->access_network_type = hapd->conf->access_network_type;
|
params->access_network_type = hapd->conf->access_network_type;
|
||||||
params->ap_max_inactivity = hapd->conf->ap_max_inactivity;
|
params->ap_max_inactivity = hapd->conf->ap_max_inactivity;
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
params->p2p_go_ctwindow = hapd->iconf->p2p_go_ctwindow;
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
#ifdef CONFIG_HS20
|
#ifdef CONFIG_HS20
|
||||||
params->disable_dgaf = hapd->conf->disable_dgaf;
|
params->disable_dgaf = hapd->conf->disable_dgaf;
|
||||||
if (hapd->conf->osen) {
|
if (hapd->conf->osen) {
|
||||||
|
|
|
@ -1017,6 +1017,11 @@ struct wpa_driver_ap_params {
|
||||||
*/
|
*/
|
||||||
int ap_max_inactivity;
|
int ap_max_inactivity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ctwindow - Client Traffic Window (in TUs)
|
||||||
|
*/
|
||||||
|
u8 p2p_go_ctwindow;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* smps_mode - SMPS mode
|
* smps_mode - SMPS mode
|
||||||
*
|
*
|
||||||
|
|
|
@ -265,6 +265,17 @@ static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s,
|
||||||
else if (wpa_s->conf->beacon_int)
|
else if (wpa_s->conf->beacon_int)
|
||||||
conf->beacon_int = wpa_s->conf->beacon_int;
|
conf->beacon_int = wpa_s->conf->beacon_int;
|
||||||
|
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
if (wpa_s->conf->p2p_go_ctwindow > conf->beacon_int) {
|
||||||
|
wpa_printf(MSG_INFO,
|
||||||
|
"CTWindow (%d) is bigger than beacon interval (%d) - avoid configuring it",
|
||||||
|
wpa_s->conf->p2p_go_ctwindow, conf->beacon_int);
|
||||||
|
conf->p2p_go_ctwindow = 0;
|
||||||
|
} else {
|
||||||
|
conf->p2p_go_ctwindow = wpa_s->conf->p2p_go_ctwindow;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
if ((bss->wpa & 2) && bss->rsn_pairwise == 0)
|
if ((bss->wpa & 2) && bss->rsn_pairwise == 0)
|
||||||
bss->rsn_pairwise = bss->wpa_pairwise;
|
bss->rsn_pairwise = bss->wpa_pairwise;
|
||||||
bss->wpa_group = wpa_select_ap_group_cipher(bss->wpa, bss->wpa_pairwise,
|
bss->wpa_group = wpa_select_ap_group_cipher(bss->wpa, bss->wpa_pairwise,
|
||||||
|
|
|
@ -3504,6 +3504,7 @@ struct wpa_config * wpa_config_alloc_empty(const char *ctrl_interface,
|
||||||
config->p2p_intra_bss = DEFAULT_P2P_INTRA_BSS;
|
config->p2p_intra_bss = DEFAULT_P2P_INTRA_BSS;
|
||||||
config->p2p_go_max_inactivity = DEFAULT_P2P_GO_MAX_INACTIVITY;
|
config->p2p_go_max_inactivity = DEFAULT_P2P_GO_MAX_INACTIVITY;
|
||||||
config->p2p_optimize_listen_chan = DEFAULT_P2P_OPTIMIZE_LISTEN_CHAN;
|
config->p2p_optimize_listen_chan = DEFAULT_P2P_OPTIMIZE_LISTEN_CHAN;
|
||||||
|
config->p2p_go_ctwindow = DEFAULT_P2P_GO_CTWINDOW;
|
||||||
config->bss_max_count = DEFAULT_BSS_MAX_COUNT;
|
config->bss_max_count = DEFAULT_BSS_MAX_COUNT;
|
||||||
config->bss_expiration_age = DEFAULT_BSS_EXPIRATION_AGE;
|
config->bss_expiration_age = DEFAULT_BSS_EXPIRATION_AGE;
|
||||||
config->bss_expiration_scan_count = DEFAULT_BSS_EXPIRATION_SCAN_COUNT;
|
config->bss_expiration_scan_count = DEFAULT_BSS_EXPIRATION_SCAN_COUNT;
|
||||||
|
@ -4136,6 +4137,7 @@ static const struct global_parse_data global_fields[] = {
|
||||||
{ INT(p2p_go_ht40), 0 },
|
{ INT(p2p_go_ht40), 0 },
|
||||||
{ INT(p2p_go_vht), 0 },
|
{ INT(p2p_go_vht), 0 },
|
||||||
{ INT(p2p_disabled), 0 },
|
{ INT(p2p_disabled), 0 },
|
||||||
|
{ INT_RANGE(p2p_go_ctwindow, 0, 127), 0 },
|
||||||
{ INT(p2p_no_group_iface), 0 },
|
{ INT(p2p_no_group_iface), 0 },
|
||||||
{ INT_RANGE(p2p_ignore_shared_freq, 0, 1), 0 },
|
{ INT_RANGE(p2p_ignore_shared_freq, 0, 1), 0 },
|
||||||
{ IPV4(ip_addr_go), 0 },
|
{ IPV4(ip_addr_go), 0 },
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#define DEFAULT_RAND_ADDR_LIFETIME 60
|
#define DEFAULT_RAND_ADDR_LIFETIME 60
|
||||||
#define DEFAULT_KEY_MGMT_OFFLOAD 1
|
#define DEFAULT_KEY_MGMT_OFFLOAD 1
|
||||||
#define DEFAULT_CERT_IN_CB 1
|
#define DEFAULT_CERT_IN_CB 1
|
||||||
|
#define DEFAULT_P2P_GO_CTWINDOW 0
|
||||||
|
|
||||||
#include "config_ssid.h"
|
#include "config_ssid.h"
|
||||||
#include "wps/wps.h"
|
#include "wps/wps.h"
|
||||||
|
@ -941,6 +942,14 @@ struct wpa_config {
|
||||||
*/
|
*/
|
||||||
int p2p_go_vht;
|
int p2p_go_vht;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* p2p_go_ctwindow - CTWindow to use when operating as GO
|
||||||
|
*
|
||||||
|
* By default: 0 (no CTWindow). Values 0-127 can be used to indicate
|
||||||
|
* the length of the CTWindow in TUs.
|
||||||
|
*/
|
||||||
|
int p2p_go_ctwindow;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* p2p_disabled - Whether P2P operations are disabled for this interface
|
* p2p_disabled - Whether P2P operations are disabled for this interface
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1115,6 +1115,8 @@ static void wpa_config_write_global(FILE *f, struct wpa_config *config)
|
||||||
fprintf(f, "p2p_go_ht40=%u\n", config->p2p_go_ht40);
|
fprintf(f, "p2p_go_ht40=%u\n", config->p2p_go_ht40);
|
||||||
if (config->p2p_go_vht)
|
if (config->p2p_go_vht)
|
||||||
fprintf(f, "p2p_go_vht=%u\n", config->p2p_go_vht);
|
fprintf(f, "p2p_go_vht=%u\n", config->p2p_go_vht);
|
||||||
|
if (config->p2p_go_ctwindow != DEFAULT_P2P_GO_CTWINDOW)
|
||||||
|
fprintf(f, "p2p_go_ctwindow=%u\n", config->p2p_go_ctwindow);
|
||||||
if (config->p2p_disabled)
|
if (config->p2p_disabled)
|
||||||
fprintf(f, "p2p_disabled=%u\n", config->p2p_disabled);
|
fprintf(f, "p2p_disabled=%u\n", config->p2p_disabled);
|
||||||
if (config->p2p_no_group_iface)
|
if (config->p2p_no_group_iface)
|
||||||
|
|
|
@ -1852,6 +1852,7 @@ static void wpas_p2p_clone_config(struct wpa_supplicant *dst,
|
||||||
d->ignore_old_scan_res = s->ignore_old_scan_res;
|
d->ignore_old_scan_res = s->ignore_old_scan_res;
|
||||||
d->beacon_int = s->beacon_int;
|
d->beacon_int = s->beacon_int;
|
||||||
d->dtim_period = s->dtim_period;
|
d->dtim_period = s->dtim_period;
|
||||||
|
d->p2p_go_ctwindow = s->p2p_go_ctwindow;
|
||||||
d->disassoc_low_ack = s->disassoc_low_ack;
|
d->disassoc_low_ack = s->disassoc_low_ack;
|
||||||
d->disable_scan_offload = s->disable_scan_offload;
|
d->disable_scan_offload = s->disable_scan_offload;
|
||||||
d->passive_scan = s->passive_scan;
|
d->passive_scan = s->passive_scan;
|
||||||
|
|
Loading…
Reference in a new issue