aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant/bgscan_learn.c
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2012-02-14 01:10:09 +0200
committerArik Nemtsov <arik@wizery.com>2012-07-30 17:48:05 +0300
commit379f5303545333c725d1682dfc6539d7862f7e0b (patch)
tree5d9042da51c999df9700330d0e8c1513e7641a6d /wpa_supplicant/bgscan_learn.c
parent1058025ab5139323e3adcc8da27cb4c556273ad0 (diff)
downloadexternal_wpa_supplicant_8_ti-379f5303545333c725d1682dfc6539d7862f7e0b.zip
external_wpa_supplicant_8_ti-379f5303545333c725d1682dfc6539d7862f7e0b.tar.gz
external_wpa_supplicant_8_ti-379f5303545333c725d1682dfc6539d7862f7e0b.tar.bz2
bgscan_learn: fix initial interval
In case the initial signal level of the associated BSS was above the given threshold , bgscan_learn module would begin using the short_interval but never switch to the long_interval as there would be no signal change event. Make the init code poll for the current signal level and set scan_interval accordingly. This logic exists in bgscan_simple but was missing in bgscan_learn.
Diffstat (limited to 'wpa_supplicant/bgscan_learn.c')
-rw-r--r--wpa_supplicant/bgscan_learn.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/wpa_supplicant/bgscan_learn.c b/wpa_supplicant/bgscan_learn.c
index ed4d879..b887d15 100644
--- a/wpa_supplicant/bgscan_learn.c
+++ b/wpa_supplicant/bgscan_learn.c
@@ -414,8 +414,16 @@ static void * bgscan_learn_init(struct wpa_supplicant *wpa_s,
"signal strength monitoring");
}
- data->supp_freqs = bgscan_learn_get_supp_freqs(wpa_s);
data->scan_interval = data->short_interval;
+ if (data->signal_threshold) {
+ /* Poll for signal info to set initial scan interval */
+ struct wpa_signal_info siginfo;
+ if (wpa_drv_signal_poll(wpa_s, &siginfo) == 0 &&
+ siginfo.current_signal >= data->signal_threshold)
+ data->scan_interval = data->long_interval;
+ }
+
+ data->supp_freqs = bgscan_learn_get_supp_freqs(wpa_s);
eloop_register_timeout(data->scan_interval, 0, bgscan_learn_timeout,
data, NULL);