Can't set up NIC to establish Gigabit link on Linux
I have Ubuntu 11.10 64 bits with one (actually two, but only one is connected) Intel 82578 Gigabit Network Card which is working on 100 Mbps and I want it to work on 1000 Mbps, but I can't. How can I find out what's wrong?
Here's what happens when I try to set the speed with ethtool:
# ethtool -s eth0 speed 1000
Cannot advertise speed 1000
I also tried this and lost network connectivity:
# ethtool -s eth0 speed 1000 duplex full
I'm running out of ideas on where to look.
Some information:
The server is connected to a Cisco RVS4000 router which has all active ports configured to work @ 1000 Mbps Full Duplex with auto negotiation. In fact, there's another server connected to another port of the router, which is working fine at 1000 Mbps.
Info about the server I'm having problems with:
lshw:
# lshw -C network
*-network
description: Ethernet interface
product: 82578DM Gigabit Network Connection
vendor: Intel Corporation
physical id: 19
bus info: pci@0000:00:19.0
logical name: eth0
version: 05
serial: 00:1e:67:15:2b:f1
size: 100Mbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: 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=1.3.10-k2 duplex=full firmware=0.10-2 ip=192.168.1.12 latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s
resources: irq:45 memory:b1a00000-b1a1ffff memory:b1a24000-b1a24fff ioport:2020(size=32)
*-network
description: Ethernet interface
product: 82574L Gigabit Network Connection
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:03:00.0
logical name: eth1
version: 00
serial: 00:1e:67:15:2b:f0
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi pciexpress msix bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=1.3.10-k2 firmware=1.9-0 latency=0 link=no multicast=yes port=twisted pair
resources: irq:16 memory:b1900000-b191ffff ioport:1000(size=32) memory:b1920000-b1923fff
ethtool
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 2
Transceiver: internal
Auto-negotiation: on
MDI-X: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000001 (1)
drv
Link detected: yes
dmesg's info about the network driver:
# dmesg |grep e1000e
[ 1.938726] e1000e: Intel(R) PRO/1000 Network Driver - 1.3.10-k2
[ 1.938729] e1000e: Copyright(c) 1999 - 2011 Intel Corporation.
[ 1.938764] e1000e 0000:00:19.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 1.938775] e1000e 0000:00:19.0: setting latency timer to 64
[ 1.938878] e1000e 0000:00:19.0: irq 45 for MSI/MSI-X
[ 2.181735] e1000e 0000:00:19.0: eth0: (PCI Express:2.5GT/s:Width x1) 00:1e:67:15:2b:f1
[ 2.181737] e1000e 0000:00:19.0: eth0: Intel(R) PRO/1000 Network Connection
[ 2.181771] e1000e 0000:00:19.0: eth0: MAC: 9, PHY: 9, PBA No: 0310FF-0FF
[ 2.181785] e1000e 0000:03:00.0: Disabling ASPM L0s
[ 2.181799] e1000e 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 2.181816] e1000e 0000:03:00.0: setting latency timer to 64
[ 2.182046] e1000e 0000:03:00.0: irq 46 for MSI/MSI-X
[ 2.182050] e1000e 0000:03:00.0: irq 47 for MSI/MSI-X
[ 2.182053] e1000e 0000:03:00.0: irq 48 for MSI/MSI-X
[ 2.293669] e1000e 0000:03:00.0: eth1: (PCI Express:2.5GT/s:Width x1) 00:1e:67:15:2b:f0
[ 2.293672] e1000e 0000:03:00.0: eth1: Intel(R) PRO/1000 Network Connection
[ 2.293754] e1000e 0000:03:00.0: eth1: MAC: 3, PHY: 8, PBA No: 1010FF-0FF
[ 15.316964] e1000e 0000:00:19.0: irq 45 for MSI/MSI-X
[ 15.372707] e1000e 0000:00:19.0: irq 45 for MSI/MSI-X
[ 19.897407] e1000e: eth0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx
[ 19.897412] e1000e 0000:00:19.0: eth0: 10/100 speed: disabling TSO
Sounds like there's something wrong with the switch port, or with the physical media. If your autonegotiate puts you at 100Mb and you can't force it to 1Gb, then you've likely got a physical problem.
That said, if you're going to force 1Gb/s, you should make sure you do it on both sides. Don't take the NIC off of auto without also taking the corresponding switch port off of auto.