我有一块 Microchip sama5d36 板,具有千兆位以太网 (KSZ9031RNX) 和 10/100 以太网 (DP83848J)。当我使用内核 4.20 时,千兆位以太网将无法连接,直到我拔下并重新插入以太网电缆。此问题仅在某些路由器连接中出现,并且仅在千兆端口上出现。如果我切换回内核 4.18,问题就会消失。 dts 文件是相同的,我没有看到配置设置中有任何看似重要的更改。
这是我的 dts 设置:
macb0: ethernet@f0028000 {
phy-mode = "rgmii";
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
ethernet-phy@7 {
reg = <0x7>;
};
};
我正在使用 systemd-networkd,这是我在 /etc/systemd/network 中的设置:
[Match]
Name=eth0
[Network]
DHCP=yes
重启后:
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 00:1c:1e:08:a0:e1 brd ff:ff:ff:ff:ff:ff
拔下并重新插入后:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:1c:1e:08:a0:e1 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.6/24 brd 192.168.2.255 scope global dynamic eth0
valid_lft 85532sec preferred_lft 85532sec
inet6 fe80::21c:1eff:fe08:a0e1/64 scope link
valid_lft forever preferred_lft forever
关于我可以在哪里查找问题的任何见解?
答案1
似乎是一个错误。尝试升级到较新的内核。
看https://cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.20.13
和https://www.spinics.net/lists/netdev/msg543703.html
提交 cbae90516d2a5fd3c71d55a28bacc5f67625564d
作者:Heiner Kallweit
日期:2019 年 1 月 10 日星期四 20:22:26 +0100net: phy: micrel: 将 KSZ9031 的 soft_reset 回调设置为 genphy_soft_reset
[上游提交 1d16073a326891c2a964e4cb95bc18fbcafb5f74 ]
到目前为止,如果 PHY 驱动程序未实现 soft_reset 回调,则会自动使用 genphy_soft_reset。这随着提到的提交而改变并破坏了 KSZ9031。要修复此问题,请将 KSZ9031 PHY 驱动程序配置为使用 genphy_soft_reset。
修复:6e2d85ec0559(“net:phy:因过度软重置而停止”)
报告者:Tony Lindgren
签名者:Heiner Kallweit
测试者:Tony Lindgren
测试者:Sekhar Nori
审核者:Florian Fainelli
签名-签字人: David S. Miller
签字人: Sasha Levin