1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2021 Marvell. 3 */ 4 5 #include <rte_mempool.h> 6 #include <rte_memzone.h> 7 #include <rte_telemetry.h> 8 9 #include <roc_api.h> 10 11 #include "cnxk_mempool.h" 12 #include "cnxk_telemetry.h" 13 14 struct mempool_info_cb_arg { 15 char *pool_name; 16 struct rte_tel_data *d; 17 }; 18 19 static void 20 mempool_info_cb(struct rte_mempool *mp, void *arg) 21 { 22 struct mempool_info_cb_arg *info = (struct mempool_info_cb_arg *)arg; 23 int aura_id; 24 25 if (strncmp(mp->name, info->pool_name, RTE_MEMZONE_NAMESIZE)) 26 return; 27 28 aura_id = roc_npa_aura_handle_to_aura(mp->pool_id); 29 rte_tel_data_add_dict_int(info->d, "aura_id", aura_id); 30 } 31 32 static int 33 mempool_tel_handle_info(const char *cmd __rte_unused, const char *params, 34 struct rte_tel_data *d) 35 { 36 struct mempool_info_cb_arg mp_arg; 37 char name[RTE_MEMZONE_NAMESIZE]; 38 39 if (params == NULL || strlen(params) == 0) 40 return -EINVAL; 41 42 rte_strlcpy(name, params, RTE_MEMZONE_NAMESIZE); 43 44 rte_tel_data_start_dict(d); 45 mp_arg.pool_name = name; 46 mp_arg.d = d; 47 rte_mempool_walk(mempool_info_cb, &mp_arg); 48 49 return 0; 50 } 51 52 RTE_INIT(cnxk_mempool_init_telemetry) 53 { 54 rte_telemetry_register_cmd( 55 "/cnxk/mempool/info", mempool_tel_handle_info, 56 "Returns mempool info. Parameters: pool_name"); 57 } 58