Linux – Why wouldn’t an ethernet interface advertise gigabit speed if it’s capable

ethernetgigabit-ethernetlinuxwired-networking

I have a laptop with a gigabit capable ethernet interface:

# lspci -vvnn -s 08:02.0
08:02.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167] (rev 10)
            Subsystem: Realtek Semiconductor Co., Ltd. RTL-8110SC/8169SC Gigabit Ethernet [10ec:8167]
            Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
            Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
            Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
            Interrupt: pin A routed to IRQ 20
            Region 0: I/O ports at b800 [size=256]
            Region 1: Memory at feafe400 (32-bit, non-prefetchable) [size=256]
            Expansion ROM at feac0000 [disabled] [size=128K]
            Capabilities: [dc] Power Management version 2
                    Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
                    Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
            Kernel driver in use: r8169

which I'm trying to connect to a gigabit capable router with Cat 6 (gigabit) cable for gigabit communication within the LAN. The problem is that the interface on my laptop is not advertising gigabit link speed that it used to:

# mii-tool -v
eth0: negotiated 100baseTx-FD flow-control, link ok
  product info: vendor 00:07:32, model 17 rev 2
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

What would be the cause of this?

Best Answer

In my case the reason was obvious but still I searched quite some time before figuring it out. The cable was not gigabit-capable (i.e. only 4 out of 8 wires actually exist in the cable). Replacing the cable fixed the issue.

Definitely something to check before investigating complicated software parameters :)

Related Question