[SOLVED] Only half gigabit Eth with Intel i219-lm -v under Kernel 4.14 to 4.19

OK, thank you all for helping. Today I ordered a desktop NIC. I guess It could be also a bios thing. I have a similar Fujitsu PC with the same problem. There it is a onboard i219-lm NIC causing the same troubles. They just differ a little bit in maximum speed. So the i219-lm is aprox 600 Mbit “fast” with Kernel 414 and higher.

Thanks a lot guys :slight_smile:

1 Like

Just another thought - at some point the kernel enabled “fq_codel” as its QOS/flow control algorithm:

2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

I haven’t looked into this massively, but it may be that it’s deliberately reducing maximum throughput to maintain lower latency and available capacity for other systems etc.

For example - if it detects that your router/switch can’t properly cope with the full 1GBps then it may be scaling back.

1 Like

hmm I gave it a try and changed this to fq but it didnt change much. btw. fq_codel is used under 4.9 and my (at the moment) 4.14 and in 4.9 its no prob :frowning:

[BA2]# sysctl -w net.core.default_qdisc=fq
net.core.default_qdisc = fq
[BA2]# iperf -c 192.168.15.3
------------------------------------------------------------
Client connecting to 192.168.15.3, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.15.2 port 54388 connected with 192.168.15.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   618 MBytes   518 Mbits/sec
1 Like

maybe check next update kernel on Test Manjaro :slight_smile:
https://cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.14.72

@philm : Be careful with e1000e drivers that concerns all eth Intel drivers in more than 10 years …

1 Like

Wow… that’s a lot of e1000e changes…

I’m not seeing it…

4.19rc5 (custom kernel, e1000e driver is compiled in, not a module)

[merell@Jammin1 ~]$ uname -a
Linux Jammin1 4.19.0-4-Jammin1 #11 SMP PREEMPT Wed Sep 26 13:43:06 EDT 2018 x86_64 GNU/Linux
[merell@Jammin1 ~]$ sudo inxi -nxxxx
Network:   Device-1: Intel Ethernet I219-V driver: e1000e v: 3.2.6-k port: N/A 
           bus ID: 00:1f.6 chip ID: 8086:15b8 
           IF: eth0 state: up speed: 1000 Mbps duplex: full mac: 0c:9d:92:0e:d6:c2

ip a:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

To a Win 7 machine:

[merell@Jammin1 ~]$ iperf3 -c 192.168.25.11
Connecting to host 192.168.25.11, port 5201
[  5] local 192.168.25.10 port 44642 connected to 192.168.25.11 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  91.9 MBytes   771 Mbits/sec    0    215 KBytes       
[  5]   1.00-2.00   sec  92.7 MBytes   777 Mbits/sec    0    215 KBytes       
[  5]   2.00-3.00   sec  92.8 MBytes   778 Mbits/sec    0    215 KBytes       
[  5]   3.00-4.00   sec  93.1 MBytes   781 Mbits/sec    0    215 KBytes       
[  5]   4.00-5.00   sec  93.3 MBytes   782 Mbits/sec    0    215 KBytes       
[  5]   5.00-6.00   sec  93.3 MBytes   783 Mbits/sec    0    215 KBytes       
[  5]   6.00-7.00   sec  92.8 MBytes   779 Mbits/sec    0    215 KBytes       
[  5]   7.00-8.00   sec  92.8 MBytes   778 Mbits/sec    0    215 KBytes       
[  5]   8.00-9.00   sec  93.4 MBytes   783 Mbits/sec    0    215 KBytes       
[  5]   9.00-10.00  sec  93.3 MBytes   782 Mbits/sec    0    215 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   929 MBytes   780 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   929 MBytes   779 Mbits/sec                  receiver

iperf Done.

From same Win 7 machine:

-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.25.11, port 63391
[  5] local 192.168.25.10 port 5201 connected to 192.168.25.11 port 63392
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  90.0 MBytes   755 Mbits/sec                  
[  5]   1.00-2.00   sec   113 MBytes   949 Mbits/sec                  
[  5]   2.00-3.00   sec   113 MBytes   949 Mbits/sec                  
[  5]   3.00-4.00   sec   113 MBytes   948 Mbits/sec                  
[  5]   4.00-5.00   sec   113 MBytes   949 Mbits/sec                  
[  5]   5.00-6.00   sec   113 MBytes   949 Mbits/sec                  
[  5]   6.00-7.00   sec   113 MBytes   949 Mbits/sec                  
[  5]   7.00-8.00   sec   113 MBytes   949 Mbits/sec                  
[  5]   8.00-9.00   sec   113 MBytes   949 Mbits/sec                  
[  5]   9.00-10.00  sec   113 MBytes   949 Mbits/sec                  
[  5]  10.00-10.21  sec  23.7 MBytes   941 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.21  sec  1.11 GBytes   930 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

