[dpdk-stable] [dpdk-dev] [DPDK] net/ice: fix Rx statistics

Zhang, Qi Z qi.z.zhang at intel.com
Thu Apr 25 09:30:05 CEST 2019


Hi David:

> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of David Marchand
> Sent: Thursday, April 25, 2019 3:13 PM
> To: Su, Simei <simei.su at intel.com>
> Cc: qi.zi.zhang at intel.com; Lu, Wenzhuo <wenzhuo.lu at intel.com>; Yang,
> Qiming <qiming.yang at intel.com>; dev <dev at dpdk.org>; dpdk stable
> <stable at dpdk.org>
> Subject: Re: [dpdk-dev] [DPDK] net/ice: fix Rx statistics
> 
> On Wed, Apr 24, 2019 at 9:47 AM simei <simei.su at 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: stable at dpdk.org
> >
> > Signed-off-by: Simei Su <simei.su at 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


More information about the stable mailing list