P2P: Optimize scan timeouts for group formation
This commit is contained in:
parent
5f3a6aa0a4
commit
0817de904e
2 changed files with 40 additions and 0 deletions
|
@ -856,6 +856,16 @@ static void wpa_supplicant_event_scan_results(struct wpa_supplicant *wpa_s,
|
||||||
} else {
|
} else {
|
||||||
int timeout_sec = 5;
|
int timeout_sec = 5;
|
||||||
int timeout_usec = 0;
|
int timeout_usec = 0;
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
if (wpa_s->p2p_in_provisioning) {
|
||||||
|
/*
|
||||||
|
* Use shorter wait during P2P Provisioning
|
||||||
|
* state to speed up group formation.
|
||||||
|
*/
|
||||||
|
timeout_sec = 0;
|
||||||
|
timeout_usec = 250000;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
wpa_supplicant_req_new_scan(wpa_s, timeout_sec,
|
wpa_supplicant_req_new_scan(wpa_s, timeout_sec,
|
||||||
timeout_usec);
|
timeout_usec);
|
||||||
}
|
}
|
||||||
|
|
|
@ -383,6 +383,36 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx)
|
||||||
wpa_printf(MSG_DEBUG, "Starting AP scan for wildcard SSID");
|
wpa_printf(MSG_DEBUG, "Starting AP scan for wildcard SSID");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
wpa_s->wps->dev.p2p = 1;
|
||||||
|
if (!wps) {
|
||||||
|
wps = 1;
|
||||||
|
req_type = WPS_REQ_ENROLLEE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.freqs == NULL && wpa_s->p2p_in_provisioning &&
|
||||||
|
wpa_s->go_params) {
|
||||||
|
/* Optimize provisioning state scan based on GO information */
|
||||||
|
if (wpa_s->p2p_in_provisioning < 5 &&
|
||||||
|
wpa_s->go_params->freq > 0) {
|
||||||
|
wpa_printf(MSG_DEBUG, "P2P: Scan only GO preferred "
|
||||||
|
"frequency %d MHz",
|
||||||
|
wpa_s->go_params->freq);
|
||||||
|
params.freqs = os_zalloc(2 * sizeof(int));
|
||||||
|
if (params.freqs)
|
||||||
|
params.freqs[0] = wpa_s->go_params->freq;
|
||||||
|
} else if (wpa_s->go_params->freq_list[0]) {
|
||||||
|
wpa_printf(MSG_DEBUG, "P2P: Scan only common "
|
||||||
|
"channels");
|
||||||
|
int_array_concat(¶ms.freqs,
|
||||||
|
wpa_s->go_params->freq_list);
|
||||||
|
if (params.freqs)
|
||||||
|
int_array_sort_unique(params.freqs);
|
||||||
|
}
|
||||||
|
wpa_s->p2p_in_provisioning++;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
#ifdef CONFIG_WPS
|
#ifdef CONFIG_WPS
|
||||||
if (params.freqs == NULL && wpa_s->after_wps && wpa_s->wps_freq) {
|
if (params.freqs == NULL && wpa_s->after_wps && wpa_s->wps_freq) {
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue