[dpdk-dev] net/i40e:fix VSI stats error

Message ID 20180201021128.174110-1-yanglong.wu@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Helin Zhang
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Yanglong Wu Feb. 1, 2018, 2:11 a.m. UTC
  In VF, the number of ibytes read from register
have been stripped out CRC already, but in stats, it
subtracts CRC bytes again. So it lead to RX
bytes is smaller than TX bytes.

Fixes: 98abce23(fix VF statistics)
Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 4 ----
 1 file changed, 4 deletions(-)
  

Comments

Rybalchenko, Kirill March 14, 2018, 11:59 a.m. UTC | #1
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Yanglong Wu
> Sent: Thursday 1 February 2018 02:11
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Lu, Wenzhuo
> <wenzhuo.lu@intel.com>; Wu, Yanglong <yanglong.wu@intel.com>
> Subject: [dpdk-dev] [PATCH] net/i40e:fix VSI stats error
> 
> In VF, the number of ibytes read from register have been stripped out CRC
> already, but in stats, it subtracts CRC bytes again. So it lead to RX bytes is
> smaller than TX bytes.
> 
> Fixes: 98abce23(fix VF statistics)
> Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
> ---
>  drivers/net/i40e/i40e_ethdev.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
> index c4df65df0..84e82889a 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -2440,10 +2440,6 @@ i40e_update_vsi_stats(struct i40e_vsi *vsi)
>  	i40e_stat_update_48(hw, I40E_GLV_BPRCH(idx),
> I40E_GLV_BPRCL(idx),
>  			    vsi->offset_loaded, &oes->rx_broadcast,
>  			    &nes->rx_broadcast);
> -	/* exclude CRC bytes */
> -	nes->rx_bytes -= (nes->rx_unicast + nes->rx_multicast +
> -		nes->rx_broadcast) * ETHER_CRC_LEN;
> -
>  	i40e_stat_update_32(hw, I40E_GLV_RDPC(idx), vsi->offset_loaded,
>  			    &oes->rx_discards, &nes->rx_discards);
>  	/* GLV_REPC not supported */
> --
> 2.11.0

Reviewed-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
  
Qi Zhang March 14, 2018, 12:58 p.m. UTC | #2
> -----Original Message-----
> From: Rybalchenko, Kirill
> Sent: Wednesday, March 14, 2018 8:00 PM
> To: Wu, Yanglong <yanglong.wu@intel.com>; dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Lu, Wenzhuo
> <wenzhuo.lu@intel.com>; Wu, Yanglong <yanglong.wu@intel.com>
> Subject: RE: [dpdk-dev] [PATCH] net/i40e:fix VSI stats error
> 
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Yanglong Wu
> > Sent: Thursday 1 February 2018 02:11
> > To: dev@dpdk.org
> > Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Lu, Wenzhuo
> > <wenzhuo.lu@intel.com>; Wu, Yanglong <yanglong.wu@intel.com>
> > Subject: [dpdk-dev] [PATCH] net/i40e:fix VSI stats error
> >
> > In VF, the number of ibytes read from register have been stripped out

This is not correct, statistic read from register I40E_GLV_GORCH|L does include CRC.
It should be excluded.

Regards
Qi

> > CRC already, but in stats, it subtracts CRC bytes again. So it lead to
> > RX bytes is smaller than TX bytes.

Do you mean, CRC is double stripped by software, or you assume 
> >
> > Fixes: 98abce23(fix VF statistics)
> > Signed-off-by: Yanglong Wu <yanglong.wu@intel.com>
> > ---
> >  drivers/net/i40e/i40e_ethdev.c | 4 ----
> >  1 file changed, 4 deletions(-)
> >
> > diff --git a/drivers/net/i40e/i40e_ethdev.c
> > b/drivers/net/i40e/i40e_ethdev.c index c4df65df0..84e82889a 100644
> > --- a/drivers/net/i40e/i40e_ethdev.c
> > +++ b/drivers/net/i40e/i40e_ethdev.c
> > @@ -2440,10 +2440,6 @@ i40e_update_vsi_stats(struct i40e_vsi *vsi)
> >  	i40e_stat_update_48(hw, I40E_GLV_BPRCH(idx), I40E_GLV_BPRCL(idx),
> >  			    vsi->offset_loaded, &oes->rx_broadcast,
> >  			    &nes->rx_broadcast);
> > -	/* exclude CRC bytes */
> > -	nes->rx_bytes -= (nes->rx_unicast + nes->rx_multicast +
> > -		nes->rx_broadcast) * ETHER_CRC_LEN;
> > -
> >  	i40e_stat_update_32(hw, I40E_GLV_RDPC(idx), vsi->offset_loaded,
> >  			    &oes->rx_discards, &nes->rx_discards);
> >  	/* GLV_REPC not supported */
> > --
> > 2.11.0
> 
> Reviewed-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
> 
>
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index c4df65df0..84e82889a 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -2440,10 +2440,6 @@  i40e_update_vsi_stats(struct i40e_vsi *vsi)
 	i40e_stat_update_48(hw, I40E_GLV_BPRCH(idx), I40E_GLV_BPRCL(idx),
 			    vsi->offset_loaded, &oes->rx_broadcast,
 			    &nes->rx_broadcast);
-	/* exclude CRC bytes */
-	nes->rx_bytes -= (nes->rx_unicast + nes->rx_multicast +
-		nes->rx_broadcast) * ETHER_CRC_LEN;
-
 	i40e_stat_update_32(hw, I40E_GLV_RDPC(idx), vsi->offset_loaded,
 			    &oes->rx_discards, &nes->rx_discards);
 	/* GLV_REPC not supported */