[openwrt/openwrt] hostapd: make OpenWrt statistics per-BSS

LEDE Commits lede-commits at lists.infradead.org
Sun Dec 19 15:15:41 PST 2021


blocktrron pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/54cfe0774ce4203d23ffcb397ba15bd36968d098

commit 54cfe0774ce4203d23ffcb397ba15bd36968d098
Author: David Bauer <mail at david-bauer.net>
AuthorDate: Sat Dec 18 17:24:09 2021 +0100

    hostapd: make OpenWrt statistics per-BSS
    
    WNM and RRM statistics were incorrectly per-PHY, leading to shared
    statistic counters per BSS.
    
    Signed-off-by: David Bauer <mail at david-bauer.net>
---
 .../hostapd/patches/590-rrm-wnm-statistics.patch   | 32 +++++++++++-----------
 package/network/services/hostapd/src/src/ap/ubus.c |  8 +++---
 2 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/package/network/services/hostapd/patches/590-rrm-wnm-statistics.patch b/package/network/services/hostapd/patches/590-rrm-wnm-statistics.patch
index feb3b091c1..737fdbb5d0 100644
--- a/package/network/services/hostapd/patches/590-rrm-wnm-statistics.patch
+++ b/package/network/services/hostapd/patches/590-rrm-wnm-statistics.patch
@@ -1,6 +1,6 @@
 --- a/src/ap/hostapd.h
 +++ b/src/ap/hostapd.h
