X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_telemetry%2Frte_telemetry_parser.c;h=9bc16eef4771e79bdac4cd8e008ce6c625ca4f87;hb=474b4c1d7cce54d2217d648058ff55d40a92ebd0;hp=556abbe4a6569c2615d0ffd5def468d60c0070aa;hpb=1b756087db9345870e9f478b409ce678db25c86d;p=dpdk.git diff --git a/lib/librte_telemetry/rte_telemetry_parser.c b/lib/librte_telemetry/rte_telemetry_parser.c index 556abbe4a6..9bc16eef47 100644 --- a/lib/librte_telemetry/rte_telemetry_parser.c +++ b/lib/librte_telemetry/rte_telemetry_parser.c @@ -256,8 +256,9 @@ rte_telemetry_command_ports_all_stat_values(struct telemetry_impl *telemetry, int action, json_t *data) { int ret, num_metrics, i, p; - struct rte_metric_name *names; + struct rte_metric_value *values; uint64_t num_port_ids = 0; + uint32_t port_ids[RTE_MAX_ETHPORTS]; if (telemetry == NULL) { TELEMETRY_LOG_ERR("Invalid telemetry argument"); @@ -280,7 +281,7 @@ rte_telemetry_command_ports_all_stat_values(struct telemetry_impl *telemetry, return -1; } - num_metrics = rte_metrics_get_names(NULL, 0); + num_metrics = rte_metrics_get_values(0, NULL, 0); if (num_metrics < 0) { TELEMETRY_LOG_ERR("Cannot get metrics count"); @@ -299,8 +300,8 @@ rte_telemetry_command_ports_all_stat_values(struct telemetry_impl *telemetry, return -1; } - names = malloc(sizeof(struct rte_metric_name) * num_metrics); - if (names == NULL) { + values = malloc(sizeof(struct rte_metric_value) * num_metrics); + if (values == NULL) { TELEMETRY_LOG_ERR("Cannot allocate memory"); ret = rte_telemetry_send_error_response(telemetry, -ENOMEM); @@ -309,10 +310,10 @@ rte_telemetry_command_ports_all_stat_values(struct telemetry_impl *telemetry, return -1; } - const char *stat_names[num_metrics]; uint32_t stat_ids[num_metrics]; RTE_ETH_FOREACH_DEV(p) { + port_ids[num_port_ids] = p; num_port_ids++; } @@ -326,21 +327,25 @@ rte_telemetry_command_ports_all_stat_values(struct telemetry_impl *telemetry, goto fail; } - ret = rte_metrics_get_names(names, num_metrics); + ret = rte_metrics_get_values(port_ids[0], values, num_metrics); + if (ret < 0) { + TELEMETRY_LOG_ERR("Could not get stat values"); + goto fail; + } for (i = 0; i < num_metrics; i++) - stat_names[i] = names[i].name; + stat_ids[i] = values[i].key; - ret = rte_telemetry_stat_names_to_ids(telemetry, stat_names, stat_ids, - num_metrics); + ret = rte_telemetry_send_ports_stats_values(stat_ids, num_metrics, + port_ids, num_port_ids, telemetry); if (ret < 0) { - TELEMETRY_LOG_ERR("Could not convert stat names to IDs"); + TELEMETRY_LOG_ERR("Sending ports stats values failed"); goto fail; } return 0; fail: - free(names); + free(values); return -1; } @@ -428,6 +433,14 @@ rte_telemetry_command_ports_stats_values_by_name(struct telemetry_impl TELEMETRY_LOG_ERR("Could not convert stat names to IDs"); return -1; } + + ret = rte_telemetry_send_ports_stats_values(stat_ids, num_stat_names, + port_ids, num_port_ids, telemetry); + if (ret < 0) { + TELEMETRY_LOG_ERR("Sending ports stats values failed"); + return -1; + } + return 0; }