Hi David: > -----Original Message----- > From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of David Marchand > Sent: Thursday, April 25, 2019 3:13 PM > To: Su, Simei <simei...@intel.com> > Cc: qi.zi.zh...@intel.com; Lu, Wenzhuo <wenzhuo...@intel.com>; Yang, > Qiming <qiming.y...@intel.com>; dev <dev@dpdk.org>; dpdk stable > <sta...@dpdk.org> > Subject: Re: [dpdk-dev] [DPDK] net/ice: fix Rx statistics > > On Wed, Apr 24, 2019 at 9:47 AM simei <simei...@intel.com> wrote: > > > The RX stats will increase even no packets sent, this patch fix this > > issue by modifying ipackets and ibytes statistics based on vsi instead > > of port to avoid statistics error. > > > > Fixes: a37bde56314d ("net/ice: support statistics") > > Cc: sta...@dpdk.org > > > > Signed-off-by: Simei Su <simei...@intel.com> > > --- > > drivers/net/ice/ice_ethdev.c | 9 ++++----- > > 1 file changed, 4 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/net/ice/ice_ethdev.c > > b/drivers/net/ice/ice_ethdev.c index 0946b19..1c851ac 100644 > > --- a/drivers/net/ice/ice_ethdev.c > > +++ b/drivers/net/ice/ice_ethdev.c > > @@ -3305,15 +3305,14 @@ static int ice_rx_queue_intr_disable(struct > > rte_eth_dev *dev, > > /* call read registers - updates values, now write them to > > struct */ > > ice_read_stats_registers(pf, hw); > > > > - stats->ipackets = ns->eth.rx_unicast + > > - ns->eth.rx_multicast + > > - ns->eth.rx_broadcast - > > - ns->eth.rx_discards - > > + stats->ipackets = pf->main_vsi->eth_stats.rx_unicast + > > + pf->main_vsi->eth_stats.rx_multicast + > > + pf->main_vsi->eth_stats.rx_broadcast - > > pf->main_vsi->eth_stats.rx_discards; > > stats->opackets = ns->eth.tx_unicast + > > ns->eth.tx_multicast + > > ns->eth.tx_broadcast; > > - stats->ibytes = ns->eth.rx_bytes; > > + stats->ibytes = pf->main_vsi->eth_stats.rx_bytes; > > stats->obytes = ns->eth.tx_bytes; > > stats->oerrors = ns->eth.tx_errors + > > pf->main_vsi->eth_stats.tx_errors; > > -- > > 1.8.3.1 > > > > > I don't know this hw nor this code. > However, from the description and this snippet, it looks like > opackets/obytes/oerrors are still referring to port stats instead of the pf > stats. > Can you elaborate ?
For Rx, packet comes to port then vsi, so we count vsi->rx for how many valid packet we received. For Tx, packet comes to vsi then port, so we count port->tx for how many packet we exactly sent out? Does this make sense? Btw, this is the same way we handled statistics on i40e. Regards Qi > > Thanks. > > > -- > David Marchand