From: Harry van Haaren Date: Tue, 1 Dec 2015 10:25:40 +0000 (+0000) Subject: ixgbe: fix Tx bytes statistics with link down X-Git-Tag: spdx-start~7880 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=3f07cc490646afc17b5ad872eb440ce9f79cc900;p=dpdk.git ixgbe: fix Tx bytes statistics with link down 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 Acked-by: Pablo de Lara --- diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 808ac697e5..1b6cd8efe8 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;