|
@@ -44,6 +44,7 @@ static void update_channel_utilization(void *eloop_data, void *user_data)
|
|
|
struct hostapd_data *hapd = eloop_data;
|
|
|
unsigned int sec, usec;
|
|
|
int err;
|
|
|
+ struct hostapd_iface *iface = hapd->iface;
|
|
|
|
|
|
if (!(hapd->beacon_set_done && hapd->started))
|
|
|
return;
|
|
@@ -59,6 +60,21 @@ static void update_channel_utilization(void *eloop_data, void *user_data)
|
|
|
if (get_bss_load_update_timeout(hapd, &sec, &usec) < 0)
|
|
|
return;
|
|
|
|
|
|
+ if (hapd->conf->chan_util_avg_period) {
|
|
|
+ iface->chan_util_samples_sum += iface->channel_utilization;
|
|
|
+ iface->chan_util_num_sample_periods +=
|
|
|
+ hapd->conf->bss_load_update_period;
|
|
|
+ if (iface->chan_util_num_sample_periods >=
|
|
|
+ hapd->conf->chan_util_avg_period) {
|
|
|
+ iface->chan_util_average =
|
|
|
+ iface->chan_util_samples_sum /
|
|
|
+ (iface->chan_util_num_sample_periods /
|
|
|
+ hapd->conf->bss_load_update_period);
|
|
|
+ iface->chan_util_samples_sum = 0;
|
|
|
+ iface->chan_util_num_sample_periods = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
eloop_register_timeout(sec, usec, update_channel_utilization, hapd,
|
|
|
NULL);
|
|
|
}
|