]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
bgscan_simple: Reschedule first fast scan
authorPaul Stewart <pstew@google.com>
Thu, 31 Mar 2011 15:06:09 +0000 (18:06 +0300)
committerJouni Malinen <j@w1.fi>
Thu, 31 Mar 2011 15:06:09 +0000 (18:06 +0300)
If the scan interval switches to the short interval soon after a
scan, bgscan_simple should not immediately scan again. However,
it should also make sure that the next scan occurs no later than
the new, short scan interval.

Signed-off-by: Paul Stewart <pstew@google.com>
wpa_supplicant/bgscan_simple.c

index a62dac159d3bb34c3a67e7d477a3c09e98f5075b..eedc9614711b0dbe125c85f9ca0aece5e2195795 100644 (file)
@@ -226,6 +226,18 @@ static void bgscan_simple_notify_signal_change(void *priv, int above,
                os_get_time(&now);
                if (now.sec > data->last_bgscan.sec + 1)
                        scan = 1;
+               else if (data->last_bgscan.sec + data->long_interval >
+                        now.sec + data->scan_interval) {
+                       /*
+                        * Restart scan interval timer if currently scheduled
+                        * scan is too far in the future.
+                        */
+                       eloop_cancel_timeout(bgscan_simple_timeout, data,
+                                            NULL);
+                       eloop_register_timeout(data->scan_interval, 0,
+                                              bgscan_simple_timeout, data,
+                                              NULL);
+               }
        } else if (data->scan_interval == data->short_interval && above) {
                wpa_printf(MSG_DEBUG, "bgscan simple: Start using long bgscan "
                           "interval");