aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant/scan.c
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2012-01-18 16:19:24 +0200
committerArik Nemtsov <arik@wizery.com>2012-08-02 13:01:42 +0300
commitec0e5394ebb986f71b640f488659ddba89f940b0 (patch)
treef967dcb8a7aa42b43f3523abe38b9c563e7d9d7e /wpa_supplicant/scan.c
parent61270d8694738559c7887ee7002c07e41ba65149 (diff)
downloadexternal_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.c34
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 = &params;
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);