DPDK  20.05.0
rte_metrics_telemetry.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2020 Intel Corporation
3  */
4 
5 #ifdef RTE_LIBRTE_TELEMETRY
6 #include <jansson.h>
7 #else
8 #define json_t void *
9 #endif
10 
11 #include "rte_metrics.h"
12 
13 #ifndef _RTE_METRICS_TELEMETRY_H_
14 #define _RTE_METRICS_TELEMETRY_H_
15 
16 
17 enum rte_telemetry_stats_type {
18  PORT_STATS = 0,
19  GLOBAL_STATS = 1
20 };
21 
22 struct telemetry_encode_param {
23  enum rte_telemetry_stats_type type;
24  struct port_param {
25  int num_metric_ids;
26  uint32_t metric_ids[RTE_METRICS_MAX_METRICS];
27  int num_port_ids;
28  uint32_t port_ids[RTE_MAX_ETHPORTS];
29  } pp;
30 };
31 
32 struct telemetry_metrics_data {
33  int reg_index[RTE_MAX_ETHPORTS];
34  int metrics_register_done;
35 };
36 
37 struct telemetry_metrics_data tel_met_data;
38 
39 __rte_experimental
40 int32_t rte_metrics_tel_reg_all_ethdev(int *metrics_register_done,
41  int *reg_index_list);
42 
43 __rte_experimental
44 int32_t
45 rte_metrics_tel_encode_json_format(struct telemetry_encode_param *ep,
46  char **json_buffer);
47 
48 __rte_experimental
49 int32_t
50 rte_metrics_tel_get_global_stats(struct telemetry_encode_param *ep);
51 
52 __rte_experimental
53 int32_t
54 rte_metrics_tel_get_port_stats_ids(struct telemetry_encode_param *ep);
55 
56 __rte_experimental
57 int32_t
58 rte_metrics_tel_get_ports_stats_json(struct telemetry_encode_param *ep,
59  int *reg_index, char **json_buffer);
60 
61 __rte_experimental
62 int32_t
63 rte_metrics_tel_extract_data(struct telemetry_encode_param *ep, json_t *data);
64 
65 #endif