diff --git a/src/cntlr.h b/src/cntlr.h index 97adc8706f9bcd3219cae3bce891abfa03b2a4aa..c31898426e5d50cbb6362d01a1e80677903255b6 100644 --- a/src/cntlr.h +++ b/src/cntlr.h @@ -167,6 +167,7 @@ struct netif_iface { int capacity; /* TODO unused */ struct node *agent; + struct netif_radio *radio; uint8_t upstream_bssid[6]; /* in the case of the interface is a bsta interface */ struct wifi_bss_element *bss; diff --git a/src/cntlr_map.c b/src/cntlr_map.c index b473ff20bb4a1e4deb7c5fdef038126adaf0f607..3a3d438b986e3eac5fada7ffb246c9a5a51ae2fc 100644 --- a/src/cntlr_map.c +++ b/src/cntlr_map.c @@ -300,6 +300,8 @@ static int topology_response_vext(struct controller *c, struct node *n, struct t fh->bss->is_bbss = true; fh->bss->is_fbss = false; + fh->radio = r; + offset += 6; /* macaddr */ } } @@ -1810,6 +1812,8 @@ int handle_oper_channel_report(void *cntlr, struct cmdu_buff *cmdu, struct node uint8_t mac[6] = {0}; uint8_t *p = (uint8_t *)tv[0][idx++]->data; struct netif_radio *r; + struct netif_iface *fh = NULL; + enum wifi_band band = BAND_UNKNOWN; uint8_t channel; uint8_t opclass; uint8_t txpower; @@ -1838,6 +1842,12 @@ int handle_oper_channel_report(void *cntlr, struct cmdu_buff *cmdu, struct node } offset++; + /* setup band */ + band = wifi_opclass_get_band(r->radio_el->cur_opclass.opclass[0].id); + list_for_each_entry(fh, &r->iflist, list) { + fh->band = band; + } + cntlr_radio_cur_opclass_dump(r->radio_el); } diff --git a/src/cntlr_ubus.c b/src/cntlr_ubus.c index d9dcd902ea18995f100f68a79bddc5971b4dfcf6..9a6e71ebb2ac0053c12e94fcc9669f7f04e3af67 100644 --- a/src/cntlr_ubus.c +++ b/src/cntlr_ubus.c @@ -563,6 +563,22 @@ static void add_array_meas_reportlist(struct blob_buf *bb, blobmsg_close_array(bb, t); } +static char *band_str(enum wifi_band band) +{ + switch (band) { + case BAND_2: + return "2.4GHz"; + case BAND_5: + return "5GHz"; + case BAND_6: + return "6GHz"; + default: + return "unknown"; + } + + return "unknown"; +} + static int _cntlr_status(struct ubus_context *ctx, struct ubus_object *obj, struct ubus_request_data *req, const char *method, struct blob_attr *msg, bool full) @@ -673,6 +689,9 @@ static int _cntlr_status(struct ubus_context *ctx, struct ubus_object *obj, blobmsg_add_string(&bb, "macaddr", stastr); blobmsg_add_string(&bb, "bssid", bssstr); + blobmsg_add_string(&bb, "ssid", s->fh->bss->ssid); + blobmsg_add_string(&bb, "band", band_str(s->fh->band)); + blobmsg_add_u32(&bb, "utilization", s->fh->bss->ch_util); blobmsg_add_u16(&bb, "conntime", s->de_sta->conn_time); blobmsg_add_u32(&bb, "time_delta", s->time_delta); blobmsg_add_u32(&bb, "dl_rate", s->de_sta->dl_rate);