That is what I was thinking; maybe the newer kernels are more aggressive when they see this. I don’t use QoS on my router.

@heiko220: can you turn off any QoS on your router and test?

1 Like

@heiko220
can you go in testing branch
and recheck ?
[Testing Update] 2018-09-27 - Kernels, Gnome, Deepin, Grub, Calamares

1 Like

@stephane OK, I will try this.

Hmm its a company router, so I guess No. But It shouldnt concern the router because both Computers are in my office connected to a local Netgear GS108 Switch…

Found this in your dmsg:

495816] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode

Seems a bit like a smoking gun.

How about posting:

modinfo e1000e

Output modinfo e1000e on Kernel 4.9.128-1


filename:       /lib/modules/4.9.128-1-MANJARO/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.gz
version:        3.2.6-k
license:        GPL
description:    Intel(R) PRO/1000 Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
srcversion:     08D35E7946E09E1ABBC51AC
alias:          pci:v00008086d000015D6sv*sd*bc*sc*i*
alias:          pci:v00008086d000015E3sv*sd*bc*sc*i*
alias:          pci:v00008086d000015D8sv*sd*bc*sc*i*
alias:          pci:v00008086d000015D7sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B9sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B8sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B7sv*sd*bc*sc*i*
alias:          pci:v00008086d00001570sv*sd*bc*sc*i*
alias:          pci:v00008086d0000156Fsv*sd*bc*sc*i*
alias:          pci:v00008086d000015A3sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A2sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A1sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A0sv*sd*bc*sc*i*
alias:          pci:v00008086d00001559sv*sd*bc*sc*i*
alias:          pci:v00008086d0000155Asv*sd*bc*sc*i*
alias:          pci:v00008086d0000153Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000153Asv*sd*bc*sc*i*
alias:          pci:v00008086d00001503sv*sd*bc*sc*i*
alias:          pci:v00008086d00001502sv*sd*bc*sc*i*
alias:          pci:v00008086d000010F0sv*sd*bc*sc*i*
alias:          pci:v00008086d000010EFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010EBsv*sd*bc*sc*i*
alias:          pci:v00008086d000010EAsv*sd*bc*sc*i*
alias:          pci:v00008086d00001525sv*sd*bc*sc*i*
alias:          pci:v00008086d000010DFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010DEsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CEsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CDsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CCsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CBsv*sd*bc*sc*i*
alias:          pci:v00008086d000010F5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010E5sv*sd*bc*sc*i*
alias:          pci:v00008086d0000294Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010BDsv*sd*bc*sc*i*
alias:          pci:v00008086d000010C3sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C2sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C0sv*sd*bc*sc*i*
alias:          pci:v00008086d00001501sv*sd*bc*sc*i*
alias:          pci:v00008086d00001049sv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Dsv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Asv*sd*bc*sc*i*
alias:          pci:v00008086d000010C4sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C5sv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010BBsv*sd*bc*sc*i*
alias:          pci:v00008086d00001098sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BAsv*sd*bc*sc*i*
alias:          pci:v00008086d00001096sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010F6sv*sd*bc*sc*i*
alias:          pci:v00008086d000010D3sv*sd*bc*sc*i*
alias:          pci:v00008086d0000109Asv*sd*bc*sc*i*
alias:          pci:v00008086d0000108Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000108Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Esv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Dsv*sd*bc*sc*i*
alias:          pci:v00008086d000010B9sv*sd*bc*sc*i*
alias:          pci:v00008086d000010D5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010DAsv*sd*bc*sc*i*
alias:          pci:v00008086d000010D9sv*sd*bc*sc*i*
alias:          pci:v00008086d00001060sv*sd*bc*sc*i*
alias:          pci:v00008086d000010A5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BCsv*sd*bc*sc*i*
alias:          pci:v00008086d000010A4sv*sd*bc*sc*i*
alias:          pci:v00008086d0000105Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000105Esv*sd*bc*sc*i*
depends:        ptp
retpoline:      Y
intree:         Y
vermagic:       4.9.128-1-MANJARO SMP preempt mod_unload modversions 
parm:           debug:Debug level (0=none,...,16=all) (int)
parm:           copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
parm:           TxIntDelay:Transmit Interrupt Delay (array of int)
parm:           TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm:           RxIntDelay:Receive Interrupt Delay (array of int)
parm:           RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm:           InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm:           IntMode:Interrupt Mode (array of int)
parm:           SmartPowerDownEnable:Enable PHY smart power down (array of int)
parm:           KumeranLockLoss:Enable Kumeran lock loss workaround (array of int)
parm:           WriteProtectNVM:Write-protect NVM [WARNING: disabling this can lead to corrupted NVM] (array of int)
parm:           CrcStripping:Enable CRC Stripping, disable if your BMC needs the CRC (array of int)

