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