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.

[参考译文] AM6442:以太网有时不传输 icssg-prueth、Marvell 88E1510 PHY

Guru**** 2558250 points
Other Parts Discussed in Thread: AM6442

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1567488/am6442-ethernet-sometimes-not-transmitting-icssg-prueth-marvell-88e1510-phy

器件型号:AM6442
主题: DP83869 中讨论的其他器件

工具/软件:

有时、重新启动后、系统会进入以太网不传输任何数据包的模式。

大约每重新引导 500 次就会发生这种情况。

我们使用:
phyCORE-AM64x 模块
TI SDK 版本:10.01.10
Linux 内核版本:6.12.43
驱动程序是来自上游 Linux 内核而不进行更改的 icssg-prueth。
在使用  Marvell 88E1510 PHY 的 icssg 以太网上发现问题。

这是“dmesg|grep mdio“的输出:

[ 2.267948] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
[ 2.301883] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
[ 2.331776] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[ 2.365887] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[ 2.416637] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
[ 2.449883] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
[ 2.477761] davinci_mdio 300b2400.mdio: phy[0]: device 300b2400.mdio:00, driver Marvell 88E1510
[ 2.477774] davinci_mdio 300b2400.mdio: phy[1]: device 300b2400.mdio:01, driver Marvell 88E1510
[ 2.480584] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[ 2.513883] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[ 2.527707] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83867
[ 37.808149] Marvell 88E1510 300b2400.mdio:01: attached PHY driver (mii_bus:phy_addr=300b240
0.mdio:01, irq=POLL)
[ 37.921228] Marvell 88E1510 300b2400.mdio:00: attached PHY driver (mii_bus:phy_addr=300b240
0.mdio:00, irq=POLL)
[ 39.192357] am65-cpsw-nuss 8000000.ethernet eth2: PHY [8000f00.mdio:01] driver [TI DP83867]
(irq=461)

问题:

当我尝试 ping 另一个设备时、ARP 请求会发送到以太网接口、它会在 tcpdump 中看到、但它不会到达另一台计算机。

当我从另一台计算机 ping AM6442 器件时、ping 请求到达 am6442 上、并以 ICMP 应答(它们都在 am6442 上运行的 tcpdump 中显示)、但响应不会到达另一台计算机。

简而言之、接收似乎有效、但传输不起作用。

我不知道除了重新启动之外,还有什么方法可以从这种状态中恢复。

以下是 IP 链接统计信息:
4: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000
link/ether f0:bd:2e:ff:00:a2 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
55314 613 0 0 0 613
RX errors: length crc frame fifo overrun
0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
87790 942 0 1 0 0

这些是 ethtool -S 统计数据:
NIC statistics:
rx_broadcast_frames: 0
rx_mii_error_frames: 0
rx_odd_nibble_frames: 0
rx_max_size_error_frames: 0
rx_min_size_error_frames: 171
rx_class0_hits: 798
rx_class1_hits: 0
rx_class2_hits: 0
rx_class3_hits: 0
rx_class4_hits: 0
rx_class5_hits: 0
rx_class6_hits: 0
rx_class7_hits: 0
rx_class8_hits: 798
rx_class9_hits: 798
rx_class10_hits: 0
rx_class11_hits: 0
rx_class12_hits: 0
rx_class13_hits: 0
rx_class14_hits: 0
rx_class15_hits: 0
rx_smd_frags: 0
rx_tx_total_bytes: 154029
tx_broadcast_frames: 6
tx_multicast_frames: 100
tx_odd_nibble_frames: 0
tx_underflow_errors: 0
tx_max_size_error_frames: 0
tx_min_size_error_frames: 0

此问题与 另一个问题有关。 设置有时会触发此 TX 问题或另一个问题中所述的 RX 问题:
AM6442:以太网无法接收 IPv6 相邻请求数据包(平均 50 次重新引导中有 1 次重新引导)-处理器论坛 — 处理器- TI E2E 支持论坛

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

    您好 Dimitrios、  

    您是否有机会查看 https://www.ti.com/lit/an/spradj8/spradj8.pdf 中的以太网接口调试指南。 具体而言、描述“跟踪数据包“调试方法的章节将分析数据包从以太网 MAC 传输到以太网 PHY、在线路上传输、通过链路伙伴上的以太网 PHY、以及在链路伙伴的以太网 MAC 上接收的路径上的错误位置。  

    下面是 IP link 统计信息:
    4: eth0: [/报价]

    只是为了澄清一下、通常 eth0 是 AM64x TI EVM 上的 CPSW 以太网。 例如、您是否打算检查 eth2 的统计数据? 您使用哪个接口来测试以太网连接?

    -道林

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

    尊敬的 Daolin:

    我们将  icssg-prueth 与 Marvell 88E1510 PHY 搭配使用。 在本例中、eth0 不是 CPSW。 我们使用 udev 规则重命名接口。

    我已经查看了“Follow-the-packet"方法“方法、我看到 icssg-prueth 接收了 ping 数据包、am6442 器件使用 ICMP ping 应答进行回复、我可以在链路层统计信息中看到。 但是、对等计算机未收到答复。

    一个可能至关重要的提示是、对等计算机在我大约一分钟的 ping 会话期间记录了 40 个 RX 数据包错误。 因此、大约一半的发送数据包导致接收器上出现 RX 错误。 当我不执行 ping 时、RX 错误计数没有变化。 因此 PHY 层似乎存在一个基本问题。 如何调试 PHY 层问题?

    此致、

    Dimitrios Siganos

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

    尊敬的 Dimitrios:

    因此 PHY 层似乎存在一个基本问题。 如何调试 PHY 层问题?

    请参阅调试指南 (https://www.ti.com/lit/an/spradj8/spradj8.pdf) 中的第 6 节“以太网 PHY 分析“。 尽管本调试指南指定了 DP83869 TI 以太网 PHY 并且您正在使用 Marvell PHY、但我认为这些技巧仍然应该是研究潜在 PHY 问题的起点。 我还建议联系 Marvell 以获取 PHY 特定信息、例如从 PHY 读取哪些寄存器以检查 RX 错误等

    如果您有后续问题、请告知我们。

    -道林