This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DP83867IR:IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪

Guru**** 2805925 points

Other Parts Discussed in Thread: AM5729

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1616103/dp83867ir-ipv6-addrconf-netdev_up-eth0-link-is-not-ready

器件型号: DP83867IR

您好、

并尝试让以太网在基于 AM5729 的定制电路板上运行。  

我们与 eth/phy/MDIO 等相关的 dmesg 日志是:

[  0.000000]在物理 CPU 0x0 上引导 Linux
[  0.000000] arch_timer:在 6.14MHz (PHY) 上运行的 cp15 计时器。
[  1.040813] libphy:固定 MDIO 总线:已探测
[  1.081249] davinci_mdio 48485000.mdio:DaVinci MDIO 修订版 1.6、总线频率 1000000
[  1.081261] libphy:48485000.mdio:已探测
[  1.097189] DaVinci _MDIO 48485000.MDIO:PHY[0]:器件 48485000.MDIO:00、驱动程序 TI DP83867
[1.097788]  cpsw 48484000.以太网:检测到的 MACID = 20:D7:78:16:84:28
[  1.097858] cpsw 48484000.以太网:初始化 cpsw ale 版本 1.4
[  1.097867] cpsw 48484000.以太网:ALE Table Size 1024
[  1.097901] cpsw 48484000.以太网:CPT:溢出检查周期 1250 (Jiffies)
[7.611714]  Net eth0:初始化 cpsw 版本 1.15 (0)
[  7.665105] TI DP83867 48485000.MDIO:00:连接的 PHY 驱动程序[TI DP83867](MII_BUS:phy_addr=48485000.MDIO:00、IRQ=POLL)
[7.675516]  IPv6:ADDRCONF(NETDEV_UP):eth0:链路未就绪
[  7.675527] 8021q:将 VLAN 0 添加到设备 eth0 上的硬件过滤器

我们关联的设备树授权:

&davinci_mdio{
  //注意:更改了兼容条目以适合 DP83867IRRGZR
  phy0:Ethernet-phy@0{
    reg =<0>;
    TI、rx-internal-delay = ;
    TI、tx-internal-delay = ;
    TI、fifo-depth = ;
  };
};

&cpsw_emac0{
  phy-handle =<&phy0>;
  PHY 模式=“RGMII-id";“;
};

&Mac{
  从器件=<1>;
  状态=“正常“;
};

我们能够在 MDIO 和 MDCLK 线路上看到时钟和数据信号。 但是、我们无法让 eth0 链路准备就绪。


请提供任何建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alexander:

    感谢您的联系。 以下是一些有助于找出问题的问题:

    • 哪个 PHY + SoC 用作链路伙伴?
    • “ethtool -s eth0“的输出日志是什么 
    • 寄存器转储可以共享吗? ethtool、mdio-tools 或 phytool 可以帮助解决此问题。
      • ethtool -d|--register-dump devname [raw on|off][十六进制 on|off]

    链路故障通常是 PHY 级配置问题、因此我建议确认[DP83867]和[Link Partner]之间的配置兼容、相对于:

    • 自动协商已启用/已禁用
      • 如果禁用、两个 PHY 是否都设置为强制采用相同的速度?
      • 如果启用、两个 PHY 是否都广播相同的速度? 寄存器转储将确认在自动否定过程中远程接收到哪些广播。

    谢谢您、
    Evan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Evan:

    -它连接到标准千兆以太网交换机(NETGEAR ProSAFE 加 8 端口 GS108E 千兆以太网交换机)
    -“ethtool -s eth0“不返回输出
    - sudo ethtool -d eth0 产生以下结果(从 0x0070 到 0x2ff0 为 0)。 我们在模式 1 下运行(或至少打算):

    偏移         值
    -----          -----
    0x0000:        00 00 00 00 D7 20 00 10 28 84 16 78 0c 00 00 00
    0x0010:        ff ff ff ff ff 00 d0 ff ff ff ff ff ff ff 00 00 00 00 20
    0x0020:        07 06 07 07 1c 00 00 33 00 10 01 00 00 00
    0x0030:        1C 00 00 00 01 00 10 01 00 5e 1c 00 00 00 00 00
    0x0040:        00 01 00 10 fb 00 00 5e 00 00 00 00 00 00 00 00 00
    0x0050:        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x0060:        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x0070:        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    ...
    0x2ff0:        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    -“ethtool eth0“产生以下结果:
    eth0 设置:
            支持的端口:[ TP mii ]
            支持的链路模式:  10BaseT/Half 10baseT/Full
                                    100BaseT/Half 100BaseT/Full
                                    1000BaseT/Half 1000BaseT/Full
            支持的暂停帧使用:对称仅接收
            支持自动协商:可以
            支持的 FEC 模式:未报告
            广播的链路模式: 1000BaseT/Full
            广播的暂停帧使用:否
            广播的自动协商:是
            广播 FEC 模式:未报告
            速度:10MB/s
            双工:半双工
            端口:mii
            PHYAD:0
            收发器:外部
            自动协商:打开
    无法获取局域网唤醒设置:不允许操作
            当前消息级别:0x00000000 (0)
            检测到链路:否

    我们还将根据故障排除指南 (https://www.ti.com/lit/an/snla246c/snla246c.pdf?ts = 1770688800414&ref_url=https%253A%252F%252Fe2e.ti.com%252F) 测试明天是否会收到自动协商脉冲。

    感谢你的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alexander:

    感谢您的分享。 此 ethtool 转储的格式似乎不对应于每个寄存器的 16 位读数 — 无法确认 0x2/0x3 中的默认常量 PHYID 值。 请尝试 phytool 来读取单个寄存器 0x0 - 0x1F:

    https://github.com/wkz/phytool

    【常见问题解答】如何使用 Linux 终端读取和写入以太网 PHY 寄存器?

    验证寄存器访问后、我建议进行以下检查:

    • 0x1[2]、用于检查链路状态
    • 0x5 和 0x6、用于验证链路伙伴是否接收到广播
      • 写入 0x0[9]=“1"以“以重新启动自动协商并检查再次接收到的链路状态/广播
    • 如果寄存器 不希望由搭接设置的预期配置、请读出寄存器 0x6E 和 0x6F 以进行确认。 可能需要扩展方法:

    谢谢您、
    Evan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Evan:

    这最终导致硬件出现问题、我们现在已经解决了。 感谢您的帮助!