And here is output for kernel 4.14.71-1

filename:       /lib/modules/4.14.71-1-MANJARO/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.xz
version:        3.2.6-k
license:        GPL
description:    Intel(R) PRO/1000 Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
srcversion:     3CB1120A6858E10E29A3076
alias:          pci:v00008086d000015E2sv*sd*bc*sc*i*
alias:          pci:v00008086d000015E1sv*sd*bc*sc*i*
alias:          pci:v00008086d000015E0sv*sd*bc*sc*i*
alias:          pci:v00008086d000015DFsv*sd*bc*sc*i*
alias:          pci:v00008086d000015BCsv*sd*bc*sc*i*
alias:          pci:v00008086d000015BBsv*sd*bc*sc*i*
alias:          pci:v00008086d000015BEsv*sd*bc*sc*i*
alias:          pci:v00008086d000015BDsv*sd*bc*sc*i*
alias:          pci:v00008086d000015D6sv*sd*bc*sc*i*
alias:          pci:v00008086d000015E3sv*sd*bc*sc*i*
alias:          pci:v00008086d000015D8sv*sd*bc*sc*i*
alias:          pci:v00008086d000015D7sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B9sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B8sv*sd*bc*sc*i*
alias:          pci:v00008086d000015B7sv*sd*bc*sc*i*
alias:          pci:v00008086d00001570sv*sd*bc*sc*i*
alias:          pci:v00008086d0000156Fsv*sd*bc*sc*i*
alias:          pci:v00008086d000015A3sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A2sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A1sv*sd*bc*sc*i*
alias:          pci:v00008086d000015A0sv*sd*bc*sc*i*
alias:          pci:v00008086d00001559sv*sd*bc*sc*i*
alias:          pci:v00008086d0000155Asv*sd*bc*sc*i*
alias:          pci:v00008086d0000153Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000153Asv*sd*bc*sc*i*
alias:          pci:v00008086d00001503sv*sd*bc*sc*i*
alias:          pci:v00008086d00001502sv*sd*bc*sc*i*
alias:          pci:v00008086d000010F0sv*sd*bc*sc*i*
alias:          pci:v00008086d000010EFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010EBsv*sd*bc*sc*i*
alias:          pci:v00008086d000010EAsv*sd*bc*sc*i*
alias:          pci:v00008086d00001525sv*sd*bc*sc*i*
alias:          pci:v00008086d000010DFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010DEsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CEsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CDsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CCsv*sd*bc*sc*i*
alias:          pci:v00008086d000010CBsv*sd*bc*sc*i*
alias:          pci:v00008086d000010F5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BFsv*sd*bc*sc*i*
alias:          pci:v00008086d000010E5sv*sd*bc*sc*i*
alias:          pci:v00008086d0000294Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010BDsv*sd*bc*sc*i*
alias:          pci:v00008086d000010C3sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C2sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C0sv*sd*bc*sc*i*
alias:          pci:v00008086d00001501sv*sd*bc*sc*i*
alias:          pci:v00008086d00001049sv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Dsv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Asv*sd*bc*sc*i*
alias:          pci:v00008086d000010C4sv*sd*bc*sc*i*
alias:          pci:v00008086d000010C5sv*sd*bc*sc*i*
alias:          pci:v00008086d0000104Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010BBsv*sd*bc*sc*i*
alias:          pci:v00008086d00001098sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BAsv*sd*bc*sc*i*
alias:          pci:v00008086d00001096sv*sd*bc*sc*i*
alias:          pci:v00008086d0000150Csv*sd*bc*sc*i*
alias:          pci:v00008086d000010F6sv*sd*bc*sc*i*
alias:          pci:v00008086d000010D3sv*sd*bc*sc*i*
alias:          pci:v00008086d0000109Asv*sd*bc*sc*i*
alias:          pci:v00008086d0000108Csv*sd*bc*sc*i*
alias:          pci:v00008086d0000108Bsv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Esv*sd*bc*sc*i*
alias:          pci:v00008086d0000107Dsv*sd*bc*sc*i*
alias:          pci:v00008086d000010B9sv*sd*bc*sc*i*
alias:          pci:v00008086d000010D5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010DAsv*sd*bc*sc*i*
alias:          pci:v00008086d000010D9sv*sd*bc*sc*i*
alias:          pci:v00008086d00001060sv*sd*bc*sc*i*
alias:          pci:v00008086d000010A5sv*sd*bc*sc*i*
alias:          pci:v00008086d000010BCsv*sd*bc*sc*i*
alias:          pci:v00008086d000010A4sv*sd*bc*sc*i*
alias:          pci:v00008086d0000105Fsv*sd*bc*sc*i*
alias:          pci:v00008086d0000105Esv*sd*bc*sc*i*
depends:        ptp
retpoline:      Y
intree:         Y
name:           e1000e
vermagic:       4.14.71-1-MANJARO SMP preempt mod_unload modversions 
parm:           debug:Debug level (0=none,...,16=all) (int)
parm:           copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
parm:           TxIntDelay:Transmit Interrupt Delay (array of int)
parm:           TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm:           RxIntDelay:Receive Interrupt Delay (array of int)
parm:           RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm:           InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm:           IntMode:Interrupt Mode (array of int)
parm:           SmartPowerDownEnable:Enable PHY smart power down (array of int)
parm:           KumeranLockLoss:Enable Kumeran lock loss workaround (array of int)
parm:           WriteProtectNVM:Write-protect NVM [WARNING: disabling this can lead to corrupted NVM] (array of int)
parm:           CrcStripping:Enable CRC Stripping, disable if your BMC needs the CRC (array of int)

