[RFC v2 75/99] ctrl_iface: Support dumping NAN peer capabilities

Andrei Otcheretianski andrei.otcheretianski at intel.com
Tue Dec 23 03:52:19 PST 2025


This is useful for upper layers.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
---
 wpa_supplicant/nan_supplicant.c | 37 +++++++++++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 80eebbd009..7c088c1e05 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -1749,7 +1749,7 @@ int wpas_nan_ndp_terminate(struct wpa_supplicant *wpa_s, char *cmd)
 }
 
 
-/* Format: NAN_PEER_INFO <addr> <schedule|potential> */
+/* Format: NAN_PEER_INFO <addr> <schedule|potential|capa> [map_id] */
 int wpas_nan_peer_info(struct wpa_supplicant *wpa_s, const char *cmd,
 		       char *reply, size_t reply_size)
 {
@@ -1793,7 +1793,40 @@ int wpas_nan_peer_info(struct wpa_supplicant *wpa_s, const char *cmd,
 		}
 
 		ret = nan_peer_dump_pot_avail_to_buf(&pot_avail, reply, reply_size);
-	} else {
+	} else if (os_strncmp(pos + 1, "capa", 4) == 0) {
+		int map_id = 0;
+		struct nan_device_capabilities capa;
+		int written = 0;
+
+		if (os_strchr(pos + 1, ' '))
+			map_id = atoi(os_strchr(pos + 1, ' ') + 1);
+
+		if (nan_peer_get_device_capabilities(wpa_s->nan, addr, map_id,
+						     &capa) < 0) {
+			wpa_printf(MSG_DEBUG,
+				   "NAN: Failed to get capabilities for peer "
+				   MACSTR, MAC2STR(addr));
+			return -1;
+		}
+
+		written += wpa_scnprintf(reply + written, reply_size - written,
+					"supported_bands=0x%02x\n",
+					capa.supported_bands);
+		written += wpa_scnprintf(reply + written, reply_size - written,
+					"op_modes=0x%04x\n", capa.op_mode);
+		written += wpa_scnprintf(reply + written, reply_size - written,
+					"cdw_info=0x%04x\n", capa.cdw_info);
+		written += wpa_scnprintf(reply + written, reply_size - written,
+					"n_antennas=%d\n", capa.n_antennas);
+		written += wpa_scnprintf(reply + written, reply_size - written,
+					"channel_switch_time=%d\n",
+					capa.channel_switch_time);
+		written += wpa_scnprintf(reply + written, reply_size - written,
+					"capabilities=0x%02x\n", capa.capa);
+
+		ret = written;
+	}
+	else {
 		wpa_printf(MSG_DEBUG, "NAN: Unknown info type: %s", pos + 1);
 		return -1;
 	}
-- 
2.49.0




More information about the Hostap mailing list