2 * BSS Load Element / Channel Utilization
3 * Copyright (c) 2014, Qualcomm Atheros, Inc.
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
9 #include "utils/includes.h"
11 #include "utils/common.h"
12 #include "utils/eloop.h"
15 #include "ap_drv_ops.h"
19 static void update_channel_utilization(void *eloop_data, void *user_data)
21 struct hostapd_data *hapd = eloop_data;
22 unsigned int sec, usec;
25 if (!(hapd->beacon_set_done && hapd->started))
28 err = hostapd_drv_get_survey(hapd, hapd->iface->freq);
30 wpa_printf(MSG_ERROR, "BSS Load: Failed to get survey data");
34 ieee802_11_set_beacon(hapd);
36 sec = ((hapd->bss_load_update_timeout / 1000) * 1024) / 1000;
37 usec = (hapd->bss_load_update_timeout % 1000) * 1024;
38 eloop_register_timeout(sec, usec, update_channel_utilization, hapd,
43 int bss_load_update_init(struct hostapd_data *hapd)
45 struct hostapd_bss_config *conf = hapd->conf;
46 struct hostapd_config *iconf = hapd->iconf;
47 unsigned int sec, usec;
49 if (!conf->bss_load_update_period || !iconf->beacon_int)
52 hapd->bss_load_update_timeout = conf->bss_load_update_period *
54 sec = ((hapd->bss_load_update_timeout / 1000) * 1024) / 1000;
55 usec = (hapd->bss_load_update_timeout % 1000) * 1024;
56 eloop_register_timeout(sec, usec, update_channel_utilization, hapd,
62 void bss_load_update_deinit(struct hostapd_data *hapd)
64 eloop_cancel_timeout(update_channel_utilization, hapd, NULL);