InterruptThrottleRate

That option sounds like it might be worth playing with.

I’ll check into how to alter that setting to see if speeds can be improved.

Rate throttling definitely can affect speeds:

http://www.bigdbahead.com/?p=97

I also saw several of these in dmesg:

IPv6: ADDRCONF(NETDEV_UP): enp0s31f6: link is not ready

Perhaps you might want to test disabling IPv6 in Network Managers connections properties. While you’re in the settings, set the rate to “auto-negotiation” if it’s not. If it already is set that way, then try setting it to “1000”.

hmm, I played a bit around changing ThrottleRate to 1 or 4 or 10000,10000,10000 and higher. But no changes. IPv6 is turned off and Speed changed manually to 1000.

I guess I buy some pci NICs and see if they work. If its a firmware bug it will maybe never solved since those Fujitus devices are officially not linux supported :frowning:

But thanks for all your support!!

1 Like

Hy all, i finally found a working solution at wiki.hetzner.de

ethtool -K [eth-interface] tso off gso off

With kernel version 4.15 a fix in the e1000e driver has been introduced: https://github.com/torvalds/linux/commit/b10effb92e272051dd1ec0d7be56bf9ca85ab927

This fix slighly slows down DMA access times to prevent the NIC to hang up on heavy UDP traffic. This impacts the TCP performance.

2 Likes

Thank you for posting this information.

If you wish to have this setting loaded at start up then you will need to write a systsmd service file to make this setting persistent.

Create the required systemd service file:

/etc/systemd/system/nic-config.service

The contents of the service file should be as follows:

#/etc/systemd/system/nic-config.service
#sudo systemctl enable nic-config.service
#sudo systemctl start nic-config.service
#sudo systemctl status nic-config.service
#sudo systemctl daemon-reload
[Unit]
Description=NIC configuration service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/ethtool -K eno1 tso off gso off
Restart=on-failure

[Install]
WantedBy=multi-user.target

If your adapter ID is different than “eno1” you will need to substitute you own adapter’s ID into the ExecStart line of the service file.

Save your newly created service file, then:

Enable the service:

sudo systemctl enable nic-config.service

Reboot your system and your new NIC configuration parameters should be automatically be loaded at each startup.

1 Like

ah thank you, I already thought about how to make this permanent :slight_smile:

1 Like

You’re welcome.

I’ve suggested this fix before, (and since you posted this), and unfortunately this fix does not seem to work that often.

Luckily it did work for you though, so congrats on getting it fixed.

Marked solution

This topic was automatically closed after 180 days. New replies are no longer allowed.

Forum kindly sponsored by