From a12d34546a4cf9800fb2bf679417b8cf25e6f420 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Mon, 16 Dec 2013 21:08:44 +0100 Subject: [PATCH] wpa_supplicant: Use monotonic time for last_scan check This just serves to check if there was a scan within the last 5 seconds, hence it should use monotonic time. While at it, also use os_reltime_expired(). Signed-hostap: Johannes Berg --- wpa_supplicant/bss.c | 2 +- wpa_supplicant/events.c | 6 +++--- wpa_supplicant/wpa_supplicant_i.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/wpa_supplicant/bss.c b/wpa_supplicant/bss.c index e26cdc035..df1bf11c9 100644 --- a/wpa_supplicant/bss.c +++ b/wpa_supplicant/bss.c @@ -733,7 +733,7 @@ void wpa_bss_update_end(struct wpa_supplicant *wpa_s, struct scan_info *info, struct wpa_bss *bss, *n; wpa_s->last_scan_full = 0; - os_get_time(&wpa_s->last_scan); + os_get_reltime(&wpa_s->last_scan); if (!new_scan) return; /* do not expire entries without new scan */ diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index fa5d68180..eeb27e30e 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -1428,13 +1428,13 @@ int wpa_supplicant_fast_associate(struct wpa_supplicant *wpa_s) #ifdef CONFIG_NO_SCAN_PROCESSING return -1; #else /* CONFIG_NO_SCAN_PROCESSING */ - struct os_time now; + struct os_reltime now; if (wpa_s->last_scan_res_used <= 0) return -1; - os_get_time(&now); - if (now.sec - wpa_s->last_scan.sec > 5) { + os_get_reltime(&now); + if (os_reltime_expired(&now, &wpa_s->last_scan, 5)) { wpa_printf(MSG_DEBUG, "Fast associate: Old scan results"); return -1; } diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h index 663f7fd70..5cb767406 100644 --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h @@ -409,7 +409,7 @@ struct wpa_supplicant { unsigned int last_scan_res_used; unsigned int last_scan_res_size; int last_scan_full; - struct os_time last_scan; + struct os_reltime last_scan; struct wpa_driver_ops *driver; int interface_removed; /* whether the network interface has been