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.

[参考译文] AM3352:AM3352 + NDK 中的以太网帧填充行为

Guru**** 2445440 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1548401/am3352-ethernet-frame-padding-behavior-in-am3352-ndk

器件型号:AM3352


工具/软件:

您好、

目前、我们正在使用 TI-RTOS 和 NDK(基于 SDK 06.03.00.106)评估 AM3352、并确认有关以太网帧填充的预期行为。

【背景】

我们在 TI-RTOS + NDK (NDK 3.x) 下使用 CPSW 以太网驱动程序。 在我们的 TCP 通信测试中、当发送没有有效载荷的 FIN 数据包时、以太网帧长度小于所需的最小 60 字节。 当[FIN、ACK]数据包出现在 Wireshark 上时、使用的 PC 端应用程序recv()不会接收该数据包、这可能是因为帧长度不足而丢弃帧。

为了对此进行调查、我们检查了 SDK 06.03.00.106 源代码、尤其是eth_cpsw.c以下路径中的文件:

pdk_am335x_1_0_xx/packages/ti/transport/ndk/nimu/src/v7/eth_cpsw.c

EMACSend()或类似的 Tx 例程中、我们没有找到任何确保以太网帧填充的逻辑(例如,在 DMA 提交之前用零填充<60 字节的帧)。

【问题】

  1. 在 TI-RTOS + NDK (SDK 06.03.00.106) 下、CPSW 驱动程序或 NDK 栈内是否有任何自动机制为短于 60 字节的帧添加以太网填充 (0x00)?

  2. 如果不由应用程序或驱动程序手动处理、CPSW MAC 是否会按原样发送短帧而没有任何填充?

  3. 是否可以手动修改 CPSW 驱动程序以在时插入填充字节pktLen < 60(例如,将以下逻辑插入到中)EMACSend()

if (pktLen < 60) { memset(pPkt + pktLen, 0x00, 60 - pktLen); pktLen = 60; }

希望澄清预期的驱动程序行为、以及 TI 是否建议或支持在此环境中手动添加此类填充逻辑。

提前感谢您的支持。

此致、
Conor