diff mbox series

[iwl-next,v2] i40e: Clear stats after deleting tc

Message ID 20230727084335.63856-1-jedrzej.jagielski@intel.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series [iwl-next,v2] i40e: Clear stats after deleting tc | expand

Checks

Context Check Description
netdev/series_format warning Single patches do not need cover letters; Target tree name not specified in the subject
netdev/tree_selection success Guessed tree name to be net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 1342 this patch: 1342
netdev/cc_maintainers warning 5 maintainers not CCed: kuba@kernel.org jesse.brandeburg@intel.com davem@davemloft.net pabeni@redhat.com edumazet@google.com
netdev/build_clang success Errors and warnings before: 1365 this patch: 1365
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 1365 this patch: 1365
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 11 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Jedrzej Jagielski July 27, 2023, 8:43 a.m. UTC
From: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>

There was an issue with ethtool stats that
have not been cleared after tc had been deleted.
Stats printed by ethtool -S remained the same despite
qdick had been removed, what is an unexpected behavior.
Stats should be reseted once qdick is removed.

Fix this by resetting stats after deleting tc
by calling i40e_vsi_reset_stats() function after
distroying qdisc.

Steps to reproduce:

1) Add ingress rule
tc qdisc add dev <ethX> ingress

2) Create qdisc and filter
tc qdisc add dev <ethX> root mqprio num_tc 4 map 0 0 0 0 1 2 2 3 queues 2@0 2@2 1@4 1@5 hw 1 mode channel
tc filter add dev <ethX> protocol ip parent ffff: prio 3 flower dst_ip <ip> ip_proto tcp dst_port 8300 skip_sw hw_tc 2

3) Run iperf between client and SUT
iperf3 -s -p 8300
iperf3 -c <ip> -p 8300

4) Check the ethtool stats
ethtool -S <ethX> | grep packets | column

5) Delete filter and qdisc
tc filter del dev <ethX> parent ffff:
tc qdisc del dev <ethX> root

6) Check the ethtool stats and see that they didn't change
ethtool -S <ethX> | grep packets | column

Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
---
v2: Make the commit msg more detailed
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Jesse Brandeburg July 28, 2023, 11:58 p.m. UTC | #1
On 7/27/2023 1:43 AM, Jedrzej Jagielski wrote:
> From: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
> 
> There was an issue with ethtool stats that
> have not been cleared after tc had been deleted.
> Stats printed by ethtool -S remained the same despite
> qdick had been removed, what is an unexpected behavior.

qdisc

> Stats should be reseted once qdick is removed.

please reflow to 75 chars, please restate also as
Stats should be reset once the qdisc is removed.

> 
> Fix this by resetting stats after deleting tc
> by calling i40e_vsi_reset_stats() function after
> distroying qdisc.

destroying

