From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AFE79A0A02; Fri, 26 Mar 2021 15:17:33 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6D65D140E96; Fri, 26 Mar 2021 15:17:33 +0100 (CET) Received: from mail-io1-f49.google.com (mail-io1-f49.google.com [209.85.166.49]) by mails.dpdk.org (Postfix) with ESMTP id DB32940685 for ; Fri, 26 Mar 2021 15:17:31 +0100 (CET) Received: by mail-io1-f49.google.com with SMTP id e8so5533961iok.5 for ; Fri, 26 Mar 2021 07:17:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=9bqBoiWIlKML4bHWCAibi9U3shhEMzDze3bI545TH3A=; b=SilnNVD8UVBoYKLS7tALnym3IglsUz2IjEEr47ee8dYCl6EXH/48RkNWIM4e8w2Io6 tgRuXsvssTms34Pkn503FADUgiDDzY3DcIhAMZxmCz4Pv6FYKW03DbX7hQVtwdQD6m8g 1fHeRXcyXr6bT4LbQMf5ZiRmEEJtpNdddGqpm5ItNw6qSZDlSdWJ8GS91etjAlyZC3hj 7d/3eq+A9y8iS3XcFqNhGY4hMw/Tew3yqDV0urtLphVzwyCCaBreasl4byX57MWdZg7g ZleeowfdQ2I5jqUsSN4CuN/58SxiQrplLPz6Pj8BOxEMemqmwcMOohCwol35dHXrrLRw 8Bkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=9bqBoiWIlKML4bHWCAibi9U3shhEMzDze3bI545TH3A=; b=OAvTyA+H/KAl1RApnDyKbojdKcvSPD9lLLge4NFPy8294wNc9GxVckro0eMXbZtOGT YrW+NecE6jZPB19Lf9kqQ9ot4KzbcrLd01a5EU1wRgNby7K47YP8JrFvYfaQqvQ1nHiM 0ilgfJ95jPc2CDXN4joAmKQkkLTEOzJHeFNjKoMjQtjHT405D5ZwC45h2VcZzeP6AnTu ygHL7sa7dAWjo4On95VktkW2ucJaNQqPN2tmFiMlZCkYJjjwBSG3ILNePfPzY64El6xQ ImiD4ie1J9W2TF9ioakJHy0J3mQCKp1N+90LLkvpP6so8tQ6l6Yld+uGUyHPzMJf1qag 4k5Q== X-Gm-Message-State: AOAM533xg/0O063CJcAvbyjwyYb5ERglkaq7OB8iepBFaE2rk/hBpQzQ XaUtx0QpXpYzE3GAun+Cqr6x/S8NE68XRUBmIHo= X-Google-Smtp-Source: ABdhPJw0t+ifDojkqyKh1YIjlZmzTORQdJsrRXRh734aoauX2zcZJuFxah/4PUdLxQRqt8k71DqytLP2iQGsOPV1g8A= X-Received: by 2002:a02:7086:: with SMTP id f128mr11942018jac.104.1616768251134; Fri, 26 Mar 2021 07:17:31 -0700 (PDT) MIME-Version: 1.0 References: <20210305133918.8005-1-ndabilpuram@marvell.com> <20210305133918.8005-28-ndabilpuram@marvell.com> In-Reply-To: <20210305133918.8005-28-ndabilpuram@marvell.com> From: Jerin Jacob Date: Fri, 26 Mar 2021 19:47:14 +0530 Message-ID: To: Nithin Dabilpuram Cc: dpdk-dev , Jerin Jacob , Sunil Kumar Kori , Satha Koteswara Rao Kottidi , Pavan Nikhilesh , Kiran Kumar K , Satheesh Paul , Ashwin Sekhar Thalakalath Kottilveetil Content-Type: text/plain; charset="UTF-8" Subject: Re: [dpdk-dev] [PATCH 27/52] common/cnxk: add support for nix extended stats 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" On Fri, Mar 5, 2021 at 7:14 PM Nithin Dabilpuram wrote: > > From: Satha Rao > > Add support for retrieving NIX extended stats that are > per NIX LF and per LMAC. > > Signed-off-by: Satha Rao Please check http://mails.dpdk.org/archives/test-report/2021-March/181016.html > --- > drivers/common/cnxk/roc_nix.h | 18 ++++ > drivers/common/cnxk/roc_nix_stats.c | 172 +++++++++++++++++++++++++++++ > drivers/common/cnxk/roc_nix_xstats.h | 204 +++++++++++++++++++++++++++++++++++ > drivers/common/cnxk/version.map | 3 + > 4 files changed, 397 insertions(+) > create mode 100644 drivers/common/cnxk/roc_nix_xstats.h > > diff --git a/drivers/common/cnxk/roc_nix.h b/drivers/common/cnxk/roc_nix.h > index ee9e78b..37f84fc 100644 > --- a/drivers/common/cnxk/roc_nix.h > +++ b/drivers/common/cnxk/roc_nix.h > @@ -153,6 +153,18 @@ struct roc_nix_link_info { > uint64_t port : 8; > }; > > +/** Maximum name length for extended statistics counters */ > +#define ROC_NIX_XSTATS_NAME_SIZE 64 > + > +struct roc_nix_xstat { > + uint64_t id; /**< The index in xstats name array. */ > + uint64_t value; /**< The statistic counter value. */ > +}; > + > +struct roc_nix_xstat_name { > + char name[ROC_NIX_XSTATS_NAME_SIZE]; > +}; > + > struct roc_nix_ipsec_cfg { > uint32_t sa_size; > uint32_t tag_const; > @@ -284,6 +296,12 @@ int __roc_api roc_nix_stats_queue_get(struct roc_nix *roc_nix, uint16_t qid, > struct roc_nix_stats_queue *qstats); > int __roc_api roc_nix_stats_queue_reset(struct roc_nix *roc_nix, uint16_t qid, > bool is_rx); > +int __roc_api roc_nix_num_xstats_get(struct roc_nix *roc_nix); > +int __roc_api roc_nix_xstats_get(struct roc_nix *roc_nix, > + struct roc_nix_xstat *xstats, unsigned int n); > +int __roc_api roc_nix_xstats_names_get(struct roc_nix *roc_nix, > + struct roc_nix_xstat_name *xstats_names, > + unsigned int limit); > > /* Queue */ > int __roc_api roc_nix_rq_init(struct roc_nix *roc_nix, struct roc_nix_rq *rq, > diff --git a/drivers/common/cnxk/roc_nix_stats.c b/drivers/common/cnxk/roc_nix_stats.c > index dce496c..1f11799 100644 > --- a/drivers/common/cnxk/roc_nix_stats.c > +++ b/drivers/common/cnxk/roc_nix_stats.c > @@ -5,12 +5,24 @@ > #include > > #include "roc_api.h" > +#include "roc_nix_xstats.h" > #include "roc_priv.h" > > #define NIX_RX_STATS(val) plt_read64(nix->base + NIX_LF_RX_STATX(val)) > #define NIX_TX_STATS(val) plt_read64(nix->base + NIX_LF_TX_STATX(val)) > > int > +roc_nix_num_xstats_get(struct roc_nix *roc_nix) > +{ > + if (roc_nix_is_vf_or_sdp(roc_nix)) > + return CNXK_NIX_NUM_XSTATS_REG; > + else if (roc_model_is_cn9k()) > + return CNXK_NIX_NUM_XSTATS_CGX; > + > + return CNXK_NIX_NUM_XSTATS_RPM; > +} > + > +int > roc_nix_stats_get(struct roc_nix *roc_nix, struct roc_nix_stats *stats) > { > struct nix *nix = roc_nix_to_nix_priv(roc_nix); > @@ -237,3 +249,163 @@ roc_nix_stats_queue_reset(struct roc_nix *roc_nix, uint16_t qid, bool is_rx) > fail: > return rc; > } > + > +int > +roc_nix_xstats_get(struct roc_nix *roc_nix, struct roc_nix_xstat *xstats, > + unsigned int n) > +{ > + struct nix *nix = roc_nix_to_nix_priv(roc_nix); > + struct mbox *mbox = (&nix->dev)->mbox; > + struct cgx_stats_rsp *cgx_resp; > + struct rpm_stats_rsp *rpm_resp; > + unsigned long int i, count = 0; > + unsigned int xstat_cnt; > + struct msg_req *req; > + int rc; > + > + xstat_cnt = roc_nix_num_xstats_get(roc_nix); > + if (n < xstat_cnt) > + return xstat_cnt; > + > + if (xstats == NULL) > + return -EINVAL; > + > + memset(xstats, 0, (xstat_cnt * sizeof(*xstats))); > + for (i = 0; i < CNXK_NIX_NUM_TX_XSTATS; i++) { > + xstats[count].value = NIX_TX_STATS(nix_tx_xstats[i].offset); > + xstats[count].id = count; > + count++; > + } > + > + for (i = 0; i < CNXK_NIX_NUM_RX_XSTATS; i++) { > + xstats[count].value = NIX_RX_STATS(nix_rx_xstats[i].offset); > + xstats[count].id = count; > + count++; > + } > + > + for (i = 0; i < nix->nb_rx_queues; i++) > + xstats[count].value += > + qstat_read(nix, i, nix_q_xstats[0].offset); > + > + xstats[count].id = count; > + count++; > + > + if (roc_nix_is_vf_or_sdp(roc_nix)) > + return count; > + > + if (roc_model_is_cn9k()) { > + req = mbox_alloc_msg_cgx_stats(mbox); > + req->hdr.pcifunc = roc_nix_get_pf_func(roc_nix); > + > + rc = mbox_process_msg(mbox, (void *)&cgx_resp); > + if (rc) > + return rc; > + > + for (i = 0; i < roc_nix_num_rx_xstats(); i++) { > + xstats[count].value = > + cgx_resp->rx_stats[nix_rx_xstats_cgx[i].offset]; > + xstats[count].id = count; > + count++; > + } > + > + for (i = 0; i < roc_nix_num_tx_xstats(); i++) { > + xstats[count].value = > + cgx_resp->tx_stats[nix_tx_xstats_cgx[i].offset]; > + xstats[count].id = count; > + count++; > + } > + } else { > + req = mbox_alloc_msg_rpm_stats(mbox); > + req->hdr.pcifunc = roc_nix_get_pf_func(roc_nix); > + > + rc = mbox_process_msg(mbox, (void *)&rpm_resp); > + if (rc) > + return rc; > + > + for (i = 0; i < roc_nix_num_rx_xstats(); i++) { > + xstats[count].value = > + rpm_resp->rx_stats[nix_rx_xstats_rpm[i].offset]; > + xstats[count].id = count; > + count++; > + } > + > + for (i = 0; i < roc_nix_num_tx_xstats(); i++) { > + xstats[count].value = > + rpm_resp->tx_stats[nix_tx_xstats_rpm[i].offset]; > + xstats[count].id = count; > + count++; > + } > + } > + > + return count; > +} > + > +int > +roc_nix_xstats_names_get(struct roc_nix *roc_nix, > + struct roc_nix_xstat_name *xstats_names, > + unsigned int limit) > +{ > + unsigned long int i, count = 0; > + unsigned int xstat_cnt; > + > + xstat_cnt = roc_nix_num_xstats_get(roc_nix); > + if (limit < xstat_cnt && xstats_names != NULL) > + return -ENOMEM; > + > + if (xstats_names) { > + for (i = 0; i < CNXK_NIX_NUM_TX_XSTATS; i++) { > + snprintf(xstats_names[count].name, > + sizeof(xstats_names[count].name), "%s", > + nix_tx_xstats[i].name); > + count++; > + } > + > + for (i = 0; i < CNXK_NIX_NUM_RX_XSTATS; i++) { > + snprintf(xstats_names[count].name, > + sizeof(xstats_names[count].name), "%s", > + nix_rx_xstats[i].name); > + count++; > + } > + for (i = 0; i < CNXK_NIX_NUM_QUEUE_XSTATS; i++) { > + snprintf(xstats_names[count].name, > + sizeof(xstats_names[count].name), "%s", > + nix_q_xstats[i].name); > + count++; > + } > + > + if (roc_nix_is_vf_or_sdp(roc_nix)) > + return count; > + > + if (roc_model_is_cn9k()) { > + for (i = 0; i < roc_nix_num_rx_xstats(); i++) { > + snprintf(xstats_names[count].name, > + sizeof(xstats_names[count].name), "%s", > + nix_rx_xstats_cgx[i].name); > + count++; > + } > + > + for (i = 0; i < roc_nix_num_tx_xstats(); i++) { > + snprintf(xstats_names[count].name, > + sizeof(xstats_names[count].name), "%s", > + nix_tx_xstats_cgx[i].name); > + count++; > + } > + } else { > + for (i = 0; i < roc_nix_num_rx_xstats(); i++) { > + snprintf(xstats_names[count].name, > + sizeof(xstats_names[count].name), "%s", > + nix_rx_xstats_rpm[i].name); > + count++; > + } > + > + for (i = 0; i < roc_nix_num_tx_xstats(); i++) { > + snprintf(xstats_names[count].name, > + sizeof(xstats_names[count].name), "%s", > + nix_tx_xstats_rpm[i].name); > + count++; > + } > + } > + } > + > + return xstat_cnt; > +} > diff --git a/drivers/common/cnxk/roc_nix_xstats.h b/drivers/common/cnxk/roc_nix_xstats.h > new file mode 100644 > index 0000000..0077c84 > --- /dev/null > +++ b/drivers/common/cnxk/roc_nix_xstats.h > @@ -0,0 +1,204 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(C) 2020 Marvell. > + */ > +#ifndef _ROC_NIX_XSTAT_H_ > +#define _ROC_NIX_XSTAT_H_ > + > +#include > + > +struct cnxk_nix_xstats_name { > + char name[ROC_NIX_XSTATS_NAME_SIZE]; > + uint32_t offset; > +}; > + > +static const struct cnxk_nix_xstats_name nix_tx_xstats[] = { > + {"tx_ucast", NIX_STAT_LF_TX_TX_UCAST}, > + {"tx_bcast", NIX_STAT_LF_TX_TX_BCAST}, > + {"tx_mcast", NIX_STAT_LF_TX_TX_MCAST}, > + {"tx_drop", NIX_STAT_LF_TX_TX_DROP}, > + {"tx_octs", NIX_STAT_LF_TX_TX_OCTS}, > +}; > + > +static const struct cnxk_nix_xstats_name nix_rx_xstats[] = { > + {"rx_octs", NIX_STAT_LF_RX_RX_OCTS}, > + {"rx_ucast", NIX_STAT_LF_RX_RX_UCAST}, > + {"rx_bcast", NIX_STAT_LF_RX_RX_BCAST}, > + {"rx_mcast", NIX_STAT_LF_RX_RX_MCAST}, > + {"rx_drop", NIX_STAT_LF_RX_RX_DROP}, > + {"rx_drop_octs", NIX_STAT_LF_RX_RX_DROP_OCTS}, > + {"rx_fcs", NIX_STAT_LF_RX_RX_FCS}, > + {"rx_err", NIX_STAT_LF_RX_RX_ERR}, > + {"rx_drp_bcast", NIX_STAT_LF_RX_RX_DRP_BCAST}, > + {"rx_drp_mcast", NIX_STAT_LF_RX_RX_DRP_MCAST}, > + {"rx_drp_l3bcast", NIX_STAT_LF_RX_RX_DRP_L3BCAST}, > + {"rx_drp_l3mcast", NIX_STAT_LF_RX_RX_DRP_L3MCAST}, > +}; > + > +static const struct cnxk_nix_xstats_name nix_q_xstats[] = { > + {"rq_op_re_pkts", NIX_LF_RQ_OP_RE_PKTS}, > +}; > + > +static const struct cnxk_nix_xstats_name nix_rx_xstats_rpm[] = { > + {"rpm_rx_etherStatsOctets", RPM_MTI_STAT_RX_OCT_CNT}, > + {"rpm_rx_OctetsReceivedOK", RPM_MTI_STAT_RX_OCT_RECV_OK}, > + {"rpm_rx_aAlignmentErrors", RPM_MTI_STAT_RX_ALIG_ERR}, > + {"rpm_rx_aPAUSEMACCtrlFramesReceived", RPM_MTI_STAT_RX_CTRL_FRM_RECV}, > + {"rpm_rx_aFrameTooLongErrors", RPM_MTI_STAT_RX_FRM_LONG}, > + {"rpm_rx_aInRangeLengthErrors", RPM_MTI_STAT_RX_LEN_ERR}, > + {"rpm_rx_aFramesReceivedOK", RPM_MTI_STAT_RX_FRM_RECV}, > + {"rpm_rx_aFrameCheckSequenceErrors", RPM_MTI_STAT_RX_FRM_SEQ_ERR}, > + {"rpm_rx_VLANReceivedOK", RPM_MTI_STAT_RX_VLAN_OK}, > + {"rpm_rx_ifInErrors", RPM_MTI_STAT_RX_IN_ERR}, > + {"rpm_rx_ifInUcastPkts", RPM_MTI_STAT_RX_IN_UCAST_PKT}, > + {"rpm_rx_ifInMulticastPkts", RPM_MTI_STAT_RX_IN_MCAST_PKT}, > + {"rpm_rx_ifInBroadcastPkts", RPM_MTI_STAT_RX_IN_BCAST_PKT}, > + {"rpm_rx_etherStatsDropEvents", RPM_MTI_STAT_RX_DRP_EVENTS}, > + {"rpm_rx_etherStatsPkts", RPM_MTI_STAT_RX_PKT}, > + {"rpm_rx_etherStatsUndersizePkts", RPM_MTI_STAT_RX_UNDER_SIZE}, > + {"rpm_rx_etherStatsPkts64Octets", RPM_MTI_STAT_RX_1_64_PKT_CNT}, > + {"rpm_rx_etherStatsPkts65to127Octets", RPM_MTI_STAT_RX_65_127_PKT_CNT}, > + {"rpm_rx_etherStatsPkts128to255Octets", > + RPM_MTI_STAT_RX_128_255_PKT_CNT}, > + {"rpm_rx_etherStatsPkts256to511Octets", > + RPM_MTI_STAT_RX_256_511_PKT_CNT}, > + {"rpm_rx_etherStatsPkts512to1023Octets", > + RPM_MTI_STAT_RX_512_1023_PKT_CNT}, > + {"rpm_rx_etherStatsPkts1024to1518Octets", > + RPM_MTI_STAT_RX_1024_1518_PKT_CNT}, > + {"rpm_rx_etherStatsPkts1519toMaxOctets", > + RPM_MTI_STAT_RX_1519_MAX_PKT_CNT}, > + {"rpm_rx_etherStatsOversizePkts", RPM_MTI_STAT_RX_OVER_SIZE}, > + {"rpm_rx_etherStatsJabbers", RPM_MTI_STAT_RX_JABBER}, > + {"rpm_rx_etherStatsFragments", RPM_MTI_STAT_RX_ETH_FRAGS}, > + {"rpm_rx_CBFC_pause_frames_class_0", RPM_MTI_STAT_RX_CBFC_CLASS_0}, > + {"rpm_rx_CBFC_pause_frames_class_1", RPM_MTI_STAT_RX_CBFC_CLASS_1}, > + {"rpm_rx_CBFC_pause_frames_class_2", RPM_MTI_STAT_RX_CBFC_CLASS_2}, > + {"rpm_rx_CBFC_pause_frames_class_3", RPM_MTI_STAT_RX_CBFC_CLASS_3}, > + {"rpm_rx_CBFC_pause_frames_class_4", RPM_MTI_STAT_RX_CBFC_CLASS_4}, > + {"rpm_rx_CBFC_pause_frames_class_5", RPM_MTI_STAT_RX_CBFC_CLASS_5}, > + {"rpm_rx_CBFC_pause_frames_class_6", RPM_MTI_STAT_RX_CBFC_CLASS_6}, > + {"rpm_rx_CBFC_pause_frames_class_7", RPM_MTI_STAT_RX_CBFC_CLASS_7}, > + {"rpm_rx_CBFC_pause_frames_class_8", RPM_MTI_STAT_RX_CBFC_CLASS_8}, > + {"rpm_rx_CBFC_pause_frames_class_9", RPM_MTI_STAT_RX_CBFC_CLASS_9}, > + {"rpm_rx_CBFC_pause_frames_class_10", RPM_MTI_STAT_RX_CBFC_CLASS_10}, > + {"rpm_rx_CBFC_pause_frames_class_11", RPM_MTI_STAT_RX_CBFC_CLASS_11}, > + {"rpm_rx_CBFC_pause_frames_class_12", RPM_MTI_STAT_RX_CBFC_CLASS_12}, > + {"rpm_rx_CBFC_pause_frames_class_13", RPM_MTI_STAT_RX_CBFC_CLASS_13}, > + {"rpm_rx_CBFC_pause_frames_class_14", RPM_MTI_STAT_RX_CBFC_CLASS_14}, > + {"rpm_rx_CBFC_pause_frames_class_15", RPM_MTI_STAT_RX_CBFC_CLASS_15}, > + {"rpm_rx_aMACControlFramesReceived", RPM_MTI_STAT_RX_MAC_CONTROL}, > +}; > + > +static const struct cnxk_nix_xstats_name nix_tx_xstats_rpm[] = { > + {"rpm_tx_etherStatsOctets", RPM_MTI_STAT_TX_OCT_CNT}, > + {"rpm_tx_OctetsTransmittedOK", RPM_MTI_STAT_TX_OCT_TX_OK}, > + {"rpm_tx_aPAUSEMACCtrlFramesTransmitted", > + RPM_MTI_STAT_TX_PAUSE_MAC_CTRL}, > + {"rpm_tx_aFramesTransmittedOK", RPM_MTI_STAT_TX_FRAMES_OK}, > + {"rpm_tx_VLANTransmittedOK", RPM_MTI_STAT_TX_VLAN_OK}, > + {"rpm_tx_ifOutErrors", RPM_MTI_STAT_TX_OUT_ERR}, > + {"rpm_tx_ifOutUcastPkts", RPM_MTI_STAT_TX_UCAST_PKT_CNT}, > + {"rpm_tx_ifOutMulticastPkts", RPM_MTI_STAT_TX_MCAST_PKT_CNT}, > + {"rpm_tx_ifOutBroadcastPkts", RPM_MTI_STAT_TX_BCAST_PKT_CNT}, > + {"rpm_tx_etherStatsPkts64Octets", RPM_MTI_STAT_TX_1_64_PKT_CNT}, > + {"rpm_tx_etherStatsPkts65to127Octets", RPM_MTI_STAT_TX_65_127_PKT_CNT}, > + {"rpm_tx_etherStatsPkts128to255Octets", > + RPM_MTI_STAT_TX_128_255_PKT_CNT}, > + {"rpm_tx_etherStatsPkts256to511Octets", > + RPM_MTI_STAT_TX_256_511_PKT_CNT}, > + {"rpm_tx_etherStatsPkts512to1023Octets", > + RPM_MTI_STAT_TX_512_1023_PKT_CNT}, > + {"rpm_tx_etherStatsPkts1024to1518Octets", > + RPM_MTI_STAT_TX_1024_1518_PKT_CNT}, > + {"rpm_tx_etherStatsPkts1519toMaxOctets", > + RPM_MTI_STAT_TX_1519_MAX_PKT_CNT}, > + {"rpm_tx_CBFC_pause_frames_class_0", RPM_MTI_STAT_TX_CBFC_CLASS_0}, > + {"rpm_tx_CBFC_pause_frames_class_1", RPM_MTI_STAT_TX_CBFC_CLASS_1}, > + {"rpm_tx_CBFC_pause_frames_class_2", RPM_MTI_STAT_TX_CBFC_CLASS_2}, > + {"rpm_tx_CBFC_pause_frames_class_3", RPM_MTI_STAT_TX_CBFC_CLASS_3}, > + {"rpm_tx_CBFC_pause_frames_class_4", RPM_MTI_STAT_TX_CBFC_CLASS_4}, > + {"rpm_tx_CBFC_pause_frames_class_5", RPM_MTI_STAT_TX_CBFC_CLASS_5}, > + {"rpm_tx_CBFC_pause_frames_class_6", RPM_MTI_STAT_TX_CBFC_CLASS_6}, > + {"rpm_tx_CBFC_pause_frames_class_7", RPM_MTI_STAT_TX_CBFC_CLASS_7}, > + {"rpm_tx_CBFC_pause_frames_class_8", RPM_MTI_STAT_TX_CBFC_CLASS_8}, > + {"rpm_tx_CBFC_pause_frames_class_9", RPM_MTI_STAT_TX_CBFC_CLASS_9}, > + {"rpm_tx_CBFC_pause_frames_class_10", RPM_MTI_STAT_TX_CBFC_CLASS_10}, > + {"rpm_tx_CBFC_pause_frames_class_11", RPM_MTI_STAT_TX_CBFC_CLASS_11}, > + {"rpm_tx_CBFC_pause_frames_class_12", RPM_MTI_STAT_TX_CBFC_CLASS_12}, > + {"rpm_tx_CBFC_pause_frames_class_13", RPM_MTI_STAT_TX_CBFC_CLASS_13}, > + {"rpm_tx_CBFC_pause_frames_class_14", RPM_MTI_STAT_TX_CBFC_CLASS_14}, > + {"rpm_tx_CBFC_pause_frames_class_15", RPM_MTI_STAT_TX_CBFC_CLASS_15}, > + {"rpm_tx_aMACControlFramesTransmitted", > + RPM_MTI_STAT_TX_MAC_CONTROL_FRAMES}, > + {"rpm_tx_etherStatsPkts", RPM_MTI_STAT_TX_PKT_CNT}, > +}; > + > +static const struct cnxk_nix_xstats_name nix_rx_xstats_cgx[] = { > + {"cgx_rx_pkts", CGX_RX_PKT_CNT}, > + {"cgx_rx_octs", CGX_RX_OCT_CNT}, > + {"cgx_rx_pause_pkts", CGX_RX_PAUSE_PKT_CNT}, > + {"cgx_rx_pause_octs", CGX_RX_PAUSE_OCT_CNT}, > + {"cgx_rx_dmac_filt_pkts", CGX_RX_DMAC_FILT_PKT_CNT}, > + {"cgx_rx_dmac_filt_octs", CGX_RX_DMAC_FILT_OCT_CNT}, > + {"cgx_rx_fifo_drop_pkts", CGX_RX_FIFO_DROP_PKT_CNT}, > + {"cgx_rx_fifo_drop_octs", CGX_RX_FIFO_DROP_OCT_CNT}, > + {"cgx_rx_errors", CGX_RX_ERR_CNT}, > +}; > + > +static const struct cnxk_nix_xstats_name nix_tx_xstats_cgx[] = { > + {"cgx_tx_collision_drop", CGX_TX_COLLISION_DROP}, > + {"cgx_tx_frame_deferred_cnt", CGX_TX_FRAME_DEFER_CNT}, > + {"cgx_tx_multiple_collision", CGX_TX_MULTIPLE_COLLISION}, > + {"cgx_tx_single_collision", CGX_TX_SINGLE_COLLISION}, > + {"cgx_tx_octs", CGX_TX_OCT_CNT}, > + {"cgx_tx_pkts", CGX_TX_PKT_CNT}, > + {"cgx_tx_1_to_63_oct_frames", CGX_TX_1_63_PKT_CNT}, > + {"cgx_tx_64_oct_frames", CGX_TX_64_PKT_CNT}, > + {"cgx_tx_65_to_127_oct_frames", CGX_TX_65_127_PKT_CNT}, > + {"cgx_tx_128_to_255_oct_frames", CGX_TX_128_255_PKT_CNT}, > + {"cgx_tx_256_to_511_oct_frames", CGX_TX_256_511_PKT_CNT}, > + {"cgx_tx_512_to_1023_oct_frames", CGX_TX_512_1023_PKT_CNT}, > + {"cgx_tx_1024_to_1518_oct_frames", CGX_TX_1024_1518_PKT_CNT}, > + {"cgx_tx_1519_to_max_oct_frames", CGX_TX_1519_MAX_PKT_CNT}, > + {"cgx_tx_broadcast_packets", CGX_TX_BCAST_PKTS}, > + {"cgx_tx_multicast_packets", CGX_TX_MCAST_PKTS}, > + {"cgx_tx_underflow_packets", CGX_TX_UFLOW_PKTS}, > + {"cgx_tx_pause_packets", CGX_TX_PAUSE_PKTS}, > +}; > + > +#define CNXK_NIX_NUM_RX_XSTATS PLT_DIM(nix_rx_xstats) > +#define CNXK_NIX_NUM_TX_XSTATS PLT_DIM(nix_tx_xstats) > +#define CNXK_NIX_NUM_QUEUE_XSTATS PLT_DIM(nix_q_xstats) > +#define CNXK_NIX_NUM_RX_XSTATS_CGX PLT_DIM(nix_rx_xstats_cgx) > +#define CNXK_NIX_NUM_TX_XSTATS_CGX PLT_DIM(nix_tx_xstats_cgx) > +#define CNXK_NIX_NUM_RX_XSTATS_RPM PLT_DIM(nix_rx_xstats_rpm) > +#define CNXK_NIX_NUM_TX_XSTATS_RPM PLT_DIM(nix_tx_xstats_rpm) > + > +#define CNXK_NIX_NUM_XSTATS_REG \ > + (CNXK_NIX_NUM_RX_XSTATS + CNXK_NIX_NUM_TX_XSTATS + \ > + CNXK_NIX_NUM_QUEUE_XSTATS) > +#define CNXK_NIX_NUM_XSTATS_CGX \ > + (CNXK_NIX_NUM_XSTATS_REG + CNXK_NIX_NUM_RX_XSTATS_CGX + \ > + CNXK_NIX_NUM_TX_XSTATS_CGX) > +#define CNXK_NIX_NUM_XSTATS_RPM \ > + (CNXK_NIX_NUM_XSTATS_REG + CNXK_NIX_NUM_RX_XSTATS_RPM + \ > + CNXK_NIX_NUM_TX_XSTATS_RPM) > + > +static inline unsigned long int > +roc_nix_num_rx_xstats(void) > +{ > + if (roc_model_is_cn9k()) > + return CNXK_NIX_NUM_RX_XSTATS_CGX; > + > + return CNXK_NIX_NUM_RX_XSTATS_RPM; > +} > + > +static inline unsigned long int > +roc_nix_num_tx_xstats(void) > +{ > + if (roc_model_is_cn9k()) > + return CNXK_NIX_NUM_TX_XSTATS_CGX; > + > + return CNXK_NIX_NUM_TX_XSTATS_RPM; > +} > +#endif /* _ROC_NIX_XSTAT_H_ */ > diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map > index 8c6df6d..1b65477 100644 > --- a/drivers/common/cnxk/version.map > +++ b/drivers/common/cnxk/version.map > @@ -84,6 +84,9 @@ INTERNAL { > roc_nix_stats_queue_get; > roc_nix_stats_queue_reset; > roc_nix_stats_reset; > + roc_nix_num_xstats_get; > + roc_nix_xstats_get; > + roc_nix_xstats_names_get; > roc_nix_unregister_cq_irqs; > roc_nix_unregister_queue_irqs; > roc_npa_aura_limit_modify; > -- > 2.8.4 >