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>
This commit is contained in:
parent
8b7c5b8941
commit
be7ebd892e
3 changed files with 21 additions and 0 deletions
|
@ -2726,3 +2726,22 @@ fail:
|
||||||
wpa_printf(MSG_ERROR, "invalid scan plans list");
|
wpa_printf(MSG_ERROR, "invalid scan plans list");
|
||||||
return -1;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ wpa_scan_clone_params(const struct wpa_driver_scan_params *src);
|
||||||
void wpa_scan_free_params(struct wpa_driver_scan_params *params);
|
void wpa_scan_free_params(struct wpa_driver_scan_params *params);
|
||||||
int wpas_start_pno(struct wpa_supplicant *wpa_s);
|
int wpas_start_pno(struct wpa_supplicant *wpa_s);
|
||||||
int wpas_stop_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,
|
void wpas_mac_addr_rand_scan_clear(struct wpa_supplicant *wpa_s,
|
||||||
unsigned int type);
|
unsigned int type);
|
||||||
|
|
|
@ -3017,6 +3017,7 @@ void wpa_supplicant_select_network(struct wpa_supplicant *wpa_s,
|
||||||
if (wpa_s->connect_without_scan ||
|
if (wpa_s->connect_without_scan ||
|
||||||
wpa_supplicant_fast_associate(wpa_s) != 1) {
|
wpa_supplicant_fast_associate(wpa_s) != 1) {
|
||||||
wpa_s->scan_req = NORMAL_SCAN_REQ;
|
wpa_s->scan_req = NORMAL_SCAN_REQ;
|
||||||
|
wpas_scan_reset_sched_scan(wpa_s);
|
||||||
wpa_supplicant_req_scan(wpa_s, 0, disconnected ? 100000 : 0);
|
wpa_supplicant_req_scan(wpa_s, 0, disconnected ? 100000 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue