工具/软件:
您好、
我们正在使用 AM3352 处理器和 KSZ9131RNX PHY 开发千兆位以太网系统。 我们面临这样一个问题:从 AM3352 发送的 FIN 数据包在 Wireshark 中作为[FIN, ACK] Len=0帧被观察到recv()、但 Windows 应用程序无法使用标准函数接收到该数据包。
经过进一步调查、我们注意到、当传输的帧长度低于 60 字节时、除非手动填充 0x00 字节以满足最小 60 字节的要求、否则会丢弃该长度。 如果我们手动添加填充并更新 IP 报头总长度字段以包括填充, PC 会正确接收 FIN 数据包(尽管 recv () 返回 0 字节,这是预期的)。
但是、如果我们仅在尾部填充帧而不更新 IP 标头长度字段、PC 将无法识别 FIN 数据包。
根据 IEEE 802.3 标准、我们知道以太网 MAC 应自动填充小于 64 字节的帧。 我们也明白 PHY (KSZ9131RNX) 不会执行此填充。
为了确认我们的理解、请验证以下几点:
-
当不存在有效载荷(例如 FIN 数据包)时、AM3352 中的 CPSW(以太网 MAC)是否会自动填充以太网帧以满足 64 字节的最小值?
-
如果不是、AM335x 以太网驱动程序中是否有支持自动 MAC 电平填充的配置?
此致、
Conor