From 03a7f3b0405754d2e5513217888b3f83512e6375 Mon Sep 17 00:00:00 2001 From: Haiyue Wang Date: Fri, 15 Jan 2021 14:57:08 +0800 Subject: [PATCH] net/iavf: adjust CRC statistics calculation The AVF can support to enable / disable CRC strip, so it needs to adjust the statistics calculation for ibytes according to offload setting. Signed-off-by: Haiyue Wang Acked-by: Qi Zhang --- drivers/net/iavf/iavf_ethdev.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index e22c62ed00..87e6062737 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -1413,6 +1413,9 @@ iavf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) ret = iavf_query_stats(adapter, &pstats); if (ret == 0) { + uint8_t crc_stats_len = (dev->data->dev_conf.rxmode.offloads & + DEV_RX_OFFLOAD_KEEP_CRC) ? 0 : + RTE_ETHER_CRC_LEN; iavf_update_stats(vsi, pstats); stats->ipackets = pstats->rx_unicast + pstats->rx_multicast + pstats->rx_broadcast - pstats->rx_discards; @@ -1421,7 +1424,7 @@ iavf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) stats->imissed = pstats->rx_discards; stats->oerrors = pstats->tx_errors + pstats->tx_discards; stats->ibytes = pstats->rx_bytes; - stats->ibytes -= stats->ipackets * RTE_ETHER_CRC_LEN; + stats->ibytes -= stats->ipackets * crc_stats_len; stats->obytes = pstats->tx_bytes; } else { PMD_DRV_LOG(ERR, "Get statistics failed"); -- 2.20.1