千兆位以太网需要重新插入才能适用于内核 4.20

千兆位以太网需要重新插入才能适用于内核 4.20

我有一块 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 +0100

net: 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

相关内容