> 
> Steps to reproduce:
> 
> 1) Add ingress rule
> tc qdisc add dev <ethX> ingress
> 
> 2) Create qdisc and filter
> tc qdisc add dev <ethX> root mqprio num_tc 4 map 0 0 0 0 1 2 2 3 queues 2@0 2@2 1@4 1@5 hw 1 mode channel
> tc filter add dev <ethX> protocol ip parent ffff: prio 3 flower dst_ip <ip> ip_proto tcp dst_port 8300 skip_sw hw_tc 2
> 
> 3) Run iperf between client and SUT
> iperf3 -s -p 8300
> iperf3 -c <ip> -p 8300
> 
> 4) Check the ethtool stats
> ethtool -S <ethX> | grep packets | column
> 
> 5) Delete filter and qdisc
> tc filter del dev <ethX> parent ffff:
> tc qdisc del dev <ethX> root
> 
> 6) Check the ethtool stats and see that they didn't change
> ethtool -S <ethX> | grep packets | column
> 
> Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
> Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> ---
> v2: Make the commit msg more detailed
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
> index 29ad1797adce..e8e03ede1672 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> @@ -5885,6 +5885,11 @@ static int i40e_vsi_config_tc(struct i40e_vsi *vsi, u8 enabled_tc)
>  
>  	/* Update the netdev TC setup */
>  	i40e_vsi_config_netdev_tc(vsi, enabled_tc);
> +
> +	/* After destroying qdisc reset all stats of the vsi */
> +	if (!vsi->mqprio_qopt.qopt.hw)
> +		i40e_vsi_reset_stats(vsi);
> +
>  out:
>  	return ret;
>  }
Jedrzej Jagielski July 31, 2023, 1:57 p.m. UTC | #2
From: Brandeburg, Jesse <jesse.brandeburg@intel.com> 
Sent: Sat, 29 Jul 2023 01:59
>On 7/27/2023 1:43 AM, Jedrzej Jagielski wrote:
>> From: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
>> 
>> There was an issue with ethtool stats that
>> have not been cleared after tc had been deleted.
>> Stats printed by ethtool -S remained the same despite
>> qdick had been removed, what is an unexpected behavior.
>
>qdisc
>
>> Stats should be reseted once qdick is removed.
>
>please reflow to 75 chars, please restate also as
>Stats should be reset once the qdisc is removed.

Sure, this will be corrected. 
Thanks

>
>> 
>> Fix this by resetting stats after deleting tc
>> by calling i40e_vsi_reset_stats() function after
>> distroying qdisc.
>
>destroying
>
>> 
>> Steps to reproduce:
>> 
>> 1) Add ingress rule
>> tc qdisc add dev <ethX> ingress
>> 
>> 2) Create qdisc and filter
>> tc qdisc add dev <ethX> root mqprio num_tc 4 map 0 0 0 0 1 2 2 3 queues 2@0 2@2 1@4 1@5 hw 1 mode channel
>> tc filter add dev <ethX> protocol ip parent ffff: prio 3 flower dst_ip <ip> ip_proto tcp dst_port 8300 skip_sw hw_tc 2
>> 
>> 3) Run iperf between client and SUT
>> iperf3 -s -p 8300
>> iperf3 -c <ip> -p 8300
>> 
>> 4) Check the ethtool stats
>> ethtool -S <ethX> | grep packets | column
>> 
>> 5) Delete filter and qdisc
>> tc filter del dev <ethX> parent ffff:
>> tc qdisc del dev <ethX> root
>> 
>> 6) Check the ethtool stats and see that they didn't change
>> ethtool -S <ethX> | grep packets | column
>> 
>> Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
>> Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
>> ---
>> v2: Make the commit msg more detailed
>> ---
>>  drivers/net/ethernet/intel/i40e/i40e_main.c | 5 +++++
>>  1 file changed, 5 insertions(+)
>> 
>> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
>> index 29ad1797adce..e8e03ede1672 100644
>> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
>> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
>> @@ -5885,6 +5885,11 @@ static int i40e_vsi_config_tc(struct i40e_vsi *vsi, u8 enabled_tc)
>>  
>>  	/* Update the netdev TC setup */
>>  	i40e_vsi_config_netdev_tc(vsi, enabled_tc);
>> +
>> +	/* After destroying qdisc reset all stats of the vsi */
>> +	if (!vsi->mqprio_qopt.qopt.hw)
>> +		i40e_vsi_reset_stats(vsi);
>> +
>>  out:
>>  	return ret;
>>  }
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 29ad1797adce..e8e03ede1672 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -5885,6 +5885,11 @@  static int i40e_vsi_config_tc(struct i40e_vsi *vsi, u8 enabled_tc)
 
 	/* Update the netdev TC setup */
 	i40e_vsi_config_netdev_tc(vsi, enabled_tc);
+
+	/* After destroying qdisc reset all stats of the vsi */
+	if (!vsi->mqprio_qopt.qopt.hw)
+		i40e_vsi_reset_stats(vsi);
+
 out:
 	return ret;
 }