I have a Dell r710 (running Debian GNU/Linux 6.0) which is currently in a datacenter hundreds of miles away, and the ethernet card is stuck at 10baseT half duplex. 10baseT is OK, but I want it to be full duplex.
The card in question is a broadcom BCM5709:
areion:~# lspci |grep Ethernet 01:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) 01:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) 02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) 02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
using the bnx2 driver/firmware:
areion:~# apt-cache policy firmware-bnx2 firmware-bnx2: Installed: 0.28 Candidate: 0.28 Version table: *** 0.28 0 500 http://ftp.us.debian.org/debian/ squeeze/non-free amd64 Packages 100 /var/lib/dpkg/status
And running the stock kernel for squeeze:
areion:~# uname -a Linux areion 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux
I've tried changing the ethernet settings:
ethtool -s eth0 speed 10 duplex full autoneg off
But then I lose all connectivity, and have to reboot the server in order to connect to it again. To avoid having to constantly reboot the server, and to find out if the ethtool command was hanging, I switched to using this script:
#!/bin/bash ethtool -s eth0 speed 10 duplex full autoneg off 2>&1 > ethtool.log & sleep 10 if [ $(jobs -r |wc -l) -gt 0 ]; then kill %1 || kill -9 %1 else echo '-----------' >> ethtool.log ethtool eth0 >> ethtool.log fi dmesg |tail > dmesg-recent.log ethtool -s eth0 autoneg on
This allows me to see the status of the interface after running the command:
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: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Speed: Unknown! Duplex: Unknown! (255) Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: off MDI-X: Unknown Supports Wake-on: g Wake-on: d Link detected: no
[ 442.865157] bnx2: eth0 NIC Copper Link is Down
It seems that either autonegotation is failing, or the switch that I am plugged into is advertising 10Mbit/half duplex. I am told that the switch is running at 10M full duplex.
Might this be a driver issue, hardware issue, cable issue, switch issue? Is there anything I can do remotely to identify the source of the problem, or at least eliminate possibilities?
Turning autonegotiation off, and setting the options to 10/HD, 10/FD, 100/HD, 100/FD, etc (anything other than autonegotiated 10/HD) results in
NO-CARRIER, as reported by
ip link show dev eth0. The same is true for leaving autonegotiation on, and advertising anything other than 10/HD. Is there any way this could be something other than an issue with the switch?