Accumulative patch from commit 52728dcd25b5074fb7c0493a8155f096089ad6d0
P2P: Stop P2P_PD_DURING_FIND wait on PD Response RX
P2P: Postpone P2P scan only if station mode scan is pending
Use special scan result processing steps only on requesting interface
P2P: Re-start P2P operation if station mode scanning is stopped
P2P: Use common function for re-starting P2P scan after station scan
Change-Id: I62bb738a912483647606de1a5bd5357346ebd8f9
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
index 6246dc0..c6856e2 100644
--- a/wpa_supplicant/p2p_supplicant.c
+++ b/wpa_supplicant/p2p_supplicant.c
@@ -158,6 +158,7 @@
for (ifs = wpa_s->global->ifaces; ifs; ifs = ifs->next) {
if (ifs->sta_scan_pending &&
+ (wpas_scan_scheduled(ifs) || ifs->scanning) &&
wpas_p2p_in_progress(wpa_s) == 2) {
wpa_printf(MSG_DEBUG, "Delaying P2P scan to allow "
"pending station mode scan to be "
@@ -5052,17 +5053,7 @@
wpas_notify_p2p_group_started(wpa_s, ssid, network_id, 1);
done:
- if (wpa_s->global->p2p_cb_on_scan_complete && !wpa_s->global->p2p_disabled &&
- wpa_s->global->p2p != NULL) {
- wpa_s->global->p2p_cb_on_scan_complete = 0;
- if (p2p_other_scan_completed(wpa_s->global->p2p) == 1) {
- wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Pending P2P operation "
- "continued after successful connection");
- p2p_increase_search_delay(
- wpa_s->global->p2p,
- wpas_p2p_search_delay(wpa_s));
- }
- }
+ wpas_p2p_continue_after_scan(wpa_s);
}
@@ -5838,6 +5829,30 @@
return 0;
}
+
+void wpas_p2p_continue_after_scan(struct wpa_supplicant *wpa_s)
+{
+ wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Station mode scan operation not "
+ "pending anymore (sta_scan_pending=%d "
+ "p2p_cb_on_scan_complete=%d)", wpa_s->sta_scan_pending,
+ wpa_s->global->p2p_cb_on_scan_complete);
+ wpa_s->sta_scan_pending = 0;
+
+ if (!wpa_s->global->p2p_cb_on_scan_complete)
+ return;
+ wpa_s->global->p2p_cb_on_scan_complete = 0;
+
+ if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL)
+ return;
+
+ if (p2p_other_scan_completed(wpa_s->global->p2p) == 1) {
+ wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Pending P2P operation "
+ "continued after successful connection");
+ p2p_increase_search_delay(wpa_s->global->p2p,
+ wpas_p2p_search_delay(wpa_s));
+ }
+}
+
#ifdef ANDROID_P2P
int wpas_p2p_handle_frequency_conflicts(struct wpa_supplicant *wpa_s, int freq,
struct wpa_ssid *ssid)