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: 9aace75fc8
("i40e: fix statistics")
Cc: stable@dpdk.org
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
parent
093e1afa24
commit
763de290cb
@ -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 +
|
||||
|
Loading…
Reference in New Issue
Block a user