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.

[参考译文] AM620-Q1:AM62x LP SK:严重 TX 数据包丢失 (40%)&SJA1105 + am65-cpsw-nuss 时的 DSA 错误

Guru**** 2694555 points

Other Parts Discussed in Thread: AM623

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1593069/am620-q1-am62x-lp-sk-severe-tx-packet-loss-40-dsa-errors-with-sja1105-am65-cpsw-nuss

器件型号: AM620-Q1
主题: AM623 中讨论的其他器件

TI 团队大家好、

我们观察到、基于 AM62x LP SK 的器件使用通过 DSA 连接到外部 NXP SJA1105 交换机的 am65-cpsw-Nuss 驱动器时、网络性能严重不对称。

系统上下文:

  • 视图  Texas Instruments AM62x LP SK
  • 凭据  AM62x
  • 温度 am65-cpsw-nuss.
  • 内核–6.13.9-脏
  • 数量 NXP SJA1105  
  • 消耗量  双 MAC 模式(软件桥接)。  注意我们当前的文件系统缺少 devlink 工具、因此我们无法配置硬件交换机卸载并依赖于内核软件桥接。
  • 拓扑  eth0 DSA 主器件。  lan1/lan2 是从接口。 软件桥br0接器 () 桥接器 lan1、 lan2和上行链路 eth1

问题:
入口(PC ->器件)以线速工作时、出口(器件-> PC)会严重损坏。

测试结果 (iperf3):

  • 转发(RX - PC 到器件): ~100Mbps TCP/UDP(0%损耗)。 完美的作品。
  • 反向 (TX — 器件到 PC):
    • TCP  ~0.5Mbps(重传,停转)。
    • UDP  ~40%数据包丢失恒定、 即使在 1Mbps 带宽下也是如此。

日志和错误:
在 TX 测试期间、内核日志中充满来自 SJA1105 驱动程序的 DSA 错误:

sja1105 spi2.0:DSA 管道组播过滤器中是否存在 180c200000e 的预期元帧?

我们还观察到、  默认情况下、设备发送的流量为 VLAN 0(优先级标签)。  

到目前为止的分析:

  1. CPU 负载: 可忽略不计。 这不是 CPU 瓶颈。
  2. 物理链路: 接口计数器上没有 PHY 错误或故障。
  3. DSA 交互: 错误表明 CPSW NUSS 驱动程序可能正在剥离标签或错误处理 TX 路径上的 DSA 开销、从而导致交换机拒绝帧或内核错误解释环回流量。
  4. 桥接配置: 我们使用 vlan_filtering=1 桥接器处理 VLAN 0 标记、但数据包丢失仍然存在。

