xref: /dpdk/drivers/common/cnxk/cnxk_telemetry_sso.c (revision cb0e45cb0c9cbc1baffa4f2aeaf49222eef0182d)
1 
2 /* SPDX-License-Identifier: BSD-3-Clause
3  * Copyright(C) 2021 Marvell.
4  */
5 
6 #include <unistd.h>
7 
8 #include "cnxk_telemetry.h"
9 #include "roc_api.h"
10 #include "roc_priv.h"
11 
12 static int
cnxk_tel_sso(struct plt_tel_data * d)13 cnxk_tel_sso(struct plt_tel_data *d)
14 {
15 	struct roc_sso *roc_sso;
16 	struct sso *sso;
17 
18 	roc_sso = idev_sso_get();
19 	if (roc_sso == NULL)
20 		return SSO_ERR_DEVICE_NOT_BOUNDED;
21 
22 	sso = roc_sso_to_sso_priv(roc_sso);
23 	plt_tel_data_add_dict_ptr(d, "roc_sso", roc_sso);
24 	plt_tel_data_add_dict_ptr(d, "sso", sso);
25 	plt_tel_data_add_dict_int(d, "max_hws", roc_sso->max_hws);
26 	plt_tel_data_add_dict_int(d, "max_hwgrp", roc_sso->max_hwgrp);
27 	plt_tel_data_add_dict_int(d, "nb_hws", roc_sso->nb_hws);
28 	plt_tel_data_add_dict_int(d, "nb_hwgrp", roc_sso->nb_hwgrp);
29 	plt_tel_data_add_dict_int(d, "pf_func", sso->dev.pf_func);
30 	plt_tel_data_add_dict_int(d, "pid", getpid());
31 
32 	return 0;
33 }
34 
35 static int
cnxk_sso_tel_handle_info(const char * cmd __plt_unused,const char * params __plt_unused,struct plt_tel_data * d)36 cnxk_sso_tel_handle_info(const char *cmd __plt_unused,
37 			 const char *params __plt_unused,
38 			 struct plt_tel_data *d)
39 {
40 	plt_tel_data_start_dict(d);
41 	cnxk_tel_sso(d);
42 	return 0;
43 }
44 
PLT_INIT(cnxk_telemetry_sso_init)45 PLT_INIT(cnxk_telemetry_sso_init)
46 {
47 	plt_telemetry_register_cmd(
48 		"/cnxk/sso/info", cnxk_sso_tel_handle_info,
49 		"Returns sso information. Takes no parameters");
50 }
51