From patchwork Mon Dec 13 20:43:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh Bhagavatula X-Patchwork-Id: 105115 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 59729A00BE; Mon, 13 Dec 2021 21:43:22 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 40C5F406A2; Mon, 13 Dec 2021 21:43:22 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id A44DC40042 for ; Mon, 13 Dec 2021 21:43:20 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 1BDGjImk026809 for ; Mon, 13 Dec 2021 12:43:19 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=+lz6nPwch9xCWxs1b1JaKVZu/Ktdoupb9s+XkomQ7vk=; b=lCtoYwtMOmTjc5KwyjA7QYT4/SuBBrwR/NIcbnSHds66AAzJ8sO4NKKqqSI7njGClLuJ jqUpd4SVMnjM+H2qweUBFHgyIZMJ9mYcXyeNmhua4SCrCrWESXlelDgh9+3yTNXRnoX3 enC0U81+AHCSM0tO64qlru8pdy1o8QeIEEdMM4iiAoB9hsL8oFhfJurfEk5AiTD/3cfW uNKaourRrDwQgce7H7F5IXBojELFjtmuFvSIC/eB6y48ANwBEVQnOcayAkNyzKG9vphE Ywn1SnqLgDugphxq73upldXOPH+2pnuqclu+yxkDvb0OLUmIdSf++71gCHu1pYWKP5tx HA== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3cx21kjvt9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Mon, 13 Dec 2021 12:43:19 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 13 Dec 2021 12:43:17 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Mon, 13 Dec 2021 12:43:17 -0800 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id 6153E3F7075; Mon, 13 Dec 2021 12:43:15 -0800 (PST) From: To: , Nithin Dabilpuram , "Kiran Kumar K" , Sunil Kumar Kori , Satha Rao CC: , Pavan Nikhilesh Subject: [PATCH] common/cnxk: add telemetry endpoints to SSO Date: Tue, 14 Dec 2021 02:13:08 +0530 Message-ID: <20211213204309.5432-1-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-Proofpoint-GUID: rkg6Vgl16I9Ke2SPSuEFxc8ICGNUxIiG X-Proofpoint-ORIG-GUID: rkg6Vgl16I9Ke2SPSuEFxc8ICGNUxIiG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2021-12-13_10,2021-12-13_01,2021-12-02_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Pavan Nikhilesh Add common telemetry endpoints for SSO. Signed-off-by: Pavan Nikhilesh --- drivers/common/cnxk/cnxk_telemetry_sso.c | 50 ++++++++++++++++++++++++ drivers/common/cnxk/meson.build | 4 +- drivers/common/cnxk/roc_idev.c | 20 ++++++++++ drivers/common/cnxk/roc_idev_priv.h | 3 ++ drivers/common/cnxk/roc_sso.c | 1 + drivers/common/cnxk/roc_sso_priv.h | 1 + drivers/common/cnxk/roc_utils.c | 3 ++ 7 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 drivers/common/cnxk/cnxk_telemetry_sso.c diff --git a/drivers/common/cnxk/cnxk_telemetry_sso.c b/drivers/common/cnxk/cnxk_telemetry_sso.c new file mode 100644 index 0000000000..822934ebd7 --- /dev/null +++ b/drivers/common/cnxk/cnxk_telemetry_sso.c @@ -0,0 +1,50 @@ + +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +#include + +#include "cnxk_telemetry.h" +#include "roc_api.h" +#include "roc_priv.h" + +static int +cnxk_tel_sso(struct plt_tel_data *d) +{ + struct roc_sso *roc_sso; + struct sso *sso; + + roc_sso = idev_sso_get(); + if (roc_sso == NULL) + return SSO_ERR_DEVICE_NOT_BOUNDED; + + sso = roc_sso_to_sso_priv(roc_sso); + plt_tel_data_add_dict_ptr(d, "roc_sso", roc_sso); + plt_tel_data_add_dict_ptr(d, "sso", sso); + plt_tel_data_add_dict_int(d, "max_hws", roc_sso->max_hws); + plt_tel_data_add_dict_int(d, "max_hwgrp", roc_sso->max_hwgrp); + plt_tel_data_add_dict_int(d, "nb_hws", roc_sso->nb_hws); + plt_tel_data_add_dict_int(d, "nb_hwgrp", roc_sso->nb_hwgrp); + plt_tel_data_add_dict_int(d, "pf_func", sso->dev.pf_func); + plt_tel_data_add_dict_int(d, "pid", getpid()); + + return 0; +} + +static int +cnxk_sso_tel_handle_info(const char *cmd __plt_unused, + const char *params __plt_unused, + struct plt_tel_data *d) +{ + plt_tel_data_start_dict(d); + cnxk_tel_sso(d); + return 0; +} + +PLT_INIT(cnxk_telemetry_sso_init) +{ + plt_telemetry_register_cmd( + "/cnxk/sso/info", cnxk_sso_tel_handle_info, + "Returns sso information. Takes no parameters"); +} diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build index 4928f7e549..88407af828 100644 --- a/drivers/common/cnxk/meson.build +++ b/drivers/common/cnxk/meson.build @@ -77,6 +77,8 @@ includes += include_directories('../../../lib/meter') # Telemetry common code sources += files('cnxk_telemetry_bphy.c', 'cnxk_telemetry_npa.c', - 'cnxk_telemetry_nix.c') + 'cnxk_telemetry_nix.c', + 'cnxk_telemetry_sso.c', +) deps += ['bus_pci', 'net', 'telemetry'] diff --git a/drivers/common/cnxk/roc_idev.c b/drivers/common/cnxk/roc_idev.c index 648f37b3bb..b1f38fb5fc 100644 --- a/drivers/common/cnxk/roc_idev.c +++ b/drivers/common/cnxk/roc_idev.c @@ -206,3 +206,23 @@ roc_idev_npa_nix_get(void) dev = container_of(npa_lf, struct dev, npa); return dev->roc_nix; } + +struct roc_sso * +idev_sso_get(void) +{ + struct idev_cfg *idev = idev_get_cfg(); + + if (idev != NULL) + return __atomic_load_n(&idev->sso, __ATOMIC_ACQUIRE); + + return NULL; +} + +void +idev_sso_set(struct roc_sso *sso) +{ + struct idev_cfg *idev = idev_get_cfg(); + + if (idev != NULL) + __atomic_store_n(&idev->sso, sso, __ATOMIC_RELEASE); +} diff --git a/drivers/common/cnxk/roc_idev_priv.h b/drivers/common/cnxk/roc_idev_priv.h index 2c8309b8fd..46eebffcbb 100644 --- a/drivers/common/cnxk/roc_idev_priv.h +++ b/drivers/common/cnxk/roc_idev_priv.h @@ -21,6 +21,7 @@ struct idev_cfg { uint64_t lmt_base_addr; struct roc_bphy *bphy; struct roc_cpt *cpt; + struct roc_sso *sso; struct nix_inl_dev *nix_inl_dev; plt_spinlock_t nix_inl_dev_lock; }; @@ -39,6 +40,8 @@ uint16_t idev_npa_lf_active(struct dev *dev); /* idev sso */ void idev_sso_pffunc_set(uint16_t sso_pf_func); uint16_t idev_sso_pffunc_get(void); +struct roc_sso *idev_sso_get(void); +void idev_sso_set(struct roc_sso *sso); /* idev lmt */ uint16_t idev_lmt_pffunc_get(void); diff --git a/drivers/common/cnxk/roc_sso.c b/drivers/common/cnxk/roc_sso.c index 45ff16ca0e..1b85f04970 100644 --- a/drivers/common/cnxk/roc_sso.c +++ b/drivers/common/cnxk/roc_sso.c @@ -726,6 +726,7 @@ roc_sso_dev_init(struct roc_sso *roc_sso) link_mem = PLT_PTR_ADD(link_mem, link_map_sz); } idev_sso_pffunc_set(sso->dev.pf_func); + idev_sso_set(roc_sso); sso->pci_dev = pci_dev; sso->dev.drv_inited = true; roc_sso->lmt_base = sso->dev.lmt_base; diff --git a/drivers/common/cnxk/roc_sso_priv.h b/drivers/common/cnxk/roc_sso_priv.h index 2e1b025d1c..09729d4f62 100644 --- a/drivers/common/cnxk/roc_sso_priv.h +++ b/drivers/common/cnxk/roc_sso_priv.h @@ -26,6 +26,7 @@ struct sso { enum sso_err_status { SSO_ERR_PARAM = -4096, + SSO_ERR_DEVICE_NOT_BOUNDED = -4097, }; enum sso_lf_type { diff --git a/drivers/common/cnxk/roc_utils.c b/drivers/common/cnxk/roc_utils.c index f1b5ef3b70..495e62a315 100644 --- a/drivers/common/cnxk/roc_utils.c +++ b/drivers/common/cnxk/roc_utils.c @@ -220,6 +220,9 @@ roc_error_msg_get(int errorcode) case NIX_AF_ERR_PTP_CONFIG_FAIL: err_msg = "PTP config failed"; break; + case SSO_ERR_DEVICE_NOT_BOUNDED: + err_msg = "SSO pf/vf not found"; + break; case UTIL_ERR_FS: err_msg = "file operation failed"; break;