Tool/software:
Hi,
We are developing a Gigabit Ethernet system using the AM3352 processor and KSZ9131RNX PHY. We are facing an issue where a FIN packet sent from the AM3352 is observed in Wireshark as a [FIN, ACK] Len=0
frame, but it is not received by a Windows application using the standard recv()
function.
Upon further investigation, we noticed that when the transmitted frame length is under 60 bytes, it is dropped unless manually padded with 0x00 bytes to meet the 60-byte minimum. If we manually add padding and also update the IP header total length field to include the padding, the PC receives the FIN packet correctly (though recv() returns 0 bytes, which is expected).
However, if we only pad the frame at the tail without updating the IP header length field, the PC does not recognize the FIN packet.
Based on the IEEE 802.3 standard, we understand that Ethernet MAC should automatically pad frames smaller than 64 bytes. We also understand that the PHY (KSZ9131RNX) does not perform this padding.
To confirm our understanding, could you please verify the following points:
-
Does the CPSW (Ethernet MAC) in the AM3352 automatically pad Ethernet frames to meet the 64-byte minimum when no payload is present, such as for a FIN packet?
-
If not, is there a configuration in the AM335x Ethernet driver that enables automatic MAC-level padding?
Best regards,
Conor