我有一张网卡:
02:00.0 以太网控制器:Marvell Technology Group Ltd. 88E8050 PCI-E ASF 千兆以太网控制器(rev 18)
并且看起来卡随机重置。这是 dmesg:
[751806.503694] sky2 eth1:挂起 mac 124:54 fifo 195(128:123) [751806.503702] sky2 eth1:检测到接收器挂起 [751806.504154] sky2 eth1:禁用接口 [751806.504440] sky2 eth1:启用接口 [751809.712495] sky2 eth1:链路以 1000 Mbps 的速度运行,全双工,流量控制 rx [970196.706605] sky2 eth1:挂起 mac 0:2 fifo 195 (194:189) [970196.706611] sky2 eth1:检测到接收器挂起 [970196.706913] sky2 eth1:禁用接口 [970196.707227] sky2 eth1:启用接口 [970199.917018] sky2 eth1:链路以 1000 Mbps 的速度运行,全双工,流量控制 rx
看来网络驱动程序 sky2 有问题;但我还没有在其他论坛找到任何答案。您有什么建议吗?我可以使用其他驱动程序来驱动该卡吗?这是一个已知的错误吗?
谢谢!
答案1
sky2
多年来,该驱动程序质量一直很差。
我确实相信现在基本上没什么问题,9.10 版本应该可以正常工作。
答案2
有一种解决方法对我来说非常可靠,适用于大约 10 个装有 sky2 驱动程序的盒子。我所有的盒子都是基于 Centos5 的,内核是 2.6.18(是的,对于 2017 年来说太老了)。我发现在这些日志消息之后...
sky2 eth1: receiver hang detected
sky2 eth1: disabling interface
sky2 eth1: enabling interface
... 驱动程序似乎会破坏将校验和卸载到硬件的功能。在一些实验中,我能够仅通过ifdown; ifup
序列使其部分失败,这似乎只会导致校验和卸载在某些 UDP 流量中中断。
因此我只是禁用校验和卸载到硬件:
ethtool --offload eth1 tx off
警告:对我来说是ethtool --show-offload eth1
谎言,并且始终声称它是关闭的。我可以看到将其设置为on
或off
显然会改变行为,但查询其状态是谎言,并且始终显示为off
。
现在,为了使其自动应用,我将其输入/sbin/ifup-local
:
#!/bin/bash
DEVICE=$1
if [[ "$DEVICE" == "eth0" || "$DEVICE" == "eth1" ]] ; then
ethtool --offload "$DEVICE" tx off
fi
但类似的东西可能也可以放在其他地方,例如在/etc/network/if-up.d/eth
debian 之类的地方。