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

Message ID 20180201021128.174110-1-yanglong.wu@intel.com
State Superseded, archived
Delegated to: Helin Zhang
Headers show

Checks

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

Commit Message

Yanglong Wu Feb. 1, 2018, 2:11 a.m.
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

Kirill Rybalchenko March 14, 2018, 11:59 a.m. | #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>
Zhang, Qi Z March 14, 2018, 12:58 p.m. | #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 */