问题背景:
目前接到客户反馈,在OK3588平台使用百兆网线连接千兆设备无法正确切换成百兆,它还是协商成千兆,造成网络无法联通。且使用ethtool工具强制配置成百兆之后可以联通。
但是使用百兆网线连接百兆设备,可以正常协商成百兆。
解决思路:
接到问题之后,首先是网上寻找有没有类似的问题,然后就看到了这个文章:
参考文章https://blog.csdn.net/Emo_snaf/article/details/120762203
根据这个文章,得到的修改思路是:修改读取Link Partner的能力函数genphy_read_lpa(),增加判断GBCR (1000Base-T Control Register, Address 0x09)的bit 9,也就是MII_CTRL1000寄存器的ADVERTISE_1000FULL位,检查自己是否支持Advertise 1000Base-T Full-Duplex能力,如果不支持,则去修改读到的对方Link Partner 1000Base-T Full Duplex的能力为不支持千兆。这样自然程序后面也就会把速度协商为百兆了。

