From patchwork Thu Sep 2 07:51:59 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: 97763 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 E2D70A0C4B; Thu, 2 Sep 2021 09:53:00 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9EEB040041; Thu, 2 Sep 2021 09:53:00 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id ED9EB4003C for ; Thu, 2 Sep 2021 09:52:58 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 1825LHJX028342 for ; Thu, 2 Sep 2021 00:52:57 -0700 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=wntUTo1w+/MgbTgF0E2qOABHl6z1h6glYtwLlh1vZeI=; b=S2BuAubYMcvWyzEicKoiMKY+jZ8hPDbxWHhc9yWMEbu57GNGckaXL/hcpmNUakONHGWw FBltPYzewKDi4DcaUDOM3Wo5HRTvell0ODtX+ZbFs/QrWwBDYQv0aSUGLotjlhUHZwHP vndhk+7I2mqf6IjOJt4MTIFoJKTenZK9hRkLX49hlJc0aCLVRPm5DV6/86d+xy8IdU9p InlESUgSD3w219BLiNICiiaRbA3LRKKdUwP2AqvQDes2fXs64oxE6iEkt4KekAS1if/9 /mTxS5d6hnK4t7NWY4v5/TKbnR1GelOnHYiDA/dXAFGUIoC0uJ2+04Hb9iY4W/tVUo7C 7Q== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0a-0016f401.pphosted.com with ESMTP id 3atrd2ggxx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 02 Sep 2021 00:52:57 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Thu, 2 Sep 2021 00:52:56 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Thu, 2 Sep 2021 00:52:56 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id D3D435B692A; Thu, 2 Sep 2021 00:52:53 -0700 (PDT) From: To: , Nithin Dabilpuram , "Kiran Kumar K" , Sunil Kumar Kori , Satha Rao CC: , Pavan Nikhilesh Date: Thu, 2 Sep 2021 13:21:59 +0530 Message-ID: <20210902075200.1873-1-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-Proofpoint-GUID: NqpbhuS7OmHrRiTlD1INZux9uORLhP9M X-Proofpoint-ORIG-GUID: NqpbhuS7OmHrRiTlD1INZux9uORLhP9M X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-09-02_02,2021-09-01_01,2020-04-07_01 Subject: [dpdk-dev] [PATCH] common/cnxk: add telemetry endpoints to sso 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 Sender: "dev" From: Pavan Nikhilesh Add telemetry endpoints for sso Signed-off-by: Pavan Nikhilesh --- Depends-on: series-18491 ("cnxk: enable npa and mempool telemetry") drivers/common/cnxk/cnxk_telemetry_sso.c | 50 ++++++++++++++++++++++++ drivers/common/cnxk/meson.build | 3 +- 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, 80 insertions(+), 1 deletion(-) create mode 100644 drivers/common/cnxk/cnxk_telemetry_sso.c -- 2.32.0 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 6fdb5451cb..9b778e4aff 100644 --- a/drivers/common/cnxk/meson.build +++ b/drivers/common/cnxk/meson.build @@ -61,6 +61,7 @@ sources = files( sources += files('cnxk_security.c') # Telemetry common code -sources += files('cnxk_telemetry_npa.c') +sources += files('cnxk_telemetry_npa.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 1494187e3b..126b81e13e 100644 --- a/drivers/common/cnxk/roc_idev.c +++ b/drivers/common/cnxk/roc_idev.c @@ -204,3 +204,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 84e6f1ef2d..c6423aded3 100644 --- a/drivers/common/cnxk/roc_idev_priv.h +++ b/drivers/common/cnxk/roc_idev_priv.h @@ -20,6 +20,7 @@ struct idev_cfg { uint64_t lmt_base_addr; struct roc_bphy *bphy; struct roc_cpt *cpt; + struct roc_sso *sso; }; /* Generic */ @@ -36,6 +37,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 1ccf2626bd..f56913f403 100644 --- a/drivers/common/cnxk/roc_sso.c +++ b/drivers/common/cnxk/roc_sso.c @@ -588,6 +588,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 5361d4f980..78cf9458b2 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 9cb8708a74..27c746c036 100644 --- a/drivers/common/cnxk/roc_utils.c +++ b/drivers/common/cnxk/roc_utils.c @@ -211,6 +211,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;