At my office, we recently buy twenty laptops Dell Latitude 5420 under Ubuntu 20.04 and we have a big problem with ethernet connexion, download is extremly slow (but upload is good).

Edit : The problem is only on this laptop series, only with integrated ethernet and only on Ubuntu (see the tests below). Wifi is working perfectly, Ethernet is working perfectly too if we install Windows on this laptops and we don't have problems if we use an Ethernet USB adapter or a dockstation with ethernet on it.

Hardware side, the laptops are equipped with integrated network cards : Intel "Ethernet Connection I219-LM".

Here is the tests I made :

Conditions of the tests performed at my home :

  • Type of internet connection used: VDSL2+
  • Download speed : 40,43 Mbps
  • Upload speed : 5,70 Mbps

Conditions of the tests performed at my office :

  • Type of internet connection used: Optical fiber
  • Download speed : 756,21 Mbps
  • Upload speed : 337,64 Mbps

Here are the tests I performed:

  • Ubuntu 20.04.1 LTS "Out Of The box"

    • Result after installation = Slow Ethernet (@home = download : 0,89 Mbps / upload : 4,82 Mbps)
    • Kernel version after installation = 5.6.0-1032-oem
    • Ethernet driver version after installation = Intel e1000e 3.2.6-k
    • Kernel version after update = 5.10.0-1029-oem
    • Ethernet driver version after update = Intel e1000e 5.10.0-1029-oem (driver included in the kernel)
    • Result after update = Slow Ethernet (@ home = download : 0,57 Mbps / upload : 4,61 Mbps)
  • Ubuntu 20.04.2 LTS "install from USB"

    • Result after installation = Slow Ethernet (@home = download : 0,89 Mbps / upload : 4,82 Mbps) (@office = download : 6,36 Mbps / upload : 327,99 Mbps)
    • Kernel version after installation = 5.8.0-43-generic
    • Ethernet driver version after installation = Intel e1000e 3.2.6-k
    • Kernel version after update = 5.8.0-55-generic
    • Ethernet driver version after update = Intel e1000e 3.2.6-k
    • Result after update = Slow Ethernet (@home = download : 0,68 Mbps / upload : 4,52 Mbps) (@office = download : 5,31 Mbps / upload : 411,82 Mbps)
    • Unsuccessful attempts to manually install the 3.8.4 and 3.8.7 driver = Errors during driver compilation
  • Ubuntu 20.04.2 LTS "live session from USB"

    • Result on live session = Ethernet "a little less" slow (@home = download : 15,60 Mbps / upload : 4,41 Mbps)
    • Kernel version = 5.8.0-43-generic
    • Ethernet driver version = Intel e1000e 3.2.6-k
  • Ubuntu 18.04 LTS "install from USB"

    • Result after installation = Card seen by the system but not claimed
    • Kernel version = 5.4.0-74-generic
    • Ethernet driver version = None
    • Kernel version after update = 5.4.0-74-generic
    • Ethernet driver version after update = None
    • Ethernet driver version after manual installation = 3.8.4-NAPI (downloaded from the Intel site)
    • Result after update = Ethernet ok (@home = download : 40,29 Mbps / upload : 5,37 Mbps)
  • Ubuntu 20.04.1 LTS "install from Dell recovery iso" (downloaded from the Dell OS Recovery Tool software)

    • Result after installation = Slow Ethernet (@home = download : 0,87 Mbps / upload : 4,73 Mbps)
    • Kernel version after installation = 5.6.0-1032-oem
    • Ethernet driver version after installation = Intel e1000e 3.2.6-k
    • Kernel version after update = 5.10.0-1029-oem
    • Ethernet driver version after update = Intel e1000e 5.10.0-1029-oem (driver included in the kernel)
    • Result after update = Slow Ethernet (@home = download : 0,56 Mbps / upload : 4,49 Mbps)
    • Unsuccessful attempts to manually install the 3.8.4 and 3.8.7 driver = Errors during driver compilation with kernels 5.6.0-1032-oem and 5.10.0-1029-oem
  • Ubuntu 21.04 "install from USB"

    • Result after installation = Slow Ethernet (@office = download : 1,52 Mbps / upload : 400,58 Mbps)
    • Kernel version after installation = 5.11.0-16-generic
    • Ethernet driver version after installation = 5.11.0-16-generic (driver included in the kernel)
    • Kernel version after update = 5.11.0-18-generic
    • Ethernet driver version after update = 5.11.0-18-generic (driver included in the kernel)
    • Result after update = Slow Ethernet (@office = download : 2,22 Mbps / upload : 410,05 Mbps)
  • Windows 10 Professionnel (release 21H1)

    • Result after installation = Ethernet ok (@office = download : 850,12 Mbps / upload : 519,30 Mbps)

