AP: Use monotonic time for AP list

Use the new monotonic time to keep track of when an AP
entry expires.

Signed-hostap: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2013-11-25 21:56:06 +01:00 committed by Jouni Malinen
parent e5c9e401a4
commit 100298e896
2 changed files with 6 additions and 8 deletions

View File

@ -172,7 +172,6 @@ void ap_list_process_beacon(struct hostapd_iface *iface,
struct hostapd_frame_info *fi) struct hostapd_frame_info *fi)
{ {
struct ap_info *ap; struct ap_info *ap;
struct os_time now;
int new_ap = 0; int new_ap = 0;
int set_beacon = 0; int set_beacon = 0;
@ -210,8 +209,7 @@ void ap_list_process_beacon(struct hostapd_iface *iface,
else else
ap->ht_support = 0; ap->ht_support = 0;
os_get_time(&now); os_get_reltime(&ap->last_beacon);
ap->last_beacon = now.sec;
if (!new_ap && ap != iface->ap_list) { if (!new_ap && ap != iface->ap_list) {
/* move AP entry into the beginning of the list so that the /* move AP entry into the beginning of the list so that the
@ -252,7 +250,7 @@ void ap_list_process_beacon(struct hostapd_iface *iface,
static void ap_list_timer(void *eloop_ctx, void *timeout_ctx) static void ap_list_timer(void *eloop_ctx, void *timeout_ctx)
{ {
struct hostapd_iface *iface = eloop_ctx; struct hostapd_iface *iface = eloop_ctx;
struct os_time now; struct os_reltime now;
struct ap_info *ap; struct ap_info *ap;
int set_beacon = 0; int set_beacon = 0;
@ -261,12 +259,12 @@ static void ap_list_timer(void *eloop_ctx, void *timeout_ctx)
if (!iface->ap_list) if (!iface->ap_list)
return; return;
os_get_time(&now); os_get_reltime(&now);
while (iface->ap_list) { while (iface->ap_list) {
ap = iface->ap_list->prev; ap = iface->ap_list->prev;
if (ap->last_beacon + iface->conf->ap_table_expiration_time >= if (!os_reltime_expired(&now, &ap->last_beacon,
now.sec) iface->conf->ap_table_expiration_time))
break; break;
ap_free_ap(iface, ap); ap_free_ap(iface, ap);

View File

@ -26,7 +26,7 @@ struct ap_info {
int ht_support; int ht_support;
os_time_t last_beacon; struct os_reltime last_beacon;
}; };
struct ieee802_11_elems; struct ieee802_11_elems;