Posted inDebug
Intel 82551强制模式
最近遇到了一个问题,公司之前设计的产品在旁路网络的时候只旁路了百兆4根线,结果造成用户在使用的过程中一旦将网络盘路后两端的装置无法正常协商成功。后来只能将两端的装置强制为百兆全双工,我们的设备依旧为自动协商。 后来我们的产品在运行过程中出现了协商时为百兆全双工、时为百兆半双工。在百兆半双工的情况下会造成网络故障。 开始以为是Intel 82551网络协商问题,后来查了一下网络自动协商的规范,原来在一端强制、一端自动的时候只能协商网络速度,而不能协商双工与半双工,在一端强制的情况下,另外一端也必须强制对端的速率和双工。 于是通过options=0x70强制网卡驱动在加载的时候为百兆全双工。但是又遇到了另外一个问题:网口在ifdown/ifup或者拔掉在插上的时候检测link非常慢,需要5分钟以上,这个肯定是不正常的。 接着google,但是毫无进展。后来查看到82551的DS中对MDI/MDI-X有一个切换时间的选择配置,想一下我们的装置也配置了MDI/MDI-X自适应,会不会是这个问题呢。 马上修改驱动禁止MDI/MDI-X自适应,网口检测马上好了,接着打开MDI/MDI-X自适应,同时修改切换时间从80ms到105ms,问题解决。 怀疑是网络设计信号完整性不是很好,检测link时间过长而导致MDI/MDI-X切换。 参考资料: http://en.wikipedia.org/wiki/Autonegotiation