aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-11-07 14:34:24 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2014-11-07 14:34:24 -0800
commit3f1e974682e709a7bc829b023641a5c692aaa0a8 (patch)
treee45980d1b59b4c27d190f20e0959a06900a1dcc0
parente5a1cca7e0c6f0f9202634dd98044c2dde7f695b (diff)
parent7ded1dad4115d36850ca1b0101dfeb024a5c94a8 (diff)
downloadandroid_external_wpa_supplicant_8-3f1e974682e709a7bc829b023641a5c692aaa0a8.tar.gz
android_external_wpa_supplicant_8-3f1e974682e709a7bc829b023641a5c692aaa0a8.tar.bz2
android_external_wpa_supplicant_8-3f1e974682e709a7bc829b023641a5c692aaa0a8.zip
Merge "P2P: Do not consider the p2p_scan results after p2p_stop_find"
-rw-r--r--wpa_supplicant/ctrl_iface.c1
-rw-r--r--wpa_supplicant/p2p_supplicant.c28
2 files changed, 29 insertions, 0 deletions
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index d9123bae..5310eb7e 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -4976,6 +4976,7 @@ static void p2p_ctrl_flush(struct wpa_supplicant *wpa_s)
{
os_memset(wpa_s->p2p_auth_invite, 0, ETH_ALEN);
wpa_s->force_long_sd = 0;
+ wpas_p2p_stop_find(wpa_s);
if (wpa_s->global->p2p)
p2p_flush(wpa_s->global->p2p);
}
diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
index 82c153f1..0f14cbe6 100644
--- a/wpa_supplicant/p2p_supplicant.c
+++ b/wpa_supplicant/p2p_supplicant.c
@@ -5761,6 +5761,28 @@ int wpas_p2p_find(struct wpa_supplicant *wpa_s, unsigned int timeout,
}
+static void wpas_p2p_scan_res_ignore_search(struct wpa_supplicant *wpa_s,
+ struct wpa_scan_results *scan_res)
+{
+ wpa_printf(MSG_DEBUG, "P2P: Ignore scan results");
+
+ if (wpa_s->p2p_scan_work) {
+ struct wpa_radio_work *work = wpa_s->p2p_scan_work;
+ wpa_s->p2p_scan_work = NULL;
+ radio_work_done(work);
+ }
+
+ if (wpa_s->global->p2p_disabled || wpa_s->global->p2p == NULL)
+ return;
+
+ /*
+ * Indicate that results have been processed so that the P2P module can
+ * continue pending tasks.
+ */
+ p2p_scan_res_handled(wpa_s->global->p2p);
+}
+
+
static void wpas_p2p_stop_find_oper(struct wpa_supplicant *wpa_s)
{
wpas_p2p_clear_pending_action_tx(wpa_s);
@@ -5770,6 +5792,12 @@ static void wpas_p2p_stop_find_oper(struct wpa_supplicant *wpa_s)
if (wpa_s->global->p2p)
p2p_stop_find(wpa_s->global->p2p);
+
+ if (wpa_s->scan_res_handler == wpas_p2p_scan_res_handler) {
+ wpa_printf(MSG_DEBUG,
+ "P2P: Do not consider the scan results after stop_find");
+ wpa_s->scan_res_handler = wpas_p2p_scan_res_ignore_search;
+ }
}