From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id B91288D85 for ; Tue, 1 Dec 2015 11:25:46 +0100 (CET) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga103.jf.intel.com with ESMTP; 01 Dec 2015 02:25:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,368,1444719600"; d="scan'208";a="610551131" Received: from sie-lab-212-222.ir.intel.com (HELO silpixa00366884.ir.intel.com) ([10.237.212.222]) by FMSMGA003.fm.intel.com with ESMTP; 01 Dec 2015 02:25:44 -0800 From: Harry van Haaren To: konstantin.ananyev@intel.com Date: Tue, 1 Dec 2015 10:25:40 +0000 Message-Id: <1448965540-18953-1-git-send-email-harry.van.haaren@intel.com> X-Mailer: git-send-email 1.9.1 Cc: dev@dpdk.org Subject: [dpdk-dev] [PATCH] ixgbe: fix tx_bytes statistic with link down X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Dec 2015 10:25:47 -0000 This patch fixes tx byte statistics when transmitting packets with link down. Previously, the counter would decrement 4 bytes for each packet that was transmitted with link down, causing the uint64 to wrap around. Fixes: c03fcee9abbd ("ixgbe: remove CRC size from byte counters") Reported-by: Michael Qiu Signed-off-by: Harry van Haaren --- drivers/net/ixgbe/ixgbe_ethdev.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 808ac69..1b6cd8e 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -2341,7 +2341,6 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw, { uint32_t bprc, lxon, lxoff, total; uint32_t delta_gprc = 0; - uint32_t delta_gptc = 0; unsigned i; /* Workaround for RX byte count not including CRC bytes when CRC + * strip is enabled. CRC bytes are removed from counters when crc_strip @@ -2388,7 +2387,6 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw, uint32_t delta_qprdc = IXGBE_READ_REG(hw, IXGBE_QPRDC(i)); delta_gprc += delta_qprc; - delta_gptc += delta_qptc; hw_stats->qprc[i] += delta_qprc; hw_stats->qptc[i] += delta_qptc; @@ -2444,6 +2442,8 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw, if (crc_strip == 0) hw_stats->gorc -= delta_gprc * ETHER_CRC_LEN; + uint64_t delta_gptc = IXGBE_READ_REG(hw, IXGBE_GPTC); + hw_stats->gptc += delta_gptc; hw_stats->gotc -= delta_gptc * ETHER_CRC_LEN; hw_stats->tor -= (hw_stats->tpr - old_tpr) * ETHER_CRC_LEN; @@ -2470,7 +2470,6 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw, hw_stats->lxofftxc += lxoff; total = lxon + lxoff; - hw_stats->gptc += IXGBE_READ_REG(hw, IXGBE_GPTC); hw_stats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC); hw_stats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64); hw_stats->gptc -= total; -- 1.9.1