Journebian · Ethernet

Aussi longtemps que je me souvienne, la connexion Ethernet de ma carte mère a mal fonctionné. Elle est censée atteindre 1 Gb/s, mais quel que soit l'appareil auquel je l'ai connectée, c'est à 100 Mb/s. J'ai aussi essayé divers câbles Cat 5e et Cat 6, sans succès. En fait, si je débranche le câble de ma carte mère et le branche à un autre appareil, alors cet autre appareil établit une connexion à 1 Gb/s. Le problème ne réside donc ni dans le câble ni dans le switch en face.

La commande dmidecode -t baseboard (ou dmidecode -t 2) affiche le modèle de ma carte mère (sous Arch Linux) :

# dmidecode 3.4
Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.

Handle 0x0002, DMI type 2, 8 bytes
Base Board Information
	Manufacturer: Gigabyte Technology Co., Ltd.
	Product Name: P55-UD3R
	Version: x.x
	Serial Number:  

La documentation du constructeur indique que La carte mère Gigabyte P55-UD3R est équipée d'une puce RTL8111D de Realtek. Cela semble à peu près compatible avec les messages de log du démarrage :

[    8.014252] r8169 0000:03:00.0: can't disable ASPM; OS doesn't have ASPM control
[    8.036186] r8169 0000:03:00.0 eth0: RTL8168d/8111d, 00:24:1d:d3:70:8b, XID 283, IRQ 31
[    8.036192] r8169 0000:03:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]

[    8.263601] r8169 0000:03:00.0 enp3s0: renamed from eth0

[    8.778105] RTL8211B Gigabit Ethernet r8169-0-300:00: attached PHY driver (mii_bus:phy_addr=r8169-0-300:00, irq=MAC)
[    8.957806] r8169 0000:03:00.0 enp3s0: Link is Down

[   21.764722] r8169 0000:03:00.0 enp3s0: Link is Up - 100Mbps/Full - flow control rx/tx

On voit que la connexion Ethernet met un temps considérable à s'établir (Link is up). En fait, la connexion s'établit quand le PC est allumé (déjà à 100 Mb/s d'après les leds), puis elle est réinitialisée par Linux. C'est très ennuyeux car c'est si lent que ça fait fréquemment échouer des scripts de démarrage, notamment DHCP.

La commande lshw -c network donne aussi des indications proches concernant le matériel réseau :

  *-network                 
       description: Ethernet interface
       product: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
       vendor: Realtek Semiconductor Co., Ltd.
       physical id: 0
       bus info: pci@0000:03:00.0
       logical name: enp3s0
       version: 03
       serial: 00:24:1d:d3:70:8b
       size: 100Mbit/s
       capacity: 1Gbit/s
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress msix vpd bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=5.15.91-4-lts duplex=full firmware=rtl_nic/rtl8168d-2.fw latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s
       resources: irq:17 ioport:ce00(size=256) memory:fbdff000-fbdfffff memory:fbdf8000-fbdfbfff memory:fbe00000-fbe1ffff

Dans la ligne configuration on voit le pilote (driver=r8169) et le firmware (firmware=rtl_nic/rtl8168d-2.fw) qui sont chargés. Le firmware se trouve dans /usr/lib/firmware/rtl_nic/rtl8168d-2.fw.xz fournit par le paquet linux-firmware. À noter que La ligne configuration contiendrait aussi l'adresse IP si elle était configurée au moment de la commande.

Le pilote de l'interface Ethernet (r8169) et le firmware chargé (rtl_nic/rtl8168d-2.fw) peuvent aussi être retrouvés avec la commande ethtool -i enp3s0 qui affiche :

driver: r8169
version: 5.15.91-4-lts
firmware-version: rtl_nic/rtl8168d-2.fw
expansion-rom-version: 
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

La configuration courante de l'Ethernet, elle est affichée par la commande ethtool enp3s0 :

	Supported ports: [ TP	 MII ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Half 1000baseT/Full
	Supported pause frame use: Symmetric Receive-only
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Half 1000baseT/Full
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full
	                                     100baseT/Half 100baseT/Full
	Link partner advertised pause frame use: Symmetric
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 100Mb/s
	Duplex: Full
	Auto-negotiation: on
	master-slave cfg: preferred slave
	master-slave status: slave
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: external
	MDI-X: Unknown
	Supports Wake-on: pumbg
	Wake-on: d
	Link detected: yes

Je suis étonné de voir les Link partner advertised link modes culminer à 100baseT/Half 100baseT/Full. C'est un peu le nœud du problème ; la carte mère ne détecterait pas correctement les vitesses proposées par le partenaire.

Pilote r8168

J'ai également essayé le pilote 8168 de Realtek, disponible à https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software mais plus simplement fourni par le paquet Arch Linux r8168-lts. Pas mieux. Voici le log de démarrage :

[    8.143714] r8168: loading out-of-tree module taints kernel.
[    8.143838] r8168: module verification failed: signature and/or required key missing - tainting kernel

[    8.185713] r8168 Gigabit Ethernet driver 8.051.02-NAPI loaded

[    8.201920] r8168: This product is covered by one or more of the following patents: US6,570,884, US6,115,776, and US6,327,625.
[    8.203359] r8168  Copyright (C) 2022 Realtek NIC software team <nicfae@realtek.com> 
                This program comes with ABSOLUTELY NO WARRANTY; for details, please see <http://www.gnu.org/licenses/>. 
                This is free software, and you are welcome to redistribute it under certain conditions; see <http://www.gnu.org/licenses/>. 

[    8.492918] r8168 0000:03:00.0 enp3s0: renamed from eth0

[    9.205282] enp3s0: 0xffff9bb0c0241000, 00:24:1d:d3:70:8b, IRQ 31

[   23.846574] r8168: enp3s0: link up

La connexion Ethernet met toujours beaucoup trop de temps à s'établir.

La commande ethtool -i enp3s0 affiche :

driver: r8168
version: 8.051.02-NAPI
firmware-version: rtl_nic/rtl8168d-2.fw
expansion-rom-version: 
bus-info: 0000:03:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

La commande ethtool enp3s0 affiche :

Settings for enp3s0:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Supported pause frame use: Symmetric Receive-only
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full
	                                     100baseT/Half 100baseT/Full
	Link partner advertised pause frame use: Symmetric
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 100Mb/s
	Duplex: Full
	Auto-negotiation: on
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	MDI-X: Unknown
	Supports Wake-on: pumbg
	Wake-on: g
        Current message level: 0x00000033 (51)
                               drv probe ifdown ifup
	Link detected: yes

Toujours 100 Mb/s, ça revient au même.

J'ai également essayé sur Windows 10, et la connexion est aussi à 100 Mb/s. Et dès l'allumage du PC, avant le chargement du système, je vois aux leds que la vitesse est 100 Mb/s.


© 2023 Marc Mongenet Creative Commons License
Ce document est disponible selon les termes de la Creative Commons Attribution 2.5 License.
Dernière mise à jour et validation le 12 février 2023.