[Intel-wired-lan] [PATCH net v1] e1000e: Fix TSO not being disabled on i219-LM card

Paul Menzel pmenzel at molgen.mpg.de
Tue Dec 20 10:58:57 UTC 2022


Dear Mateusz,


Thank you for the patch. In the commit message summary, you could write:

> Disable TSO on i219-LM card to increase speed


Am 20.12.22 um 10:47 schrieb Mateusz Palczewski:
> While using i219-LM card currently it was only possible to achieve

Please mention, that it’s a regression in Linux 5.8-rc1.

> about 60% of maximum speed. This was caused by TSO not being disabled
> even thought it should be on this specific card. Fix that by moving the

s/thought/though/

Please reference the datasheet section, where that is documented.

> part of the code responsible for this outside of adapter->flags & FLAG_TSO_FORCE
> check.

How did you test the speed exactly?

On a Dell Precision Tower 3620/0MWYPT, BIOS 2.22.0 07/13/2022, with

     $ lspci -nn -s 00:1f.6
     00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet 
Connection (2) I219-LM [8086:15b7] (rev 31)

I get more than 60 % bandwidth with iperf3.

```
$ iperf3 -c iperf3.molgen.mpg.de
Connecting to host iperf3.molgen.mpg.de, port 5201
[  5] local 141.14.18.119 port 56092 connected to 141.14.27.109 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   102 MBytes   859 Mbits/sec    0   1.07 MBytes 

[  5]   1.00-2.00   sec  98.7 MBytes   828 Mbits/sec    0   1.13 MBytes 

[  5]   2.00-3.00   sec  99.8 MBytes   837 Mbits/sec    0   1.13 MBytes 

[  5]   3.00-4.00   sec  99.9 MBytes   838 Mbits/sec    0   1.13 MBytes 

[  5]   4.00-5.00   sec  98.7 MBytes   828 Mbits/sec    0   1.13 MBytes 

[  5]   5.00-6.00   sec  99.7 MBytes   836 Mbits/sec    0   1.13 MBytes 

[  5]   6.00-7.00   sec  99.9 MBytes   838 Mbits/sec    0   1.13 MBytes 

[  5]   7.00-8.00   sec  98.5 MBytes   826 Mbits/sec    0   1.13 MBytes 

[  5]   8.00-9.00   sec   100 MBytes   838 Mbits/sec    0   1.13 MBytes 

[  5]   9.00-10.00  sec  98.8 MBytes   829 Mbits/sec    0   1.13 MBytes 

- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   996 MBytes   836 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   994 MBytes   833 Mbits/sec 
receiver

iperf Done.
```

> Fixes: f29801030ac6 ("e1000e: Disable TSO for buffer overrun workaround")
> Signed-off-by: Mateusz Palczewski <mateusz.palczewski at intel.com>
> ---
>   drivers/net/ethernet/intel/e1000e/netdev.c | 10 ++++++----
>   1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
> index 04acd1a992fa..24f4ccb82dc4 100644
> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
> @@ -5307,10 +5307,6 @@ static void e1000_watchdog_task(struct work_struct *work)
>   					/* oops */
>   					break;
>   				}
> -				if (hw->mac.type == e1000_pch_spt) {
> -					netdev->features &= ~NETIF_F_TSO;
> -					netdev->features &= ~NETIF_F_TSO6;
> -				}
>   			}
>   
>   			/* enable transmits in the hardware, need to do this
> @@ -5326,6 +5322,12 @@ static void e1000_watchdog_task(struct work_struct *work)
>   			if (phy->ops.cfg_on_link_up)
>   				phy->ops.cfg_on_link_up(hw);
>   
> +			/* Disable TSO for i219, to avoid transfer speed issue */

Please remove the comma, and please elaborate also in the comment.

> +			if (hw->mac.type == e1000_pch_spt) {
> +					netdev->features &= ~NETIF_F_TSO;
> +					netdev->features &= ~NETIF_F_TSO6;
> +			}
> +
>   			netif_wake_queue(netdev);
>   			netif_carrier_on(netdev);


Kind regards,

Paul


More information about the Intel-wired-lan mailing list