Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Unified Diff: wpa_supplicant/bgscan_delta.c

Issue 4142013: CHROMIUMOS: wpa_supplicant: Back off short scan interval after a number of attempts (Closed) Base URL: ssh://gitrw.chromium.org/hostap.git
Patch Set: Remove unused define Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: wpa_supplicant/bgscan_delta.c
diff --git a/wpa_supplicant/bgscan_delta.c b/wpa_supplicant/bgscan_delta.c
index a2f2402966f700ec90592da442a24f6c73f7696c..08ed10ddd67426f50779995bebcaf89c761a9d97 100644
--- a/wpa_supplicant/bgscan_delta.c
+++ b/wpa_supplicant/bgscan_delta.c
@@ -29,6 +29,7 @@ struct bgscan_delta_data {
const struct wpa_ssid *ssid;
int scan_interval;
int signal_threshold;
+ int short_scan_count; /* counter for scans using short scan interval */
int short_interval; /* use if signal < threshold */
int long_interval; /* use if signal > threshold */
struct os_time last_bgscan;
@@ -59,8 +60,23 @@ static void bgscan_delta_timeout(void *eloop_ctx, void *timeout_ctx)
wpa_printf(MSG_DEBUG, "bgscan delta: Failed to trigger scan");
eloop_register_timeout(data->scan_interval, 0,
bgscan_delta_timeout, data, NULL);
- } else
+ } else {
os_get_time(&data->last_bgscan);
+ if (data->scan_interval == data->short_interval) {
+ data->short_scan_count++;
+ /*
+ * Spend at most the duration of a long scan interval
+ * scanning at the short scan interval. After that,
+ * revert to the long scan interval.
+ */
+ if (data->short_scan_count >
+ data->long_interval / data->short_interval + 1) {
+ data->scan_interval = data->long_interval;
+ wpa_printf(MSG_DEBUG, "bgscan delta: backing "
+ "off to long scan interval");
+ }
+ }
+ }
}
@@ -226,6 +242,7 @@ static void bgscan_delta_notify_connection_change(void *priv,
wpa_printf(MSG_DEBUG, "bgscan delta: Start using short "
"bgscan interval");
data->scan_interval = data->short_interval;
+ data->short_scan_count = 0;
os_get_time(&now);
if (now.sec > data->last_bgscan.sec + 1)
scan = 1;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698