From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE93CC4321A for ; Tue, 11 Jun 2019 16:28:27 +0000 (UTC) Received: from dpdk.org (dpdk.org [92.243.14.124]) by mail.kernel.org (Postfix) with ESMTP id 52F3620866 for ; Tue, 11 Jun 2019 16:28:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 52F3620866 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=dev-bounces@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AAF871D0B4; Tue, 11 Jun 2019 18:28:26 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 4D4051D08B for ; Tue, 11 Jun 2019 18:28:25 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jun 2019 09:28:24 -0700 X-ExtLoop1: 1 Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga004.fm.intel.com with ESMTP; 11 Jun 2019 09:28:23 -0700 Received: from fmsmsx158.amr.corp.intel.com (10.18.116.75) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 11 Jun 2019 09:28:23 -0700 Received: from fmsmsx120.amr.corp.intel.com ([169.254.15.191]) by fmsmsx158.amr.corp.intel.com ([169.254.15.159]) with mapi id 14.03.0415.000; Tue, 11 Jun 2019 09:28:22 -0700 From: "Stillwell Jr, Paul M" To: "Rong, Leyi" , "Zhang, Qi Z" CC: "dev@dpdk.org" , "Keller, Jacob E" Thread-Topic: [PATCH v2 24/66] net/ice/base: add support for reading REPC statistics Thread-Index: AQHVIG3quRit9CnAV06flcL+iIEgcKaWpFLA Date: Tue, 11 Jun 2019 16:28:21 +0000 Message-ID: References: <20190604054248.68510-1-leyi.rong@intel.com> <20190611155221.2703-1-leyi.rong@intel.com> <20190611155221.2703-25-leyi.rong@intel.com> In-Reply-To: <20190611155221.2703-25-leyi.rong@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMjQ0NjFjZGYtODJjZi00MmE5LTk1ZjEtMDZmNGMzODM2NDBjIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiaXVQOFBFMWNYTHo0N0dvZFhFYUU1NEJvTDFFOEwzXC9ia3QybEhsOTdTRlJXSEhSVnFMbG5MaDJGNHEydEJQbTEifQ== x-originating-ip: [10.1.200.108] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 24/66] net/ice/base: add support for reading REPC statistics X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" > -----Original Message----- > From: Rong, Leyi > Sent: Tuesday, June 11, 2019 8:52 AM > To: Zhang, Qi Z > Cc: dev@dpdk.org; Rong, Leyi ; Keller, Jacob E > ; Stillwell Jr, Paul M > > Subject: [PATCH v2 24/66] net/ice/base: add support for reading REPC > statistics >=20 > Add a new ice_stat_update_repc function which will read the register and > increment the appropriate statistics in the ice_eth_stats structure. >=20 > Signed-off-by: Jacob Keller > Signed-off-by: Paul M Stillwell Jr > Signed-off-by: Leyi Rong > --- > drivers/net/ice/base/ice_common.c | 51 > +++++++++++++++++++++++++++++++ > drivers/net/ice/base/ice_common.h | 3 ++ > drivers/net/ice/base/ice_type.h | 2 ++ > 3 files changed, 56 insertions(+) >=20 > diff --git a/drivers/net/ice/base/ice_common.c > b/drivers/net/ice/base/ice_common.c > index da72434d3..b4a9172b9 100644 > --- a/drivers/net/ice/base/ice_common.c > +++ b/drivers/net/ice/base/ice_common.c > @@ -4138,6 +4138,57 @@ ice_stat_update32(struct ice_hw *hw, u32 reg, > bool prev_stat_loaded, > *cur_stat =3D (new_data + BIT_ULL(32)) - *prev_stat; } >=20 > +/** > + * ice_stat_update_repc - read GLV_REPC stats from chip and update stat > +values > + * @hw: ptr to the hardware info > + * @vsi_handle: VSI handle > + * @prev_stat_loaded: bool to specify if the previous stat values are > +loaded > + * @cur_stats: ptr to current stats structure > + * > + * The GLV_REPC statistic register actually tracks two 16bit > +statistics, and > + * thus cannot be read using the normal ice_stat_update32 function. > + * > + * Read the GLV_REPC register associated with the given VSI, and update > +the > + * rx_no_desc and rx_error values in the ice_eth_stats structure. > + * > + * Because the statistics in GLV_REPC stick at 0xFFFF, the register > +must be > + * cleared each time it's read. > + * > + * Note that the GLV_RDPC register also counts the causes that would > +trigger > + * GLV_REPC. However, it does not give the finer grained detail about > +why the > + * packets are being dropped. The GLV_REPC values can be used to > +distinguish > + * whether Rx packets are dropped due to errors or due to no available > + * descriptors. > + */ > +void > +ice_stat_update_repc(struct ice_hw *hw, u16 vsi_handle, bool > prev_stat_loaded, > + struct ice_eth_stats *cur_stats) { > + u16 vsi_num, no_desc, error_cnt; > + u32 repc; > + > + if (!ice_is_vsi_valid(hw, vsi_handle)) > + return; > + > + vsi_num =3D ice_get_hw_vsi_num(hw, vsi_handle); > + > + /* If we haven't loaded stats yet, just clear the current value */ > + if (!prev_stat_loaded) { > + wr32(hw, GLV_REPC(vsi_num), 0); > + return; > + } > + > + repc =3D rd32(hw, GLV_REPC(vsi_num)); > + no_desc =3D (repc & GLV_REPC_NO_DESC_CNT_M) >> > GLV_REPC_NO_DESC_CNT_S; > + error_cnt =3D (repc & GLV_REPC_ERROR_CNT_M) >> > GLV_REPC_ERROR_CNT_S; > + > + /* Clear the count by writing to the stats register */ > + wr32(hw, GLV_REPC(vsi_num), 0); > + > + cur_stats->rx_no_desc +=3D no_desc; > + cur_stats->rx_errors +=3D error_cnt; > +} > + >=20 Is there code in DPDK to call these functions? If not then drop this patch. > /** > * ice_sched_query_elem - query element information from HW diff --git > a/drivers/net/ice/base/ice_common.h > b/drivers/net/ice/base/ice_common.h > index 10131b473..2ea4a6e8e 100644 > --- a/drivers/net/ice/base/ice_common.h > +++ b/drivers/net/ice/base/ice_common.h > @@ -205,6 +205,9 @@ ice_stat_update40(struct ice_hw *hw, u32 hireg, u32 > loreg, void ice_stat_update32(struct ice_hw *hw, u32 reg, bool > prev_stat_loaded, > u64 *prev_stat, u64 *cur_stat); > +void > +ice_stat_update_repc(struct ice_hw *hw, u16 vsi_handle, bool > prev_stat_loaded, > + struct ice_eth_stats *cur_stats); > enum ice_status > ice_sched_query_elem(struct ice_hw *hw, u32 node_teid, > struct ice_aqc_get_elem *buf); > diff --git a/drivers/net/ice/base/ice_type.h > b/drivers/net/ice/base/ice_type.h index 3523b0c35..477f34595 100644 > --- a/drivers/net/ice/base/ice_type.h > +++ b/drivers/net/ice/base/ice_type.h > @@ -853,6 +853,8 @@ struct ice_eth_stats { > u64 rx_broadcast; /* bprc */ > u64 rx_discards; /* rdpc */ > u64 rx_unknown_protocol; /* rupp */ > + u64 rx_no_desc; /* repc */ > + u64 rx_errors; /* repc */ > u64 tx_bytes; /* gotc */ > u64 tx_unicast; /* uptc */ > u64 tx_multicast; /* mptc */ > -- > 2.17.1