data->scan_interval = data->short_interval;
data->max_short_scans = data->long_interval / data->short_interval + 1;
if (data->signal_threshold) {
+ wpa_s->signal_threshold = 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 &&
{
struct bgscan_simple_data *data = priv;
eloop_cancel_timeout(bgscan_simple_timeout, data, NULL);
- if (data->signal_threshold)
+ if (data->signal_threshold) {
+ data->wpa_s->signal_threshold = 0;
wpa_drv_signal_monitor(data->wpa_s, 0, 0);
+ }
os_free(data);
}
min_diff -= 2;
if (to_6ghz)
min_diff -= 2;
+ if (wpa_s->signal_threshold && cur_level <= wpa_s->signal_threshold &&
+ sel_level > wpa_s->signal_threshold)
+ min_diff -= 2;
diff = sel_level - cur_level;
if (diff < min_diff) {
wpa_dbg(wpa_s, MSG_DEBUG,
struct wpa_ssid *bgscan_ssid;
const struct bgscan_ops *bgscan;
void *bgscan_priv;
+ int signal_threshold;
const struct autoscan_ops *autoscan;
struct wpa_driver_scan_params *autoscan_params;