This adds information from mac80211 to hostapd get_client ubus function.
This way, TX as well as RX status information as well as the signal can
be determined.

Signed-off-by: David Bauer <m...@david-bauer.net>
---
 .../services/hostapd/src/src/ap/ubus.c        | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/package/network/services/hostapd/src/src/ap/ubus.c 
b/package/network/services/hostapd/src/src/ap/ubus.c
index 33b9995e06..3bad4d2e0f 100644
--- a/package/network/services/hostapd/src/src/ap/ubus.c
+++ b/package/network/services/hostapd/src/src/ap/ubus.c
@@ -215,6 +215,7 @@ hostapd_bss_get_clients(struct ubus_context *ctx, struct 
ubus_object *obj,
                        struct blob_attr *msg)
 {
        struct hostapd_data *hapd = container_of(obj, struct hostapd_data, 
ubus.obj);
+       struct hostap_sta_driver_data sta_driver_data;
        struct sta_info *sta;
        void *list, *c;
        char mac_buf[20];
@@ -257,6 +258,29 @@ hostapd_bss_get_clients(struct ubus_context *ctx, struct 
ubus_object *obj,
                if (retrieve_sta_taxonomy(hapd, sta, r, 1024) > 0)
                        blobmsg_add_string_buffer(&b);
 #endif
+
+               /* Driver information */
+               if (hostapd_drv_read_sta_data(hapd, &sta_driver_data, 
sta->addr) >= 0) {
+                       r = blobmsg_open_table(&b, "bytes");
+                       blobmsg_add_u64(&b, "rx", sta_driver_data.rx_bytes);
+                       blobmsg_add_u64(&b, "tx", sta_driver_data.tx_bytes);
+                       blobmsg_close_table(&b, r);
+                       r = blobmsg_open_table(&b, "airtime");
+                       blobmsg_add_u64(&b, "rx", sta_driver_data.rx_airtime);
+                       blobmsg_add_u64(&b, "tx", sta_driver_data.tx_airtime);
+                       blobmsg_close_table(&b, r);
+                       r = blobmsg_open_table(&b, "packets");
+                       blobmsg_add_u32(&b, "rx", sta_driver_data.rx_packets);
+                       blobmsg_add_u32(&b, "tx", sta_driver_data.tx_packets);
+                       blobmsg_close_table(&b, r);
+                       r = blobmsg_open_table(&b, "rate");
+                       /* Rate in kbits */
+                       blobmsg_add_u32(&b, "rx", 
sta_driver_data.current_rx_rate * 100);
+                       blobmsg_add_u32(&b, "tx", 
sta_driver_data.current_tx_rate * 100);
+                       blobmsg_close_table(&b, r);
+                       blobmsg_add_u32(&b, "signal", sta_driver_data.signal);
+               }
+
                blobmsg_close_table(&b, c);
        }
        blobmsg_close_array(&b, list);
-- 
2.29.2


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to