aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2012-07-21 01:38:35 +0300
committerArik Nemtsov <arik@wizery.com>2012-08-02 13:04:02 +0300
commit37a9dc9e18d549f7f9508d7d870cf33b8d856c33 (patch)
tree7e822e718a34fe3617469d57030253f5e0f47dd9
parent8b4bce98f1de19ad6427c9ca7b3be10638e606ff (diff)
downloadexternal_wpa_supplicant_8_ti-37a9dc9e18d549f7f9508d7d870cf33b8d856c33.zip
external_wpa_supplicant_8_ti-37a9dc9e18d549f7f9508d7d870cf33b8d856c33.tar.gz
external_wpa_supplicant_8_ti-37a9dc9e18d549f7f9508d7d870cf33b8d856c33.tar.bz2
P2P: Start blocked p2p find even if scan was on another interface (BRCM)
p2p find can now defer starting the p2p scan due to an ongoing scan on a different interface. Relying on p2p_cb_on_scan_complete which is a per interface flag is wrong here and we won't resume the p2p find in case the scan wasn't on the same interface (which is the case in Android JB). Fix this by relying on the global p2p state instead. (This description is based on analysis of the code as the original BRCM commit doesn't contain any useful information) Signed-off-by: Eyal Shapira <eyal@wizery.com>
-rw-r--r--src/p2p/p2p.c12
-rw-r--r--wpa_supplicant/events.c4
2 files changed, 16 insertions, 0 deletions
diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
index 5dc874f..a515949 100644
--- a/src/p2p/p2p.c
+++ b/src/p2p/p2p.c
@@ -1050,6 +1050,18 @@ int p2p_find(struct p2p_data *p2p, unsigned int timeout,
return res;
}
+#ifdef ANDROID_P2P
+int p2p_search_pending(struct p2p_data *p2p)
+{
+ if(p2p == NULL)
+ return 0;
+
+ if(p2p->state == P2P_SEARCH_WHEN_READY)
+ return 1;
+
+ return 0;
+}
+#endif
int p2p_other_scan_completed(struct p2p_data *p2p)
{
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 2f7b194..2ad0ec5 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -1065,7 +1065,11 @@ static int _wpa_supplicant_event_scan_results(struct wpa_supplicant *wpa_s,
wpa_supplicant_notify_scanning(wpa_s, 0);
#ifdef CONFIG_P2P
+#ifdef ANDROID_P2P
+ if (p2p_search_pending(wpa_s->global->p2p) && !wpa_s->global->p2p_disabled &&
+#else
if (wpa_s->p2p_cb_on_scan_complete && !wpa_s->global->p2p_disabled &&
+#endif
wpa_s->global->p2p != NULL) {
wpa_s->p2p_cb_on_scan_complete = 0;
if (p2p_other_scan_completed(wpa_s->global->p2p) == 1) {