千兆网口与百兆网口(W5500)自动协商失败导致网络不通

文章讲述了MCUSTM32与IntelJ1900网卡在直连时遇到的网络连接问题,通过设置固定工作模式解决,发现是由于PHY层兼容性导致的自动协商失败。最终解决方案强调了单方面设置并非长久之计,需要双方网卡配合解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编号:EB-00002

环境:

        通信节点A:MCU STM32 + W5500网卡(百兆,支持自动协商,不支持MDI自动极性变换),

        通信节点B:  CPU Intel J1900(Debian 12操作系统)+ I211网卡(千兆,支持自动协商和MDI,驱动igb driver)

        连接方式:网线直连

现象:

        1.节点A和节点B直连后网口灯不亮,网络不通,ping失败。

        2.更换网线为交叉线或者直连线,问题依旧。

        3.节点A和节点B中间经过交换机如TLSF-1008,网络连接正常,可以ping通。

        4.节点A与台式机、笔记本电脑、路由器等其他网络设备直连,没有问题。

        5.节点B与台式机、笔记本电脑、路由器等其他网络设备直连,也没有问题。

        6.节点B不变,节点A设置关闭网口自动协商,固定为100M 全双工,网络正常,可以ping通。

        7.节点A不变,节点B设置关闭网口自动协商,固定为100M 全双工,网络正常,可以ping通。

解决:

        节点A设置关闭网口自动协商,固定为100M 全双工(通过修改MCU程序配置网卡)。节点B也设置关闭网口自动协商,固定为100M 全双工(设置命令“sudo ethtool -s enp1s0 speed 100 duplex full mdix auto autoneg off”)。

分析:

        网络不通时,查看节点B网口状态为 百兆半双工未连通(ethtool -d  enp1s0),且无法识别对端(节点A)的网络能力(ethtool -d  enp1s0 |grep "Link partner ability",寄存器值为全0)

扩展:

        总结为两个网卡phy层兼容性问题,导致无法成功自动协商工作模式。

        注意,虽然只设置通信一方为百兆全双工固定模式,网络可以ping通,但是这并不能作为最终解决方案,会导致另一方自动协商为半双工模式,双方后续通信存在问题,具体原因可参考FAQ-以太网自协商的详细过程
————————————————
版权声明:本文为CSDN博主「doonline」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/doonline/article/details/135640668

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值