Eu tenho um Dell r710 (rodando o Debian GNU / Linux 6.0) que atualmente está em um datacenter a centenas de quilômetros de distância, e o cartão ethernet está preso em 10baseT half duplex. 10baseT está OK, mas eu quero que seja full duplex.
O cartão em questão é um 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)
usando o driver / firmware bnx2:
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
E executando o kernel de ações para 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
Eu tentei alterar as configurações da Ethernet:
ethtool -s eth0 speed 10 duplex full autoneg off
Mas, depois, perco toda a conectividade e tenho que reinicializar o servidor para me conectar a ele novamente. Para evitar a necessidade de reinicializar constantemente o servidor e descobrir se o comando ethtool estava travado, mudei para o 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
Isso me permite ver o status da interface depois de executar o comando:
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
Do dmesg:
[ 442.865157] bnx2: eth0 NIC Copper Link is Down
Parece que a negociação automática está falhando ou o switch em que estou conectado está anunciando o formato 10Mbit / half duplex. Foi-me dito que o switch está sendo executado em 10M full duplex.
Isso pode ser um problema de driver, problema de hardware, problema de cabo, problema de comutação? Há algo que eu possa fazer remotamente para identificar a origem do problema ou, pelo menos, eliminar possibilidades?
Atualizar :
Desligar a negociação automática e definir as opções para 10 / HD, 10 / FD, 100 / HD, 100 / FD, etc. (qualquer outra coisa que não negociação automática 10 / HD) resulta em NO-CARRIER
, conforme relatado por ip link show dev eth0
. O mesmo é válido para deixar a negociação automática e anunciar algo diferente de 10 / HD. Existe alguma maneira de isso ser algo diferente de um problema com a troca?