From: Shivani Baranwal <quic_shivbara@xxxxxxxxxxx> Add support for MLO_STATUS control interface command to indicate per-link information. Signed-off-by: Shivani Baranwal <quic_shivbara@xxxxxxxxxxx> --- wpa_supplicant/ctrl_iface.c | 35 +++++++++++++++++++++++++++++++++++ wpa_supplicant/wpa_cli.c | 9 +++++++++ 2 files changed, 44 insertions(+) diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 3275f6bf7..d3a7587a7 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -11541,6 +11541,38 @@ static int wpas_ctrl_iface_send_dscp_query(struct wpa_supplicant *wpa_s, } +static int wpa_supplicant_ctrl_iface_mlo_status(struct wpa_supplicant *wpa_s, + const char *params, + char *buf, size_t buflen) +{ + int ret, i; + char *pos, *end; + + if (!wpa_s->valid_links) + return -1; + + pos = buf; + end = buf + buflen; + + for (i = 0; i < MAX_NUM_MLD_LINKS; i++) { + if (!(wpa_s->valid_links & BIT(i))) + continue; + + ret = os_snprintf(pos, end - pos, "link_id=%d\nfreq=%u\n" + "ap_link_addr=" MACSTR "\nsta_link_addr=" + MACSTR"\n", i, + wpa_s->links[i].freq, + MAC2STR(wpa_s->links[i].bssid), + MAC2STR(wpa_s->links[i].addr)); + if (os_snprintf_error(end - pos, ret)) + return pos - buf; + pos += ret; + } + + return pos - buf; +} + + char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s, char *buf, size_t *resp_len) { @@ -12555,6 +12587,9 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s, } else if (os_strncmp(buf, "DSCP_QUERY ", 11) == 0) { if (wpas_ctrl_iface_send_dscp_query(wpa_s, buf + 11)) reply_len = -1; + } else if (os_strncmp(buf, "MLO_STATUS", 10) == 0) { + reply_len = wpa_supplicant_ctrl_iface_mlo_status( + wpa_s, buf + 10, reply, reply_size); } else { os_memcpy(reply, "UNKNOWN COMMAND\n", 16); reply_len = 16; diff --git a/wpa_supplicant/wpa_cli.c b/wpa_supplicant/wpa_cli.c index aa0f70589..2b3a6b7b1 100644 --- a/wpa_supplicant/wpa_cli.c +++ b/wpa_supplicant/wpa_cli.c @@ -413,6 +413,12 @@ static int wpa_cli_cmd_quit(struct wpa_ctrl *ctrl, int argc, char *argv[]) } +static int wpa_cli_cmd_mlo_status(struct wpa_ctrl *ctrl, int argc, char *argv[]) +{ + return wpa_ctrl_command(ctrl, "MLO_STATUS"); +} + + static int wpa_cli_cmd_set(struct wpa_ctrl *ctrl, int argc, char *argv[]) { char cmd[256]; @@ -4037,6 +4043,9 @@ static const struct wpa_cli_cmd wpa_cli_commands[] = { { "dscp_query", wpa_cli_cmd_dscp_query, NULL, cli_cmd_flag_none, "wildcard/domain_name=<string> = Send DSCP Query" }, + { "mlo_status", wpa_cli_cmd_mlo_status, NULL, + cli_cmd_flag_none, + "[verbose] = get ml links status" }, { NULL, NULL, NULL, cli_cmd_flag_none, NULL } }; -- 2.25.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap