From 763de290cbd1dd4ed7f5319e4f5fa8a84d990e06 Mon Sep 17 00:00:00 2001 From: Qi Zhang Date: Mon, 21 Aug 2017 04:05:35 +0800 Subject: [PATCH] net/i40e: fix packet count for PF 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 previous 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 3b3f13c1bd..720f067d6e 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -2698,13 +2698,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 + -- 2.20.1