diff options
author | Eyal Shapira <eyal@wizery.com> | 2012-01-18 16:19:24 +0200 |
---|---|---|
committer | Arik Nemtsov <arik@wizery.com> | 2012-08-02 13:01:42 +0300 |
commit | ec0e5394ebb986f71b640f488659ddba89f940b0 (patch) | |
tree | f967dcb8a7aa42b43f3523abe38b9c563e7d9d7e /wpa_supplicant/scan.c | |
parent | 61270d8694738559c7887ee7002c07e41ba65149 (diff) | |
download | external_wpa_supplicant_8_ti-ec0e5394ebb986f71b640f488659ddba89f940b0.zip external_wpa_supplicant_8_ti-ec0e5394ebb986f71b640f488659ddba89f940b0.tar.gz external_wpa_supplicant_8_ti-ec0e5394ebb986f71b640f488659ddba89f940b0.tar.bz2 |
sched scan: add support for short and long intervals
Configure sched scan to use short and long intervals
if the driver supports it
Diffstat (limited to 'wpa_supplicant/scan.c')
-rw-r--r-- | wpa_supplicant/scan.c | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c index 87d3de7..e3f314e 100644 --- a/wpa_supplicant/scan.c +++ b/wpa_supplicant/scan.c @@ -223,11 +223,16 @@ wpa_supplicant_delayed_sched_scan_timeout(void *eloop_ctx, void *timeout_ctx) static int wpa_supplicant_start_sched_scan(struct wpa_supplicant *wpa_s, struct wpa_driver_scan_params *params, - int interval) + int long_interval, + int short_interval, + u8 num_short_intervals) { int ret; - ret = wpa_drv_sched_scan(wpa_s, params, interval * 1000); + ret = wpa_drv_sched_scan(wpa_s, params, + long_interval * 1000, + short_interval * 1000, + num_short_intervals); if (!ret) wpa_s->sched_scanning = 1; @@ -883,11 +888,28 @@ start_scan: scan_params = ¶ms; scan: - wpa_dbg(wpa_s, MSG_DEBUG, "Starting sched scan: interval %d", - wpa_s->sched_scan_interval); - ret = wpa_supplicant_start_sched_scan(wpa_s, scan_params, - wpa_s->sched_scan_interval); + if (wpa_s->sched_scan_intervals_supported) { + wpa_dbg(wpa_s, MSG_DEBUG, "Starting sched scan: " + " short interval %d long_interval %d" + " num_short_intervals %d", + wpa_s->conf->sched_scan_short_interval, + wpa_s->conf->sched_scan_long_interval, + wpa_s->conf->sched_scan_num_short_intervals); + + ret = wpa_supplicant_start_sched_scan(wpa_s, scan_params, + wpa_s->conf->sched_scan_long_interval, + wpa_s->conf->sched_scan_short_interval, + wpa_s->conf->sched_scan_num_short_intervals); + } else { + wpa_dbg(wpa_s, MSG_DEBUG, "Starting sched scan: interval %d", + wpa_s->conf->sched_scan_long_interval); + + ret = wpa_supplicant_start_sched_scan(wpa_s, scan_params, + wpa_s->conf->sched_scan_long_interval, 0, 0); + } + + wpabuf_free(wps_ie); if (params.filter_ssids) os_free(params.filter_ssids); |