So, as we can see after all these tests, we can already exclude a hardware problem (the problem is present on 5 or 6 laptops tested out of the 20 laptops received) and the bandwidth is perfect on Ubuntu 18.04 once the Intel drivers are manually installed and on Windows.

At first, I think the solution would be to be able to install a more recent version of the "Intel e1000e" driver but when I try to compile it on the Ubuntu installed from the "Dell ISO", I get these errors (sorry for the French language) :

  • On kernel 5.6.0-1032-oem (from Dell ISO) :
administrateur@administrateur-Latitude-5420:~/Téléchargements/e1000e-3.8.7/src$ sudo make
*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
*** disabled for this build.
make[1] : on entre dans le répertoire « /usr/src/linux-headers-5.6.0-1032-oem »
  CC [M]  /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.o
In file included from /home/administrateur/Téléchargements/e1000e-3.8.7/src/e1000.h:14,
                 from /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.c:30:
/home/administrateur/Téléchargements/e1000e-3.8.7/src/kcompat.h:825:2: error: #error UTS_UBUNTU_RELEASE_ABI is too large...
  825 | #error UTS_UBUNTU_RELEASE_ABI is too large...
      |  ^~~~~
make[2]: *** [scripts/Makefile.build:276 : /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.o] Erreur 1
make[1]: *** [Makefile:1707 : /home/administrateur/Téléchargements/e1000e-3.8.7/src] Erreur 2
make[1] : on quitte le répertoire « /usr/src/linux-headers-5.6.0-1032-oem »
make: *** [Makefile:73 : default] Erreur 2
  • On kernel 5.10.0-1029-oem (from Dell ISO) :
administrateur@administrateur-Latitude-5420:~/Téléchargements/e1000e-3.8.7/src$ sudo make
*** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but
*** the signing key cannot be found. Module signing has been
*** disabled for this build.
make[1] : on entre dans le répertoire « /usr/src/linux-headers-5.10.0-1029-oem »
  CC [M]  /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.o
In file included from /home/administrateur/Téléchargements/e1000e-3.8.7/src/e1000.h:14,
                 from /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.c:30:
/home/administrateur/Téléchargements/e1000e-3.8.7/src/kcompat.h:825:2: error: #error UTS_UBUNTU_RELEASE_ABI is too large...
  825 | #error UTS_UBUNTU_RELEASE_ABI is too large...
      |  ^~~~~
make[2]: *** [scripts/Makefile.build:287 : /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.o] Erreur 1
make[1]: *** [Makefile:1849 : /home/administrateur/Téléchargements/e1000e-3.8.7/src] Erreur 2
make[1] : on quitte le répertoire « /usr/src/linux-headers-5.10.0-1029-oem »
make: *** [Makefile:73 : default] Erreur 2

After reinstalling Ubuntu from the official ISO (not the Dell one) and disabled SecureBoot, I finally successfully installed the new Intel e1000e driver... but... the problem is still here...

  • On kernel 5.8.0-43-generic (from official Ubuntu ISO)

    • Result after 3.8.7 driver update = Slow Ethernet (@home = download : 0,16 Mbps / upload : 2,38 Mbps)
  • On kernel 5.8.0-55-generic (from official Ubuntu ISO)

    • Result after 3.8.7 driver update = Slow Ethernet (@home = download : 1.00 Mbps / upload : 5.13 Mbps)

I confess that I am completely lost... Do you have any idea where it could come from?

In the meantime, here is the result of the lshw -C network order, don't hesitate to ask me for the results of other orders, I will post them.

administrateur@administrateur-Latitude-5420:~/Téléchargements/e1000e-3.8.7/src$ sudo lshw -C network
  *-network:1
       description: Ethernet interface
       produit: Ethernet Connection (13) I219-LM
       fabricant: Intel Corporation
       identifiant matériel: 1f.6
       information bus: pci@0000:00:1f.6
       nom logique: enp0s31f6
       version: 20
       numéro de série: 38:14:28:0f:32:1a
       taille: 1Gbit/s
       capacité: 1Gbit/s
       bits: 32 bits
       horloge: 33MHz
       fonctionnalités: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
       configuration : autonegotiation=on broadcast=yes driver=e1000e driverversion=3.8.7-NAPI duplex=full firmware=0.8-4 ip=192.168.1.31 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
       ressources : irq:147 mémoire:a2300000-a231ffff

