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. Signed-hostap: Eyal Shapira <eyal@wizery.com>
This commit is contained in:
parent
625188e5bf
commit
f4c73ae640
1 changed files with 8 additions and 0 deletions
|
@ -422,6 +422,14 @@ static void * bgscan_learn_init(struct wpa_supplicant *wpa_s,
|
||||||
|
|
||||||
data->supp_freqs = bgscan_learn_get_supp_freqs(wpa_s);
|
data->supp_freqs = bgscan_learn_get_supp_freqs(wpa_s);
|
||||||
data->scan_interval = data->short_interval;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
eloop_register_timeout(data->scan_interval, 0, bgscan_learn_timeout,
|
eloop_register_timeout(data->scan_interval, 0, bgscan_learn_timeout,
|
||||||
data, NULL);
|
data, NULL);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue