From patchwork Sun Aug 20 20:05:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zhang X-Patchwork-Id: 27673 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id D57127D14; Sun, 20 Aug 2017 14:17:25 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 488D27CD1; Sun, 20 Aug 2017 14:17:24 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP; 20 Aug 2017 05:17:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos; i="5.41,403,1498546800"; d="scan'208"; a="1164445989" Received: from dpdk_zq28.sh.intel.com ([10.67.110.203]) by orsmga001.jf.intel.com with ESMTP; 20 Aug 2017 05:17:20 -0700 From: Qi Zhang To: jingjing.wu@intel.com Cc: dev@dpdk.org, Qi Zhang , stable@dpdk.org Date: Mon, 21 Aug 2017 04:05:35 +0800 Message-Id: <20170820200535.25987-1-qi.z.zhang@intel.com> X-Mailer: git-send-email 2.9.4 Subject: [dpdk-dev] [PATCH] net/i40e: fix packet count for PF 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" Previously, for PF statistics we use VSI register for packet count but use port's register for packet bytes, that cause inconsistent situation of PF statistics when some VF is active, since it will cover VF's packet bytes but not packet count. The patch will take port register for PF packet count back, but still exclude main vsi's discard packet count. Just like pervious fix, its still not perfect,(since RX packet number is over counted when there is VF discard packet) but seems it make the overall better). Fixes: 9aace75fc82e ("i40e: fix statistics") Cc: stable@dpdk.org Signed-off-by: Qi Zhang --- drivers/net/i40e/i40e_ethdev.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 5f26e24..63acbb8 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -2664,13 +2664,14 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) /* call read registers - updates values, now write them to struct */ i40e_read_stats_registers(pf, hw); - stats->ipackets = pf->main_vsi->eth_stats.rx_unicast + - pf->main_vsi->eth_stats.rx_multicast + - pf->main_vsi->eth_stats.rx_broadcast - + stats->ipackets = ns->eth.rx_unicast + + ns->eth.rx_multicast + + ns->eth.rx_broadcast - + ns->eth.rx_discards - pf->main_vsi->eth_stats.rx_discards; - stats->opackets = pf->main_vsi->eth_stats.tx_unicast + - pf->main_vsi->eth_stats.tx_multicast + - pf->main_vsi->eth_stats.tx_broadcast; + stats->opackets = ns->eth.tx_unicast + + ns->eth.tx_multicast + + ns->eth.tx_broadcast; stats->ibytes = ns->eth.rx_bytes; stats->obytes = ns->eth.tx_bytes; stats->oerrors = ns->eth.tx_errors +