[dpdk-dev] net/i40e: fix VF Tx bytes

Message ID 1499543665-16166-1-git-send-email-qi.z.zhang@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers

Checks

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

Commit Message

Qi Zhang July 8, 2017, 7:54 p.m. UTC
  CRC size on Tx path is not necessary to be excluded.

Fixes: 98abce237ba7 ("net/i40e: fix VF statistics")
Cc: stable@dpdk.org

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 3 ---
 1 file changed, 3 deletions(-)
  

Comments

Xing, Beilei July 10, 2017, 2:45 a.m. UTC | #1
> -----Original Message-----
> From: Zhang, Qi Z
> Sent: Sunday, July 9, 2017 3:54 AM
> To: Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>;
> Yigit, Ferruh <ferruh.yigit@intel.com>
> Cc: dev@dpdk.org; Zhang, Helin <helin.zhang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; stable@dpdk.org
> Subject: [PATCH] net/i40e: fix VF Tx bytes
> 
> CRC size on Tx path is not necessary to be excluded.
> 
> Fixes: 98abce237ba7 ("net/i40e: fix VF statistics")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>

Acked-by: Beilei Xing <beilei.xing@intel.com>

The patch is OK for me, just little comment, it's better to detail the commit log to explain why we need to exclude it.
  
Stephen Hemminger July 11, 2017, 7:56 p.m. UTC | #2
On Sat,  8 Jul 2017 15:54:25 -0400
Qi Zhang <qi.z.zhang@intel.com> wrote:

> CRC size on Tx path is not necessary to be excluded.
> 
> Fixes: 98abce237ba7 ("net/i40e: fix VF statistics")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
> ---
>  drivers/net/i40e/i40e_ethdev.c | 3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
> index 71cb7d3..0585869 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -2353,9 +2353,6 @@ i40e_update_vsi_stats(struct i40e_vsi *vsi)
>  	i40e_stat_update_48(hw, I40E_GLV_BPTCH(idx), I40E_GLV_BPTCL(idx),
>  			    vsi->offset_loaded,  &oes->tx_broadcast,
>  			    &nes->tx_broadcast);
> -	/* exclude CRC bytes */
> -	nes->tx_bytes -= (nes->tx_unicast + nes->tx_multicast +
> -		nes->tx_broadcast) * ETHER_CRC_LEN;
>  	/* GLV_TDPC not supported */
>  	i40e_stat_update_32(hw, I40E_GLV_TEPC(idx), vsi->offset_loaded,
>  			    &oes->tx_errors, &nes->tx_errors);

Whether or not CRC is included in length statistics has been an ongoing
problem in DPDK.  The Linux and BSD standard is to exclude CRC from number
of bytes; Cisco includes it, and Juniper does not.

For application consistency across real and virtual devices, all
statistics for both transmit and receive in DPDK must NOT include CRC bytes.

Is this still an issue in DPDK drivers? Do I need to put it on the
TAB agenda? Is it not clear in the documentation?
  
Ferruh Yigit July 17, 2017, 9:17 a.m. UTC | #3
On 7/11/2017 8:56 PM, Stephen Hemminger wrote:
> On Sat,  8 Jul 2017 15:54:25 -0400
> Qi Zhang <qi.z.zhang@intel.com> wrote:
> 
>> CRC size on Tx path is not necessary to be excluded.
>>
>> Fixes: 98abce237ba7 ("net/i40e: fix VF statistics")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
>> ---
>>  drivers/net/i40e/i40e_ethdev.c | 3 ---
>>  1 file changed, 3 deletions(-)
>>
>> diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
>> index 71cb7d3..0585869 100644
>> --- a/drivers/net/i40e/i40e_ethdev.c
>> +++ b/drivers/net/i40e/i40e_ethdev.c
>> @@ -2353,9 +2353,6 @@ i40e_update_vsi_stats(struct i40e_vsi *vsi)
>>  	i40e_stat_update_48(hw, I40E_GLV_BPTCH(idx), I40E_GLV_BPTCL(idx),
>>  			    vsi->offset_loaded,  &oes->tx_broadcast,
>>  			    &nes->tx_broadcast);
>> -	/* exclude CRC bytes */
>> -	nes->tx_bytes -= (nes->tx_unicast + nes->tx_multicast +
>> -		nes->tx_broadcast) * ETHER_CRC_LEN;
>>  	/* GLV_TDPC not supported */
>>  	i40e_stat_update_32(hw, I40E_GLV_TEPC(idx), vsi->offset_loaded,
>>  			    &oes->tx_errors, &nes->tx_errors);
> 
> Whether or not CRC is included in length statistics has been an ongoing
> problem in DPDK.  The Linux and BSD standard is to exclude CRC from number
> of bytes; Cisco includes it, and Juniper does not.
> 
> For application consistency across real and virtual devices, all
> statistics for both transmit and receive in DPDK must NOT include CRC bytes.

In case missed, Qi sent a new version of patch with more comment [1].

It seems CRC is not counted at first place, that is why it has been
excluded.

So CRC bytes are not counted, even after this patch.

[1]
http://dpdk.org/dev/patchwork/patch/26690/

> 
> Is this still an issue in DPDK drivers? Do I need to put it on the
> TAB agenda? Is it not clear in the documentation?
>
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 71cb7d3..0585869 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -2353,9 +2353,6 @@  i40e_update_vsi_stats(struct i40e_vsi *vsi)
 	i40e_stat_update_48(hw, I40E_GLV_BPTCH(idx), I40E_GLV_BPTCL(idx),
 			    vsi->offset_loaded,  &oes->tx_broadcast,
 			    &nes->tx_broadcast);
-	/* exclude CRC bytes */
-	nes->tx_bytes -= (nes->tx_unicast + nes->tx_multicast +
-		nes->tx_broadcast) * ETHER_CRC_LEN;
 	/* GLV_TDPC not supported */
 	i40e_stat_update_32(hw, I40E_GLV_TEPC(idx), vsi->offset_loaded,
 			    &oes->tx_errors, &nes->tx_errors);