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.

[参考译文] DP83867CR:100Mbps 电缆的链路问题

Guru**** 2539500 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/955584/dp83867cr-link-up-issue-with-100mbps-cable

器件型号:DP83867CR
您好!
我将基于 IMX8MM 的定制板与 DP83867以太网 PHY 搭配使用。 当我使用100Mbps 电缆通过瞻博网络交换机 EX3300连接设备时、不会自动进行链接。
当我使用1Gbps 电缆将器件与交换机连接时、会自动进行链路连接。
链接器件的唯一方法是运行下表中提到的 ethtool 命令。
## 电缆 链接合作伙伴 链路连接 备注
1 1Gbps 直向电缆 PC 通过 在 PC 和 IMX8MM 板两侧分配的静态 IP。
2. 1Gbps 交叉电缆 PC 通过 在 PC 和 IMX8MM 板两侧分配的静态 IP。
3. 100Mbps 直向电缆 PC 失败 在两侧分配的静态 IP。
需要运行以下命令以进行链接
PC:sudo ethtool -s eno1 speed 100 duplex Full AutoNeg off
IMX8MM:ethtool -s eth0 speed 100双工全自动协商关闭
4. 100Mbps 直向电缆 100Mbps 路由器 通过 在 PC 和 IMX8MM 板两侧分配的静态 IP。
连接详细信息:
DP83867 -> 100Mbps 电缆-> 100Mbps 路由器
PC -> 1Gbps 电缆-> 100Mbps 路由器
5. 1Gbps 直向电缆 100Mbps 路由器 通过 在两侧分配的静态 IP。
连接详细信息:
DP83867 -> 1Gbps 电缆-> 100Mbps 路由器
PC -> 1Gbps 电缆-> 100Mbps 路由器
6. 1Gbps 直向电缆 瞻博网络 EX3300交换机 通过 在两个设备上分配的动态 IP。
连接详细信息:
DP83867 -> 1Gbps 电缆->瞻博网络 EX3300交换机
PC -> 1Gbps 电缆->瞻博网络 EX3300交换机
7. 100Mbps 直向电缆 瞻博网络 EX3300交换机 失败 在两个设备上分配的动态 IP。
连接详细信息:
DP83867 -> 100Mbps 电缆->瞻博网络 EX3300交换机
PC -> 1Gbps 电缆->瞻博网络 EX3300交换机
需要在 IMX8MM 器件上运行以下命令以进行链路
ethtool -s eth0 speed 100双工全双工
我对具有 Qualcomm AR8031 PHY 和相同 IMX8MM 处理器的 IMX8MM EVK 进行了相同的测试、但未观察到此类问题。 在 IMX8MM EVK 上自动发生连接。 因此、我怀疑问题是 PHY 特有的。