Thank you in advance for your help ! :)

Yann

Update

Here is the result of the nestat -i and netstat -s commands (on my network at home) :

administrateur@administrateur-Latitude-5420:~/Téléchargements/e1000e-3.8.7/src$ netstat -i
Table d'interfaces noyau
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
enp0s31f  1500    29522    448    361 0         30261      0      0      0 BMRU
lo       65536     4572      0      0 0          4572      0      0      0 LRU
wlp0s20f  1500     7350      0    672 0           563      0      0      0 BMRU

administrateur@administrateur-Latitude-5420:~/Téléchargements/e1000e-3.8.7/src$ netstat -s
Ip:
    Forwarding: 2
    50727 total packets received
    6 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    49394 incoming packets delivered
    43118 requests sent out
    20 outgoing packets dropped
    542 dropped because of missing route
Icmp:
    67 ICMP messages received
    0 input ICMP message failed
    Histogramme d'entrée ICMP
        destination unreachable: 67
    762 ICMP messages sent
    0 ICMP messages failed
    Histogramme de sortie ICMP
        destination unreachable: 762
IcmpMsg:
        InType3: 67
        OutType3: 762
Tcp:
    545 active connection openings
    0 passive connection openings
    4 failed connection attempts
    5 connection resets received
    3 connections established
    29486 segments received
    40360 segments sent out
    861 segments retransmitted
    1 bad segments received
    290 resets sent
Udp:
    11379 packets received
    1452 packets to unknown port received
    0 packet receive errors
    11028 packets sent
    0 receive buffer errors
    0 send buffer errors
    IgnoredMulti: 5760
UdpLite:
TcpExt:
    218 TCP sockets finished time wait in fast timer
    164 delayed acks sent
    Quick ack mode was activated 36 times
    7910 packet headers predicted
    6247 acknowledgments not containing data payload received
    10413 predicted acknowledgments
    TCPSackRecovery: 140
    Detected reordering 1 times using SACK
    6 congestion windows recovered without slow start after partial ack
    TCPLostRetransmit: 100
    490 fast retransmits
    48 retransmits in slow start
    TCPTimeouts: 95
    TCPLossProbes: 300
    TCPLossProbeRecovery: 30
    TCPSackRecoveryFail: 7
    TCPDSACKOldSent: 40
    TCPDSACKOfoSent: 5
    TCPDSACKRecv: 193
    93 connections reset due to unexpected data
    1 connections reset due to early user close
    3 connections aborted due to timeout
    TCPDSACKIgnoredOld: 1
    TCPDSACKIgnoredNoUndo: 109
    TCPSackShifted: 790
    TCPSackMerged: 1396
    TCPSackShiftFallback: 320
    TCPRcvCoalesce: 1208
    TCPOFOQueue: 1950
    TCPOFOMerge: 5
    TCPChallengeACK: 1
    TCPSYNChallenge: 1
    TCPAutoCorking: 157
    TCPSynRetrans: 43
    TCPOrigDataSent: 27241
    TCPHystartDelayDetect: 13
    TCPHystartDelayCwnd: 421
    TCPKeepAlive: 612
    TCPDelivered: 27555
    TCPAckCompressed: 187
    TcpTimeoutRehash: 95
    TcpDuplicateDataRehash: 3
IpExt:
    InMcastPkts: 2913
    OutMcastPkts: 260
    InBcastPkts: 5760
    OutBcastPkts: 2
    InOctets: 25001747
    OutOctets: 37878931
    InMcastOctets: 857652
    OutMcastOctets: 17502
    InBcastOctets: 5995183
    OutBcastOctets: 108
    InNoECTPkts: 52735
MPTcpExt:

Solution 1:

Finally, somebody who has exactly the same issue. I have filed a bug on launchpad: e1000e extremly slow.

Can you comment there too? Or +1 it or something? Workaround is there too.

The trick is to disable aspm with pcie_aspm=off as a kernel option in /etc/default/grub, like this:

GRUB_CMDLINE_LINUX_DEFAULT="splash pcie_aspm=off"

After that run:

update-grub

pcie_aspm is some sort of power management thingie which probably puts my network controller to sleep or something, and putting a USB memory stick in the laptop somehow wakes it up.