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.

[参考译文] TMS320C6678:以太网 Rx 影响3端口 CPSW 上的 Tx

Guru**** 2551110 points
Other Parts Discussed in Thread: TMS320C6678

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/606312/tms320c6678-ethernet-rx-affecting-tx-on-3-ports-cpsw

器件型号:TMS320C6678

您好!

我正在使用 TMS320C6678 EVM。 我要将两个板连接到1Gbps 以太网交换机、该交换机也连接到我们的内部网络。 电路板之间相互通信、每块电路板的通信速率为~40Mbps。

当交换机连接到内部网络时、我们会遇到 Tx 抖动问题。 未连接时、Tx 抖动问题似乎消失了。

我们的配置包括以下内容:ALE in BYPASS (我们还尝试使用 DSP MAC 地址配置单播条目)、Rx 数据包通过 PA 直到应用程序接收(通过中断)、Tx 数据包使用定向数据包(到端口2)进行传输。

PA 被配置为允许具有与 DSP MAC/IP 地址相应匹配的目的 MAC/IP 地址的传入数据包。

交换机是否连接到内部网络的主要区别是更多多播数据包到达 DSP。 在交换机统计数据(统计数据 A 和 B)中、我们看到所有来自端口2的数据包都传输到端口0 (统计数据 B RxGoodFrames==统计数据 A TxGoodFrames)。 根据我的理解、这意味着所有数据包都传输到 CPPI 和 PA (并由 PA - L2、L3和 L4加密进行过滤)、并且出于未知原因影响数据包的传输、即使数据包是使用定向数据包进行传输的。

Rx 如何影响 Tx?

我期待您的快速响应、因为此问题对我们至关重要。

提前感谢、

Leon。

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

    我已将此事转发给以太网专家。 他们的反馈应发布在此处。

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

    您能提供一些详细信息吗? 这是 TCP 还是 UDP? 您需要什么软件? Processor SDK RTOS 或 MCSDK、哪个版本? 您的代码是基于使用 PA EMAC 示例的 NDK? 在40Mbps 时、Tx 的数据包大小和数据包间隔是多少? 如何控制数据包 Tx 间隔? 当您从连接到内部网络的交换机接收多播数据包时、Tx 抖动有多大? 您说什么是"定向数据包"?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Eric:
    我们使用自己的软件,该软件基于 MCSDK 2.01.02.06版本中的 EMAC 多核示例。 我们不使用 NDK。 我们发出并接收32个数据包、每个数据包为400字节、8个内核上的每20ms 发送一次。 我们通过内部调度程序控制 Tx 间隔。 “定向数据包”是指使用主机数据包描述符发送的数据包,PS 标志设置为‘2’。 到目前为止、我们的测量显示抖动高达30ms。
    我只想强调一下,我们目前正处于一个有效解决方案的阶段(除了我所讨论的问题)。 我们不处于学习/实验/启动阶段。 我们能够使用队列648发送数据包,描述符 PS 标记设置为‘2’(以绕过 PA 和 ALE),从所有内核上使用 PA 和 Rx 流接收数据包,并执行我们的处理。 数据在所有内核上正确地发送到所有数据包并从这些数据包中接收。 我们的问题是抖动、这对我们来说至关重要、似乎受到传入网络流量的影响。
    困扰我们的另一个问题是、我们每次传输数据包时都必须调用 CyclDelay (10000)。 如果我们尝试移除此呼叫、甚至将其更改为 CycleDelay (1000)、则会遇到 Tx 数据包丢失。 代码中的注释表明这是 PA 处理数据包所需的时间。 为什么是这样? 正如我看到的、使用队列并将数据包传递到 PA 的整个过程就是减轻 CPU 的负载并允许其执行其他操作。 为什么 CPU 需要等待?
    我们注意到、在此延迟期间(10000个周期)、任何内核上都接收到数据包、因此没有硬件中断。 看起来、将描述符推送到648 Tx 队列会在延迟期间防止/干扰向 DSP 内核生成的硬件中断。

    请您尽力帮助我们了解导致上述问题的原因。 正如我以前所说的,这对我们来说是最重要的。

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

    您好!

    您可以参阅。  很久以前我尝试过不同的 cycleDelay(),使用1000肯定会导致数据包丢失。 您可以尝试使用5000并向上或向下调节。

    关于在20ms 数据包间隔下高达30ms 的抖动、我过去曾在复印网络中做过工作、其中包括交换机、PC、EVM、当 EVM 以10-20us 的级别发送数据包时、它接收到许多多播数据包、我没有看到任何抖动问题。 我仍然有一些屏幕截图用于显示所附的数据包流。 如果抖动很大、我的 TX 数据包将会出现故障、RX 端将会中断。

    此致、Eric

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

    尊敬的 Eric:

    我认为您不理解我的问题。 我特别要求说明拖延的原因。 此延迟错过了数据包加速器的整个“加速”。 在问题得到解决之前建议不同的延迟值不是一个解决方案。 请解释延迟的原因是什么、并尽可能具体。

    关于 Tx 抖动问题,您提到了“过去”的工作。 也许您使用了不同版本的器件和 PDK。 此外、问题可能出现在我们的规范中、我们发布了此帖子、以寻求帮助解决问题。 它过去对您有用这一事实对解决我们的问题没有什么帮助。

    请帮助我们解决这些问题。  

    提前感谢、

    Leon

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

    注释为//*的代码为 PA 提供了一些时间来处理信息包*/。 我发现延迟无法在代码中消除。 否则、它将在 Tx 方向上面临数据包丢失。

    在 pdk_C6678_1_2_6\packages/ti\transport \ndk\Nimu\src\Nimu.c 下、也有 NIMU 驱动程序与 NDK 堆栈交互 它有一个 EmacSend (NETIF_DEVICE_PTR_NET_DEVICE_DEVICE_PBM_Handle hPKT),可以在没有这个周期延迟的情况下将数据包发送出去()。 您可以看一看。

    对于抖动问题、当时我的测试是 MCSDK 2.1.2.5/PDK1.1.2.5、它与 MCSDK 2.1.2.6相同。 您能否看到仅一个内核运行时的抖动问题? 如果您在发送数据包的每个 QMSS_QPUSH()之前采用 TSCL 时间戳,您是否会在发送数据包时看到抖动? 或者,您可以确认名为 QMSS_QPUSH()的代码在固定间隔内,但在线路上的数据包抖动? 运行 Wireshark 的 PC 是否负载过大、可能会导致问题?

    此致、Eric