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 DF385A0C4B; Thu, 14 Oct 2021 04:51:45 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AF48240042; Thu, 14 Oct 2021 04:51:45 +0200 (CEST) Received: from smtpproxy21.qq.com (smtpbg704.qq.com [203.205.195.105]) by mails.dpdk.org (Postfix) with ESMTP id 2928F40041 for ; Thu, 14 Oct 2021 04:51:42 +0200 (CEST) X-QQ-mid: bizesmtp33t1634179897tuebyfpd Received: from jiawenwu (unknown [183.129.236.74]) by esmtp6.qq.com (ESMTP) with id ; Thu, 14 Oct 2021 10:51:36 +0800 (CST) X-QQ-SSF: 01400000002000E0I000B00A0000000 X-QQ-FEAT: eTtJes0duVvMABM+1PBV+5Sf1JNILk7Oo9U43jIKpkENvKaaGxba0DePI/zVT BYODb1Q9aMl/TwuRukeu9yDXq3UayHP7QpysdIV8qoWC3hmDpsvef0jLM6lzE++iZUlu838 9gpRK8An8baVMaXahbMgPzFKDLUW0S4a2xsILmW3v+h9+qZHGgngFINVyuHfc3fG+XxAhVx a4NOCtIELclAaf7i5OSAu9n0UOk5dWWaWS5/6wASkDJpYCmyAetBK+LBgdvj7VWO3a+pk2s 3gDd6H5cidrP1VSpbDcgCxjGHsgqn5ZX4v8MTtp2yBJ59j8NAN8LdPktRdnVqsGOdWHS1VZ LXZX+ezuROXXAik+oK7/I0chOhqbA== X-QQ-GoodBg: 2 From: "Jiawen Wu" To: "'Ferruh Yigit'" Cc: References: <20210908083758.312055-1-jiawenwu@trustnetic.com> <20210908083758.312055-9-jiawenwu@trustnetic.com> <6f9b2986-eb44-0729-b98a-9972abaa35fc@intel.com> In-Reply-To: <6f9b2986-eb44-0729-b98a-9972abaa35fc@intel.com> Date: Thu, 14 Oct 2021 10:51:36 +0800 Message-ID: <000801d7c0a6$681045c0$3830d140$@trustnetic.com>+72B353A4DDF28BAA MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQIOtMP2PGxNII75rhGYQ2F9RaTVpgI/bWuMAf3ndyGrQe5OkA== Content-Language: zh-cn X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybgforeign:qybgforeign1 X-QQ-Bgrelay: 1 Subject: Re: [dpdk-dev] [PATCH 08/32] net/ngbe: support basic statistics 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 September 16, 2021 12:51 AM, Ferruh Yigit wrote: > On 9/8/2021 9:37 AM, Jiawen Wu wrote: > > Support to read and clear basic statistics, and configure per-queue > > stats counter mapping. > > > > Signed-off-by: Jiawen Wu > > --- > > doc/guides/nics/features/ngbe.ini | 2 + > > doc/guides/nics/ngbe.rst | 1 + > > drivers/net/ngbe/base/ngbe_dummy.h | 5 + > > drivers/net/ngbe/base/ngbe_hw.c | 101 ++++++++++ > > drivers/net/ngbe/base/ngbe_hw.h | 1 + > > drivers/net/ngbe/base/ngbe_type.h | 134 +++++++++++++ > > drivers/net/ngbe/ngbe_ethdev.c | 300 > +++++++++++++++++++++++++++++ > > drivers/net/ngbe/ngbe_ethdev.h | 19 ++ > > 8 files changed, 563 insertions(+) > > >=20 > <...> >=20 > > +static int > > +ngbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats > > +*stats) { > > + struct ngbe_hw *hw =3D ngbe_dev_hw(dev); > > + struct ngbe_hw_stats *hw_stats =3D NGBE_DEV_STATS(dev); > > + struct ngbe_stat_mappings *stat_mappings =3D > > + NGBE_DEV_STAT_MAPPINGS(dev); > > + uint32_t i, j; > > + > > + ngbe_read_stats_registers(hw, hw_stats); > > + > > + if (stats =3D=3D NULL) > > + return -EINVAL; > > + > > + /* Fill out the rte_eth_stats statistics structure */ > > + stats->ipackets =3D hw_stats->rx_packets; > > + stats->ibytes =3D hw_stats->rx_bytes; > > + stats->opackets =3D hw_stats->tx_packets; > > + stats->obytes =3D hw_stats->tx_bytes; > > + > > + memset(&stats->q_ipackets, 0, sizeof(stats->q_ipackets)); > > + memset(&stats->q_opackets, 0, sizeof(stats->q_opackets)); > > + memset(&stats->q_ibytes, 0, sizeof(stats->q_ibytes)); > > + memset(&stats->q_obytes, 0, sizeof(stats->q_obytes)); > > + memset(&stats->q_errors, 0, sizeof(stats->q_errors)); > > + for (i =3D 0; i < NGBE_MAX_QP; i++) { > > + uint32_t n =3D i / NB_QMAP_FIELDS_PER_QSM_REG; > > + uint32_t offset =3D (i % NB_QMAP_FIELDS_PER_QSM_REG) * 8; > > + uint32_t q_map; > > + > > + q_map =3D (stat_mappings->rqsm[n] >> offset) > > + & QMAP_FIELD_RESERVED_BITS_MASK; > > + j =3D (q_map < RTE_ETHDEV_QUEUE_STAT_CNTRS > > + ? q_map : q_map % RTE_ETHDEV_QUEUE_STAT_CNTRS); > > + stats->q_ipackets[j] +=3D hw_stats->qp[i].rx_qp_packets; > > + stats->q_ibytes[j] +=3D hw_stats->qp[i].rx_qp_bytes; > > + > > + q_map =3D (stat_mappings->tqsm[n] >> offset) > > + & QMAP_FIELD_RESERVED_BITS_MASK; > > + j =3D (q_map < RTE_ETHDEV_QUEUE_STAT_CNTRS > > + ? q_map : q_map % RTE_ETHDEV_QUEUE_STAT_CNTRS); > > + stats->q_opackets[j] +=3D hw_stats->qp[i].tx_qp_packets; > > + stats->q_obytes[j] +=3D hw_stats->qp[i].tx_qp_bytes; > > + } > > + > > + /* Rx Errors */ > > + stats->imissed =3D hw_stats->rx_total_missed_packets + > > + hw_stats->rx_dma_drop; > > + stats->ierrors =3D hw_stats->rx_crc_errors + > > + hw_stats->rx_mac_short_packet_dropped + > > + hw_stats->rx_length_errors + > > + hw_stats->rx_undersize_errors + > > + hw_stats->rx_oversize_errors + > > + hw_stats->rx_illegal_byte_errors + > > + hw_stats->rx_error_bytes + > > + hw_stats->rx_fragment_errors; > > + > > + /* Tx Errors */ > > + stats->oerrors =3D 0; > > + return 0; >=20 > You can consider keeping 'stats->rx_nombuf' stats too, this needs to = be > calculated by driver. >=20 I see ' stats->rx_nombuf =3D dev->data->rx_mbuf_alloc_failed' in the = function rte_eth_stats_get, before calling stats_get ops. Should I write it again here? > <...> >=20 > > + > > static int > > ngbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info > > *dev_info) { @@ -1462,6 +1759,9 @@ static const struct eth_dev_ops > > ngbe_eth_dev_ops =3D { > > .dev_close =3D ngbe_dev_close, > > .dev_reset =3D ngbe_dev_reset, > > .link_update =3D ngbe_dev_link_update, > > + .stats_get =3D ngbe_dev_stats_get, > > + .stats_reset =3D ngbe_dev_stats_reset, > > + .queue_stats_mapping_set =3D ngbe_dev_queue_stats_mapping_set, >=20 > 'queue_stats_mapping_set' is only needed when number of stats = registers are > less than number of queues. If this is not the case for you please = drop this > support. >=20 > And we are switching to qstats on extending stat, please see > 'RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS'. This is mainly done to remove the > compile time 'RTE_ETHDEV_QUEUE_STAT_CNTRS' limitation. >=20 > Btw, 'RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS' seems missing, you should > have it in the driver. >=20