@@ -4326,6 +4326,11 @@ static int hostapd_ctrl_iface_receive_process(struct hostapd_data *hapd,
} else if (os_strncmp(buf, "STA ", 4) == 0) {
reply_len = hostapd_ctrl_iface_sta(hapd, buf + 4, reply,
reply_size);
+#ifdef CONFIG_IEEE80211BE
+ } else if (os_strncmp(buf, "LINK_STA ", 9) == 0) {
+ reply_len = hostapd_ctrl_iface_link_sta(hapd, buf + 9, reply,
+ reply_size);
+#endif /* CONFIG_IEEE80211BE */
} else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) {
reply_len = hostapd_ctrl_iface_sta_next(hapd, buf + 9, reply,
reply_size);
@@ -587,6 +587,25 @@ int hostapd_ctrl_iface_sta_next(struct hostapd_data *hapd, const char *txtaddr,
}
+#ifdef CONFIG_IEEE80211BE
+int hostapd_ctrl_iface_link_sta(struct hostapd_data *hapd,
+ const char *txtaddr, char *buf, size_t buflen)
+{
+ u8 addr[ETH_ALEN];
+ struct sta_info *sta;
+
+ if (hwaddr_aton(txtaddr, addr))
+ return -1;
+
+ sta = ap_get_link_sta(hapd, addr);
+ if (!sta)
+ return -1;
+
+ return hostapd_ctrl_iface_sta_mib(hapd, sta, buf, buflen);
+}
+#endif /* CONFIG_IEEE80211BE */
+
+
#ifdef CONFIG_P2P_MANAGER
static int p2p_manager_disconnect(struct hostapd_data *hapd, u16 stype,
u8 minor_reason_code, const u8 *addr)
@@ -15,6 +15,10 @@ int hostapd_ctrl_iface_sta(struct hostapd_data *hapd, const char *txtaddr,
char *buf, size_t buflen);
int hostapd_ctrl_iface_sta_next(struct hostapd_data *hapd, const char *txtaddr,
char *buf, size_t buflen);
+#ifdef CONFIG_IEEE80211BE
+int hostapd_ctrl_iface_link_sta(struct hostapd_data *hapd,
+ const char *txtaddr, char *buf, size_t buflen);
+#endif /* CONFIG_IEEE80211BE */
int hostapd_ctrl_iface_deauthenticate(struct hostapd_data *hapd,
const char *txtaddr);
int hostapd_ctrl_iface_disassociate(struct hostapd_data *hapd,