On Thu, Apr 25, 2019 at 9:30 AM Zhang, Qi Z <qi.z.zh...@intel.com> wrote:
> 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? > Well, sorry, but no :-) But if you are sure this is the right way, go with it. -- David Marchand