aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Stepanov <Max.Stepanov@intel.com>2016-11-03 15:19:24 +0530
committerNalla Kartheek <karthe@codeaurora.org>2016-11-03 15:22:37 +0530
commitb650b72900928370e93d552497ad6c1f006a4236 (patch)
treede071754ac139c27b74bfe0411a64c19a33b32fe
parent97629c62aa3afa10f2c899b36a8b1cb6bda7b3fc (diff)
downloadandroid_external_wpa_supplicant_8-b650b72900928370e93d552497ad6c1f006a4236.tar.gz
android_external_wpa_supplicant_8-b650b72900928370e93d552497ad6c1f006a4236.tar.bz2
android_external_wpa_supplicant_8-b650b72900928370e93d552497ad6c1f006a4236.zip
wpa_supplicant: Cancel sched_scan on SELECT_NETWORK initiated scan
If a scheduled scan is running on select network command, cancel and reset it before kicking off a regular scan request. Signed-off-by: Max Stepanov <Max.Stepanov@intel.com> Git-commit: be7ebd892ee7c47ff291de4e7802c14758f02a3d Git-repo: git://w1.fi/srv/git/hostap.git CRs-fixed: 1085011 Change-Id: Icfba638a2946f1d2f9650326999c233b3bd8b861
-rw-r--r--wpa_supplicant/scan.c19
-rw-r--r--wpa_supplicant/scan.h1
-rw-r--r--wpa_supplicant/wpa_supplicant.c1
3 files changed, 21 insertions, 0 deletions
diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c
index 4b450d7b..ed156d24 100644
--- a/wpa_supplicant/scan.c
+++ b/wpa_supplicant/scan.c
@@ -2730,3 +2730,22 @@ fail:
wpa_printf(MSG_ERROR, "invalid scan plans list");
return -1;
}
+
+
+/**
+ * wpas_scan_reset_sched_scan - Reset sched_scan state
+ * @wpa_s: Pointer to wpa_supplicant data
+ *
+ * This function is used to cancel a running scheduled scan and to reset an
+ * internal scan state to continue with a regular scan on the following
+ * wpa_supplicant_req_scan() calls.
+ */
+void wpas_scan_reset_sched_scan(struct wpa_supplicant *wpa_s)
+{
+ wpa_s->normal_scans = 0;
+ if (wpa_s->sched_scanning) {
+ wpa_s->sched_scan_timed_out = 0;
+ wpa_s->prev_sched_ssid = NULL;
+ wpa_supplicant_cancel_sched_scan(wpa_s);
+ }
+}
diff --git a/wpa_supplicant/scan.h b/wpa_supplicant/scan.h
index a734148a..6ea56c84 100644
--- a/wpa_supplicant/scan.h
+++ b/wpa_supplicant/scan.h
@@ -47,6 +47,7 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src);
void wpa_scan_free_params(struct wpa_driver_scan_params *params);
int wpas_start_pno(struct wpa_supplicant *wpa_s);
int wpas_stop_pno(struct wpa_supplicant *wpa_s);
+void wpas_scan_reset_sched_scan(struct wpa_supplicant *wpa_s);
void wpas_mac_addr_rand_scan_clear(struct wpa_supplicant *wpa_s,
unsigned int type);
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index ef1c63fd..5bad4b55 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -2893,6 +2893,7 @@ void wpa_supplicant_select_network(struct wpa_supplicant *wpa_s,
if (wpa_s->connect_without_scan ||
wpa_supplicant_fast_associate(wpa_s) != 1) {
wpa_s->scan_req = NORMAL_SCAN_REQ;
+ wpas_scan_reset_sched_scan(wpa_s);
wpa_supplicant_req_scan(wpa_s, 0, disconnected ? 100000 : 0);
}