Add /dmadev/list_names telemetry endpoint which returns a dictionary
keyed by device ID with device name as the value, so users can
identify devices by name directly from the telemetry output.

Original /dmadev/list output:
  {"/dmadev/list": [0, 1]}

New /dmadev/list_names output:
  {"/dmadev/list_names": {"0": "hisi_sec2-0-dma0",
  "1": "hisi_sec2-0-dma1"}}

Signed-off-by: Chengwen Feng <[email protected]>
---
 lib/dmadev/rte_dmadev.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
index b75b4f9bd1..98ef7e2b93 100644
--- a/lib/dmadev/rte_dmadev.c
+++ b/lib/dmadev/rte_dmadev.c
@@ -1157,6 +1157,27 @@ dmadev_handle_dev_list(const char *cmd __rte_unused,
        return 0;
 }
 
+static int
+dmadev_handle_dev_list_names(const char *cmd __rte_unused,
+               const char *params __rte_unused,
+               struct rte_tel_data *d)
+{
+       char id_str[RTE_TEL_MAX_STRING_LEN];
+       struct rte_dma_dev *dev;
+       int dev_id;
+
+       rte_tel_data_start_dict(d);
+       for (dev_id = 0; dev_id < dma_devices_max; dev_id++) {
+               if (!rte_dma_is_valid(dev_id))
+                       continue;
+               dev = &rte_dma_devices[dev_id];
+               sprintf(id_str, "%d", dev_id);
+               rte_tel_data_add_dict_string(d, id_str, dev->data->dev_name);
+       }
+
+       return 0;
+}
+
 #define ADD_CAPA(td, dc, c) rte_tel_data_add_dict_int(td, 
dma_capability_name(c), !!(dc & c))
 
 static int
@@ -1309,6 +1330,8 @@ RTE_INIT(dmadev_init_telemetry)
 {
        rte_telemetry_register_cmd("/dmadev/list", dmadev_handle_dev_list,
                        "Returns list of available dmadev devices by IDs. No 
parameters.");
+       rte_telemetry_register_cmd("/dmadev/list_names", 
dmadev_handle_dev_list_names,
+                       "Returns dict of available dmadev devices by ID-NAMEs. 
No parameters.");
        rte_telemetry_register_cmd("/dmadev/info", dmadev_handle_dev_info,
                        "Returns information for a dmadev. Parameters: int 
dev_id");
        rte_telemetry_register_cmd("/dmadev/stats", dmadev_handle_dev_stats,
-- 
2.17.1

Reply via email to