P2P: Optimize scan frequencies list when re-joining a persistent group
When starting a P2P client to re-join a persistent group (P2P_GROUP_ADD persistent=<id>), it is possible that the P2P GO was already found in previous scans. Try to get the P2P GO operating frequency from the scan results list so wpa_supplicant will initially scan only the P2P GO known operating frequency. Signed-off-by: Avraham Stern <avraham.stern@intel.com> Signed-off-by: Ilan Peer <ilan.peer@intel.com>
This commit is contained in:
parent
154a1d5f7f
commit
989e784601
1 changed files with 16 additions and 8 deletions
|
@ -5504,18 +5504,26 @@ int wpas_p2p_group_add_persistent(struct wpa_supplicant *wpa_s,
|
||||||
(freq > 0 && !freq_included(channels, freq)))
|
(freq > 0 && !freq_included(channels, freq)))
|
||||||
freq = 0;
|
freq = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else if (ssid->mode == WPAS_MODE_INFRA) {
|
||||||
freq = neg_freq;
|
freq = neg_freq;
|
||||||
if (freq < 0 ||
|
if (freq <= 0 || !freq_included(channels, freq)) {
|
||||||
(freq > 0 && !freq_included(channels, freq)))
|
struct os_reltime now;
|
||||||
|
struct wpa_bss *bss =
|
||||||
|
wpa_bss_get_p2p_dev_addr(wpa_s, ssid->bssid);
|
||||||
|
|
||||||
|
os_get_reltime(&now);
|
||||||
|
if (bss &&
|
||||||
|
!os_reltime_expired(&now, &bss->last_update, 5) &&
|
||||||
|
freq_included(channels, bss->freq))
|
||||||
|
freq = bss->freq;
|
||||||
|
else
|
||||||
freq = 0;
|
freq = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ssid->mode == WPAS_MODE_INFRA)
|
|
||||||
return wpas_start_p2p_client(wpa_s, ssid, addr_allocated, freq);
|
return wpas_start_p2p_client(wpa_s, ssid, addr_allocated, freq);
|
||||||
|
} else {
|
||||||
if (ssid->mode != WPAS_MODE_P2P_GO)
|
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (wpas_p2p_init_go_params(wpa_s, ¶ms, freq, ht40, vht, channels))
|
if (wpas_p2p_init_go_params(wpa_s, ¶ms, freq, ht40, vht, channels))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in a new issue