请告诉我您对我们的观察结果的反馈。 如果您需要任何其他详细信息、请告诉我。
谢谢、
那曼
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Naman、

    PHY 可能正在100M 电缆的通道 A 上完成自动协商、其中 DUT 和链路伙伴通告1G 速度、自动协商解析为1G 模式。 但是、由于100M 电缆在通道 C 和 D 上没有连接、PHY 会断开链路并进入该阻塞状态。  

    您可以启用 DP83867的速度优化功能、以避免在特定数量的链接后出现这种僵局。 DP83867数据表的第8.4.6.5节讨论了此特性、寄存器0x0014可用于启用此特性。

    此致、
    Justin  

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

    您好 Justin、

    我尝试启用 DP83867的速度优化功能、但问题仍然存在。 请告诉我是否有任何其他可能有用的功能。

    此致、

    那曼

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

    您好、Naman、

    在失败测试中、您可以禁用寄存器0x0009[9:8]中 DP83867的1000Mbps 功能广播。 如果执行此操作并重新启动自动协商、是否仍然看到故障?

    此致、
    Justin  

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

    您好 Justin、

    当我在禁用1000Mbps 的广播后重新启动自动协商时、它会自动重新启用1000Mbps 的广播。
    如果我禁用1000Mbps 的广播并连接100Mbps 电缆、则问题仍然存在。 当我重新启动自动协商时、0x0009的第9位被置位、即1000Mbps 的广播被启用。
    我使用 phytool 应用程序更改寄存器设置。
    phytool 写入 eth0/0:0/0x0009 0x0000

    当我读回寄存器时、我得到0x0000值(默认值为0x0200)。 重新启动自协商后、它被设置为0x0200。

    重启自协商的命令:
    ethtool -s eth0 AutoNeg 关闭&& ethtool -s eth0 AutoNeg 打开

    让我知道是否有其他方法来测试它。
    我假设我需要在内核驱动程序中进行更改才能执行此测试。 如果我的假设正确、请向我建议测试所需的更改。

    此致、
    Naman Thaker

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

    您好、Naman、

    我不知道 hte ethtool AutoNeg 关闭/打开命令的具体细节、但我怀疑问题是 PHY 的硬复位。  

    您可以更改寄存器设置、然后通过以下寄存器命令发出软件重启:

    phytool 写入 eth0/0:0/0x0009 0x0000

    phytool 写入 eth0/0:0/0x001F 0x4000

    软件重新启动将重新启动 PHY、而不会复位对内部寄存器所做的更改。  

    您还可以共享用于测试速度优化功能的寄存器命令吗?  

    此致、
    Justin  

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

    您好 Justin、

    按照您的建议使用以下命令发出软件重启后、将检测到链路、并将 IP 分配给器件:
    phytool 写入 eth0/0:0/0x0009 0x0000
    phytool 写入 eth0/0:0/0x001F 0x4000

    但是、由于未通告1Gbps、因此即使使用1Gbps 电缆和链路伙伴、也只能实现100Mbps 的速度。 但使用100Mbps 电缆时、会成功检测到链路、并且还可实现~100Mbps 的速度。

    我用于测试速度优化功能的命令如下所示:
    phytool 写入 eth0/0:0/0x0014 0x2fc7

    我还在 DP83867驱动程序中添加了下面的一段代码、以便使用固定值初始化速度优化寄存器。
    RET = phy_write (phydev、0x14、0x2fc7);                              
    IF (RET)                                                            
           回程;

    此致、
    那曼

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

    您好、Naman、

    谢谢你。 您能否确认在通过寄存器启用速度优化后是否完成了软件重启?

    此致、
    Justin  

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

    您好 Justin、

    在使用以下命令启用速度优化后、我尝试执行软件重启、但未检测到链接。
    phytool 写入 eth0/0:0/0x0014 0x2fc7
    phytool 写入 eth0/0:0/0x001F 0x4000

    此致、
    那曼

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

    您好、Naman、

    启用速度优化后、PHY 将速度降档到100M 之前可能需要长达45秒的时间。 您能否确认有足够的时间让 PHY 解决速度优化问题?  

    您也可以在降档前减少尝试在1G 进行链接的次数、以减少寄存器0x0014中的链接时间。

    此致、

    Justin  

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

    您好 Justin、

    启用速度优化后、会在30-45秒后检测到链路。 但速度不会降低到100Mbps、而是保持在1000Mbps。 此外、即使在5分钟后、器件也无法获取 IP 地址。

    5分钟后的 ethtool 输出:
    $./ethtool eth0                                                                                                     
    eth0的设置:
       支持的端口:[ TP MII]
       支持的链路模式:  10BaseT/Half 10baseT/Full
                              100BaseT /半个100BaseT /全双工
                              1000BaseT /全速
       支持的暂停帧使用:对称
       支持自动协商:是
       通告的链路模式: 10BaseT /半10baseT/全
                              100BaseT /半个100BaseT /全双工
                              1000BaseT /全速
       通告的暂停帧使用:对称
       广播自协商:是
       链接伙伴通告的链接模式: 10BaseT /半10baseT/全
                                           100BaseT /半个100BaseT /全双工
                                           1000BaseT /全速
       链接伙伴通告的暂停帧使用:对称
       连接方通告的自动协商:是
       速度:1000Mb/s
       双工:全双工
       端口:MII
       PHYAD:0
       收发器:外部
       自协商:开
       支持唤醒:g
       唤醒:D
       检测到链接:是


    在更短的链路时间内也会观察到同样的情况。

    此致、
    那曼

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

    您好 Justin、

    您可以建议一些其他调试点吗?

    此致、
    Naman Thaker

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

    您好、Naman、

    在速度优化完成后链接 PHY 时、您能否提供寄存器0x0000-0x001F 的寄存器信息? 您能否确认100m 直向电缆是连接到 PHY 通道 A 和 B 的4线电缆?

    当4线电缆连接到 MDI 时、不应在1G 模式下链接 PHY、我希望寄存器信息能够显示所发生的情况。  

    此致、
    Justin  

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

    您好、Naman、

    您是否还可以探测 RX_CLK 引脚以确定与 MAC 接口通信的速度?

    此致、
    Justin  

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

    您好 Justin、

    以下是速度优化后链接 PHY 时的寄存器信息:

    REG=0x0、VAL=0x1140                                                             
    REG=0x1、VAL=0x796d                                                             
    REG=0x2、VAL=0x2000                                                             
    REG=0x3、VAL=0xa231                                                             
    REG=0x4、VAL=0x05e1                                                             
    REG=0x5、VAL=0xc5e1                                                             
    REG=0x6、VAL=0x006d                                                             
    REG=0x7、VAL=0x2001                                                             
    REG=0x8、VAL=0x49F1                                                             
    REG=0x9、VAL=0x0200                                                             
    REG=0xA、VAL=0x0800                                                             
    REG=0xb、VAL=0000                                                               
    REG=0xc、VAL=0000                                                               
    REG=0xd、VAL=0x401f                                                             
    REG=0xe、VAL=0x0077                                                             
    REG=0xF、VAL=0x3000                                                             
    REG=0x10、VAL=0x5048                                                            
    REG=0x11、VAL=0x6f02                                                            
    REG=0x12、VAL=0000                                                              
    REG=0x13、VAL=0x0004                                                            
    REG=0x14、VAL=0x2fc7                                                            
    REG=0x15、VAL=0000                                                              
    REG=0x16、VAL=0000                                                              
    REG=0x17、VAL=0x0040                                                            
    REG=0x18、VAL=0x6150                                                            
    REG=0x19、VAL=0x4444                                                            
    REG=0x1A、VAL=0x0002                                                            
    REG=0x1b、VAL=0000                                                              
    REG=0x1c、VAL=0000                                                              
    REG=0x1d、VAL=0000                                                              
    REG=0x1E、VAL=0x0002                                                            
    REG=0x1f、VAL=0000

    是的、在100M 直向电缆中、总共连接了4个通道的 Tx-Rx、它来自通道 A (+A/-A)和通道 B (+B/-B)对。

    RX_CLK 的测量值为25MHz:

    此致、

    那曼

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

    您好、Naman、

    PHY 显示它在100Mbps 模式下链接。 寄存器0x0011[15:14]= 01、表示已建立100Mbps 链路。  

    因此、PHY 链路速度与 ethtool 报告的速度之间似乎存在断开连接。 您能否提供有关如何使用 ethtool 的更多信息? 您是否使用 TI 提供的 DP83867 Linux 驱动程序?

    此致、
    Justin  

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

    您好 Justin、

    我正在使用开源 Linux 内核 v4.14.98中提供的 DP83867驱动程序。 此驱动程序可在适用于 IMX8M Mini EVK 板的 Android Pie (9.0.0)源中找到。
    请参阅以下随附的驱动程序、该驱动程序可随时从我们的 Android Linux 内核中获得:
    e2e.ti.com/.../dp83867.c


    我们使用的是开源 Ethtool、这是一种用于显示和修改网络接口控制器及其设备驱动程序的标准实用程序。
    Ethtool (v4.17)已针对 Andoird(Andoird)体系结构进行了交叉编译。
    https://mirrors.edge.kernel.org/pub/software/network/ethtool/

    当我们运行 Ethtool 时、如下所示显示了我之前共享的各种参数。
    # ethtool eth0

    这里、eth0是我们器件中使用的以太网接口。

    我还在这里附上在不同情况下获得的寄存器设置和 Ethtool 输出。

    e2e.ti.com/.../register_5F00_settings_5F00_ethtool_5F00_output.txt


    此致、
    那曼

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

    您好、Naman、

    我将与我们的驱动程序专家一起查看 Linux 驱动程序、以评估导致 ethtool 和 PHY 寄存器之间不匹配的原因。 请给我2-3天的反馈。

    此致、
    Justin  

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

    您好、Naman、

    有一个上游驱动器在驱动器中启用了速度优化功能。 您可以使用此驱动程序在以下链接中实施或回送修补程序:

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/net/phy/dp83867.c?id=cd26d72d4d43175cec8c10bed4df7f21ac5316b3

    此致、
    Justin  

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

    您好 Justin、

    您能否在最后测试旧驱动程序并尝试重现问题、然后检查新驱动程序是否解决了问题?
    请注意、我们的问题并非针对每台路由器、而是针对特定路由器、如我们的 EX3000。

    遗憾的是、现在我们没有时间在系统中反向移植补丁/驱动程序、因为我们非常接近生产。 明年、我们计划将我们的版本更新为最新版本、在该版本中、我们认为此问题可以得到解决。
    您能否检查并确认新驱动程序是否正常工作? 如果确实如此、我们将切换到新内核本身。

    此致、
    那曼

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

    您好、Naman、

    我无法检查您所引用的特定路由器上的驱动程序。 我无法使用现成的开关、可能需要3-4周才能测试您请求的设置。

    此致、
    Justin  

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

    您好 Justin、

    您能否向我们分享两个评估套件、一个评估套件具有当前内核 V4.14、我们在其中观察问题、另一个评估套件具有用于速度优化的更新驱动程序的新内核? 然后、我们可以在此处测试它们、并检查新驱动程序是否正常工作。

    此致、
    那曼

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

    您好、Naman、

    我们的 DP83867 EVM 未附带在 EVM 中实现的 Linux 驱动程序、我们提供 MAC 连接引脚和 MDC/MDIO 访问来评估 PHY。 我不认为可以将加载了不同内核的 EVM 发送到其他 EVM。  

    我已经向我们的驱动程序开发人员确认上游驱动程序工作正常、并且正在现有应用中使用。

    具体而言、需要实施 READ_STATUS 例程、才能从 PHY_STATUS 寄存器正确读取速度和双工。 我在最新的 DP83867驱动程序中重点介绍了它:

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/phy/dp83867.c?h=v5.10-rc7#n313

    此致、
    Justin