问题:

  1.  am65-cpsw-nuss 在 AM62x 上充当 SJA1105 的 DSA 主器件时、驱动器中是否存在已知的 TX 路径问题?
  2. 由于我们不得不使用软件桥接 (no) devlink、DSA 主站eth0 () 是否需要特定的配置来防止它干扰桥接逻辑?
  3.  在 AM62x 的上下文中、“expected meta frame“错误意味着什么?CPSW 硬件是否在驱动程序看到 DSA 标签之前将其滤除?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vikranth、  

    感谢您分享有关 TX 数据包丢失问题的详细信息。 我可否先确认以下详情?

    1.您使用的是 TI Linux SDK 吗? 如果是、哪个版本? 我看到您使用的内核版本是 6.13.x、与我们提供的任何 TI SDK 无关。

    2.此问题目前正在 TI AM62x EVM 或使用 AM62x SoC 的定制电路板上进行测试?

    ] 在 AM62x 的上下文中、“预期的元帧“错误意味着什么 — CPSW 硬件是否在驱动程序看到 DSA 标签之前将其滤除?

    由于此错误消息来自 SJA1105 驱动程序、NXP SJA1105 驱动程序是否提供了有关此消息显示原因的详细信息? 掌握这些信息将有助于我们了解 CPSW 是否存在与此相关的任何行为。  

    您是否还可以共享测试的引导日志?

     am65-cpsw-nuss 在 AM62x 上充当 SJA1105 的 DSA 主器件时、驱动程序中是否存在已知的 TX 路径问题?

    一般而言、虽然我们尚未专门测试用作外部连接交换机 DSA 主设备的 CPSW 接口(通常是因为我们的 EVM 目前没有与集成外部交换机兼容的硬件)、但有些客户已经能够集成外部交换机(成功程度各不相同)。  我不记得是否我在过去看到的 TX 路径有任何特定问题、通常在让外部开关正确初始化方面问题似乎更多(通常是由于器件树配置不正确)。  

    采用 DSA 设置的外部交换机的客户实现示例(此示例有一些 VLAN 配置冲突):  答复:AM625:CPSW:与外部 DSA 交换机的标记存在额外的优先级标记冲突  

    由于我们被迫使用软件桥接 (no) devlink、DSA 主站 () 是否需要特定的配置eth0来防止它干扰桥接逻辑?

    我需要在内部对此进行检查、因为作为 DSA 主器件实现 CPSW 接口通常不是我们测试和验证的内容(由于 TI EVM 硬件限制)、但我将尝试在内部进行检查。

    -道林

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

    e2e.ti.com/.../boot_5F00_dmesg_5F00_log.txt


    TI 团队大家好、

    感谢您的详细答复。 根据您的问题和您分享的论坛主题、我们执行了广泛的隔离测试并分析了启动日志。

    以下是您的问题的答案以及我们关于根本原因的调查结果。

    1、行政详情
    SDK/内核:我们未使用标准 TI SDK。 我们正在运行基于上游 Linux 内核 6.13.9 的自定义构建。 我们知道这超出了标准 SDK 支持范围、但问题似乎与硬件/DTS 配置有关、而不是与内核版本的特性有关。
    硬件:这是基于 AM62x LP SK 参考的定制电路板设计。 SoC 是 AM623。
    拓扑更正:请注意我们之前的电子邮件中的更正:在此主板上、eth1 是 DSA Master(导管)、而不是 eth0。

    2.“预期的元帧“错误的根本原因:双重标记(主要问题)
    您正确地指出了“VLAN 配置冲突“线程。 我们已经确认这在我们的电路板上发生。

    机制:当接口启动时、am65-cpsw-nuss 驱动程序自动启用 vlan-Aware 模式(引导日志:8021q:将 VLAN 0 添加到 HW 过滤器)。
    冲突:在 VLAN_Aware 模式下、CPSW 硬件在 DSA 标签之前插入一个 VLAN 0 优先级标签。 这会移动帧结构、从 SJA1105 驱动程序中隐藏 DSA 标记、从而导致预期的元帧错误。
    验证:我们使用 devmem 手动清除 CPSW_CONTROL 寄存器 (0x08020004) 中的 VLAN_Aware 位。 这会立即停止 dmesg 中的错误。

    3.数据包丢失的根本原因:速度不匹配(次要问题)
    我们还发现了物理配置问题。

    不匹配:我们的 CPU 链路 (eth1) 为 100Mbps、但我们的交换机端口 (LAN1) 在设备树中限制为 10Mbps。 此 10:1 不匹配导致缓冲区溢出。
    测试:我们切换到 LAN2(配置为 100 Mbps)以排除此问题。 结果:即使在速度匹配的情况下、吞吐量仍然很差 (~0.2Mbps)。
    结论:虽然速度不匹配导致 LAN1 上的数据包丢失、但问题 2(双标记)是主要阻止程序。 寄存器破解可以阻止错误、但我们怀疑驱动程序需要一个干净的配置才能在此模式下正确处理流控制。

    我们的要求
    我们需要永久修复“双重标记“问题。
    是否有建议的方法(Device Tree 属性或 ethtool 命令)在 am65-cpsw-nuss 驱动程序中永久禁用 vlan-Aware 模式?


    请找到随附的完整引导日志boot_dmesg_log.txt ()。

    此致、
    Vikranth Datta

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

    尊敬的 Vikranth:

    感谢您清楚地解释您/您的团队发现的有关数据包丢失和预期的元帧问题的内容。  

    我的理解是、我在上次响应中链接的论坛主题中描述的问题应由以下 接受的上游 修补程序 https://lore.kernel.org/all/20250110125737.546184-1-alexander.sverdlin@siemens.com/解决 、以便在其中一个端口配置为 DSA 端口时关闭 VLAN 感知模式。 此补丁应该已经回传给最新的 SDK(使用 6.12 内核)。 我不确定您使用的 6.13.x 内核版本是否包含此补丁。 您能检查一下吗?

    -道林

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

    尊敬的 Daolin Qiu:  

    感谢您识别特定的上游补丁。

    我们检查了器件上运行的构建的内核源 (am65-cpsw-nuss.c)、并且补丁不存在。 这说明了为什么我们看到该问题。


    我们现在正在将修补程序 (am65-cpsw: vlan-Aware CPSW,如果!DSA) 反向移植到我们的内核。

    由于通过 devmem 手动清除 VLAN_Aware 位 (0x6004) 在我们的实时测试过程中解决了“预期的元帧“错误、因此我们确信此修补程序将提供永久修复。

    我会在测试完成后更新您。

    此致、
    Vikranth Datta

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

    尊敬的 Vikranth:  

    感谢您澄清您所使用的 6.13.x 内核所看到的内容。 请告诉我测试是如何进行的。

    -道林

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

    尊敬的 Daolin Qiu:

    我已经更新了用于提取补丁的内核、但数据包丢失问题仍然存在。 我们怀疑 NXP 交换机和 CPSW 之间的交互可能存在问题。

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

    尊敬的 Vikranth:

    我已经更新了用于提取修补程序的内核、但数据包丢失问题仍然存在。

    您目前正在使用哪个 Linux 内核版本?

    由于通过 devmem 手动清除 VLAN_Aware 位 (0x6004)、因此在我们的实时测试中解决了“预期的元帧“错误

    我的理解是、手动清除 VLAN_Aware 位的目的是禁用 VLAN 感知模式、并且您已验证此操作以前可以解决这些错误。  只要其中一个端口配置为 DSA 端口、该修补程序就应该禁用 VLAN 感知模式。 可能需要插入一些 printk 语句来诊断驱动程序是否检测到有 DSA 端口、以及驱动程序是否实际更改了寄存器以禁用 VLAN 感知模式。  

    例如:

    	/* VLAN aware CPSW mode is incompatible with some DSA tagging schemes.
    	 * Therefore disable VLAN_AWARE mode if any of the ports is a DSA Port.
    	 */
    	printk("DEBUG: 1\n");
    	if (netdev_uses_dsa(ndev)) {
    	    printk("DEBUG: 2\n");
    		reg = readl(common->cpsw_base + AM65_CPSW_REG_CTL);
    		printk("DEBUG: before write reg=%x\n", reg);
    		reg &= ~AM65_CPSW_CTL_VLAN_AWARE;
    		writel(reg, common->cpsw_base + AM65_CPSW_REG_CTL);
    		printk("DEBUG: after write reg=%x\n", reg);
    	}
     

    -道林