-@@ -441,6 +441,21 @@ struct hostapd_sta_info {
+@@ -148,6 +148,21 @@ struct hostapd_sae_commit_queue {
  };
  
  /**
@@ -19,26 +19,26 @@
 +};
 +
 +/**
-  * struct hostapd_iface - hostapd per-interface data structure
+  * struct hostapd_data - hostapd per-BSS data structure
   */
- struct hostapd_iface {
-@@ -562,6 +577,9 @@ struct hostapd_iface {
- 	u64 last_channel_time_busy;
- 	u8 channel_utilization;
+ struct hostapd_data {
+@@ -161,6 +176,9 @@ struct hostapd_data {
+ 
+ 	u8 own_addr[ETH_ALEN];
  
 +	/* OpenWrt specific statistics */
 +	struct hostapd_openwrt_stats openwrt_stats;
 +
- 	unsigned int chan_util_samples_sum;
- 	unsigned int chan_util_num_sample_periods;
- 	unsigned int chan_util_average;
+ 	int num_sta; /* number of entries in sta_list */
+ 	struct sta_info *sta_list; /* STA info list head */
+ #define STA_HASH_SIZE 256
 --- a/src/ap/wnm_ap.c
 +++ b/src/ap/wnm_ap.c
 @@ -386,6 +386,7 @@ static int ieee802_11_send_bss_trans_mgm
  	mgmt->u.action.u.bss_tm_req.validity_interval = 1;
  	pos = mgmt->u.action.u.bss_tm_req.variable;
  
-+	hapd->iface->openwrt_stats.wnm.bss_transition_request_tx++;
++	hapd->openwrt_stats.wnm.bss_transition_request_tx++;
  	wpa_printf(MSG_DEBUG, "WNM: Send BSS Transition Management Request to "
  		   MACSTR " dialog_token=%u req_mode=0x%x disassoc_timer=%u "
  		   "validity_interval=%u",
@@ -46,12 +46,12 @@
  
  	switch (action) {
  	case WNM_BSS_TRANS_MGMT_QUERY:
-+		hapd->iface->openwrt_stats.wnm.bss_transition_query_rx++;
++		hapd->openwrt_stats.wnm.bss_transition_query_rx++;
  		ieee802_11_rx_bss_trans_mgmt_query(hapd, mgmt->sa, payload,
  						   plen);
  		return 0;
  	case WNM_BSS_TRANS_MGMT_RESP:
-+		hapd->iface->openwrt_stats.wnm.bss_transition_response_rx++;
++		hapd->openwrt_stats.wnm.bss_transition_response_rx++;
  		ieee802_11_rx_bss_trans_mgmt_resp(hapd, mgmt->sa, payload,
  						  plen);
  		return 0;
@@ -59,7 +59,7 @@
  
  	pos = mgmt->u.action.u.bss_tm_req.variable;
  
-+	hapd->iface->openwrt_stats.wnm.bss_transition_request_tx++;
++	hapd->openwrt_stats.wnm.bss_transition_request_tx++;
  	wpa_printf(MSG_DEBUG, "WNM: Send BSS Transition Management Request frame to indicate imminent disassociation (disassoc_timer=%d) to "
  		   MACSTR, disassoc_timer, MAC2STR(sta->addr));
  	if (hostapd_drv_send_mlme(hapd, buf, pos - buf, 0, NULL, 0, 0) < 0) {
@@ -67,7 +67,7 @@
  		return -1;
  	}
  
-+	hapd->iface->openwrt_stats.wnm.bss_transition_request_tx++;
++	hapd->openwrt_stats.wnm.bss_transition_request_tx++;
  	if (disassoc_timer) {
  		/* send disassociation frame after time-out */
  		set_disassoc_timer(hapd, sta, disassoc_timer);
@@ -75,7 +75,7 @@
  	}
  	os_free(buf);
  
-+	hapd->iface->openwrt_stats.wnm.bss_transition_request_tx++;
++	hapd->openwrt_stats.wnm.bss_transition_request_tx++;
  	if (disassoc_timer) {
  		/* send disassociation frame after time-out */
  		set_disassoc_timer(hapd, sta, disassoc_timer);
@@ -85,7 +85,7 @@
  		}
  	}
  
-+	hapd->iface->openwrt_stats.rrm.neighbor_report_tx++;
++	hapd->openwrt_stats.rrm.neighbor_report_tx++;
 +
  	hostapd_drv_send_action(hapd, hapd->iface->freq, 0, addr,
  				wpabuf_head(buf), wpabuf_len(buf));
diff --git a/package/network/services/hostapd/src/src/ap/ubus.c b/package/network/services/hostapd/src/src/ap/ubus.c
index 20ee7c90e7..bcb80f4a33 100644
--- a/package/network/services/hostapd/src/src/ap/ubus.c
+++ b/package/network/services/hostapd/src/src/ap/ubus.c
@@ -432,14 +432,14 @@ hostapd_bss_get_status(struct ubus_context *ctx, struct ubus_object *obj,
 
 	/* RRM */
 	rrm_table = blobmsg_open_table(&b, "rrm");
-	blobmsg_add_u64(&b, "neighbor_report_tx", hapd->iface->openwrt_stats.rrm.neighbor_report_tx);
+	blobmsg_add_u64(&b, "neighbor_report_tx", hapd->openwrt_stats.rrm.neighbor_report_tx);
 	blobmsg_close_table(&b, rrm_table);
 
 	/* WNM */
 	wnm_table = blobmsg_open_table(&b, "wnm");
-	blobmsg_add_u64(&b, "bss_transition_query_rx", hapd->iface->openwrt_stats.wnm.bss_transition_query_rx);
-	blobmsg_add_u64(&b, "bss_transition_request_tx", hapd->iface->openwrt_stats.wnm.bss_transition_request_tx);
-	blobmsg_add_u64(&b, "bss_transition_response_rx", hapd->iface->openwrt_stats.wnm.bss_transition_response_rx);
+	blobmsg_add_u64(&b, "bss_transition_query_rx", hapd->openwrt_stats.wnm.bss_transition_query_rx);
+	blobmsg_add_u64(&b, "bss_transition_request_tx", hapd->openwrt_stats.wnm.bss_transition_request_tx);
+	blobmsg_add_u64(&b, "bss_transition_response_rx", hapd->openwrt_stats.wnm.bss_transition_response_rx);
 	blobmsg_close_table(&b, wnm_table);
 
 	/* Airtime */



More information about the lede-commits mailing list