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.

[参考译文] TMDSCNCD28388D:[C2000Ware v6.00.00.00 ]以太网/lwIP:在 UDP 负载下停止 Rx–ui32RXPbufAllocFailCount 增加

Guru**** 2576215 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1572637/tmdscncd28388d-c2000ware-v6-00-00-00-ethernet-lwip-rx-stops-under-udp-load-ui32rxpbufallocfailcount-increases

器件型号:TMDSCNCD28388D
主题:C2000WARE 中讨论的其他器件

工具/软件:

说明:

您好 TI 支持团队:

我使用的是最新版本 C2000Ware v6.00.00.00 应用 SDK。

设置:

  • 示例:enet_lwip_udp.c在 CM 内核上

  • 配套器件:ethernet_ipc_ex1_basic_c28x1.c在 C28x1 上

  • 功能 g_sDriverStats

问题:
当用高 UDP 流量对系统施加压力时ui32RXPbufAllocFailCount、会增加。 一旦发生这种情况、RX 路径将完全停止工作、在完全复位之前、器件不再接收 UDP 数据包。

调试结果:

  • lwIPPBUF_POOL 将填满、无法恢复。

  • 耗尽后、所有需要新 pbufs 的函数都会停止响应。

  • 驱动程序代码应该循环或释放缓冲区、但不会、从而导致永久停止。

复制:

  • 运行常用 SDK 示例。

  • 用一个简单的脚本填充 UDP(例如:带有udp_flood_1.py 40 字节有效负载的 Python、4 个线程、10 秒持续时间)。

  • 观察g_sDriverStats.ui32RXPbufAllocFailCount上升。 RX 在耗尽后停止。

期望:
以太网/lwIP 集成应平稳地处理缓冲器耗尽:

  • 始终使用新鲜的 pbuf 重新设置描述符。

  • 确保释放的 pbufs 清除其pAppData指针。

  • 切勿在netif->input()返回成功后释放 buf(lwIP 拥有它)。

  • 通过将pbuf_alloc大小与匹配来避免PBUF_POOL_BUFSIZE使用 pbuf 链。

请求:

  • 这是 C2000Ware v6.00.00.00 中的已知问题吗?

  • 您能否提供指导或官方补丁来修复缓冲区管理、以便 RX 不会在负载下永久停止?

附件:

  • g_sDriverStats显示计数器增加的屏幕截图。

  • 用于测试的 UDP 泛洪脚本udp_flood_1.py ()。




您可以运行测试 >python3 udp_flood_1.py --dst192.168.0.4--port 28000--payload-size 40--pps 0--duration 10--threads 4--bind-ip 192.168.0.8
e2e.ti.com/.../udp_5F00_flood_5F00_1.zip

谢谢您、
Pablo

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

    您好、  

    此问题正在分析中、需要一些时间才能解决。 解决方案计划在 12 月之前随 SDK 一起发布。