主题中讨论的其他器件:SK-AM62B
工具/软件:
症状
在正常运行期间、以太网接口突然停止发送或接收数据包。 接口似乎已打开、可检测到以太网状态的任何变化。 在接口被关闭然后重新初始化之前、以太网不会再次开始工作。 如果没有非常具体的监控和解决方法、则在手动重置之前、产品将无法使用。
问题
CPSW 中的 ALE 表已损坏且 VLAN 配置已删除。 这可以 通过运行“switch-config -d“并观察表中的第一个条目是否已从 vlan 类型更改为 mcast 类型来验证。 VLAN 被覆盖、因为函数 cpsw_ale_match_free() 错误地将索引 0 返回为空。
如果出现错误:
- cpsw_ale_match_free() 调用 cpsw_ale_read()
-
cpsw_ale_read () 用索引 0 执行对 ale_table_control 的写入
- cpsw_ale_read() 从 ale_table 中读取字节作为全零
如果第二次调用 cpsw_ale_read()、则返回 ale_table 元素 0 的实际值。
复制
我们使用产品硬件和 SK-AM62B 开发板、在版本 9 和 11 的 SDK 上进行了复制。
当存在两个元素时、此问题会可靠地发生:
- 运行 iperf3 使以太网流量持续
- 重复从在没有主设备的情况下运行的 ptp4l 对 ALE 所做的更改
在 SK-AM62B 上进行复制的步骤:
在任何 Linux 服务器上:
- 启动 ptp4l 作为祖母:
- sudo ptp4l -i -m -l 6 --domainNumber=99
- 启动 iperf3 服务器:
- iperf3 -s
在 EVM 上:
- 显示 CPSW ALE 表的用户命令:
- switch-config -d
- 注意条目#0 如下所示:
- 0 :类型:vlan、vid = 0、untag_FORCE = 0x7、reg_mcast = 0x0、unreg_mcast = 0x0、 Member_list = 0x7
- 验证 EVM 是否看到来自服务器的 PTP 流量:
- tcpdump -n dst 端口 319 或 dst 端口 320
- 在不同的域号上启动 ptp4l 以导致 ptp4l 定期打开/关闭套接字~8s:
- ptp4l -E –4 -H -i eth0 -s -l 6 -q -p /dev/ptp0 -m
- 启动 iperf3 客户端:
- iperf3 -c -t 5 -t 60000 -u --BIDIR -b 400m
有时、iperf3 将在 EVM 上闭合、当链路建立时以太网将断开。 再次使用“switch-config -d“命令并注意条目#0 现在是“type:MCAST“。
预期结果
我们需要在驱动程序中采取某种变通办法来防止此故障。 我们还需要一名了解硬件设计的人员来建议是否从同一根本原因导致其他失效模式。