P2P: Try fast associate if p2p GO is found in external scan
Before supplicant issues a scan to driver, check if p2p GO
was found in external scan. If yes, try to do a fast associate.
Bug:187543099
Test: Manual-File transfer using Nearby APP and check the connection
latency.
Change-Id: Idf91d51c08023c4b7a09484cfcce1d271f032589
diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c
index c53474d..24d06c0 100644
--- a/wpa_supplicant/scan.c
+++ b/wpa_supplicant/scan.c
@@ -1013,6 +1013,19 @@
}
#ifdef CONFIG_P2P
+#ifdef ANDROID
+ if (wpa_s->global->p2p_go_found_external_scan &&
+ (wpa_s->p2p_group_interface == P2P_GROUP_INTERFACE_CLIENT) &&
+ (wpa_s->global->p2p_group_formation == wpa_s)) {
+ wpa_dbg(wpa_s, MSG_DEBUG,
+ "Try to fast associate since GO is found in external scan");
+ wpa_s->global->p2p_go_found_external_scan = 0;
+ if (wpa_supplicant_fast_associate(wpa_s) >= 0) {
+ return;
+ }
+ }
+#endif
+
if ((wpa_s->p2p_in_provisioning || wpa_s->show_group_started) &&
wpa_s->go_params && !wpa_s->conf->passive_scan) {
wpa_printf(MSG_DEBUG, "P2P: Use specific SSID for scan during P2P group formation (p2p_in_provisioning=%d show_group_started=%d)",