如何禁用自动协商并强制特定的以太网设置?

我有一个戴尔r710(运行Debian GNU / Linux 6.0),目前在数百英里以外的数据中心,以太网卡卡在10baseT半双工。 10baseT是好的,但我希望它是全双工。

有问题的卡是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) 

使用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 

并运行库存挤压:

 areion:~# uname -a Linux areion 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux 

我试过改变以太网设置:

 ethtool -s eth0 speed 10 duplex full autoneg off 

但是,然后我失去了所有的连接,必须重新启动服务器才能再次连接。 为了避免不断重启服务器,并确定ethtool命令是否挂起,我切换到使用此脚本:

 #!/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 

这使我可以在运行命令后看到接口的状态:

 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 

从dmesg:

 [ 442.865157] bnx2: eth0 NIC Copper Link is Down 

似乎是自动协商失败,或者我插入的交换机正在广告10Mbit /半双工。 我被告知交换机运行在10M全双工。

这可能是一个驱动程序问题,硬件问题,电缆问题,切换问题? 有什么我可以远程做的,以确定问题的根源,或至less消除可能性?

更新

closures自动协商并将选项设置为10 / HD,10 / FD,100 / HD,100 / FD等(除了自动协商的10 / HD之外的任何其他),将导致NO-CARRIER ,如ip link show dev eth0所报告的。 离开自动协商也是如此,并且广告除了10 / HD之外的任何东西。 有什么办法,这可能是一个问题,而不是交换机的问题?

在两端都启用自动协商。 这是networking供应商(包括思科)目前的build议。 请参阅: http : //www.cisco.com/en/US/tech/tk389/tk214/technologies_tech_note09186a0080094781.shtml

对于你的问题,你必须找出它在远端的configuration。 如果是自动协商,那么你也应该在你的服务器上使用自动协商。 如果它被设置为特定的速度和双工你应该匹配远程端。

请记住,可以保持协商,只允许一定的速度和双工协商。 此外,function的广告可以是可configuration的。

如果网卡已经以10 / HD进行协商,通常意味着远端已经协商禁用,并且设置为10 / FD。 你的不良performance是由双面不匹配造成的。

你也应该尝试使用不同的网卡。 更改驱动程序将无济于事,因为检测链路(检测载体和速度)是由NIC的PHY部分完成的。

你可以把另一个设备,如你和服务器之间的交换机,你可以在物理上改变设置? 这可能有帮助。

不build议禁用自动协商,但如果您仍然决定,则必须在两端禁用自动协商,并将两端设置为使用完全相同的速度和双工。 如果您只在一端禁用自动协商,另一端则被迫承担10MB / HD。 如果您无法访问以太网电缆另一端的交换机,或者该交换机不支持这种定制,则不能select禁用自动协商。 在某些情况下,您可以启用自动协商function,但请告知网卡或交换机宣传较低速度或半双工。