主题: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 数据包。
调试结果:
-
lwIP
PBUF_POOL将填满、无法恢复。 -
耗尽后、所有需要新 pbufs 的函数都会停止响应。
-
驱动程序代码应该循环或释放缓冲区、但不会、从而导致永久停止。
复制:
-
运行常用 SDK 示例。
-
用一个简单的脚本填充 UDP(例如:带有
udp_flood_1.py40 字节有效负载的 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