Tool/software:
Hi,
We are contacting you for advice regarding network communication control using the TI AM3352 and Microchip KSZ9131RNX.
We are currently developing Gigabit Ethernet functionality, and while testing the KSZ9131RNX controlled by AM3352, we have observed an issue where TCP/IP communication from the evaluation board to a PC sometimes fails to deliver the expected data.
[Communication Type]
TCP/IP
[Observed Issue]
When sending data from the evaluation board to the PC via TCP/IP, the FIN packet appears in the WireShark capture, but it does not reach the application on the PC. The recv()
function remains in a waiting state.
[Details]
We created a simple application in VC++ on the PC to communicate with the evaluation board via sockets. The flow is as follows:
-
TCP socket connects successfully (SYN and ACK are exchanged)
-
1024 bytes of data from the evaluation board are received normally
-
The evaluation board sends a FIN packet → not received by the PC app (
recv()
remains waiting) -
WireShark shows the [FIN,ACK] packet with Len=0 is indeed sent
-
Resetting the board causes an RST packet to be sent, and the
recv()
function then exits
On the board side, we observed that packets smaller than 60 bytes are dropped, so we manually add 0x00 padding to such packets (like ARP and RST) to meet the Ethernet minimum frame size.
[Test Performed]
When we added both padding data and updated the IP header’s Total Length field accordingly, the PC could successfully receive the FIN packet.
In this case, WireShark showed the [FIN,ACK] packet as Len=6 (matching the padding), and the return value of recv()
was 0.
However, if we added only the padding without modifying the IP header, WireShark still shows Len=0, and the PC does not receive the packet.
[Question]
Manually adding data to a FIN packet results in an unnatural state where a FIN packet carries payload data.
Is there any way for the AM3352 or the KSZ9131 to automatically add padding when sending Ethernet frames smaller than 60 bytes, so that such low-size packets are properly transmitted without needing to modify the IP header in software?
We would appreciate your guidance.
Sincerely,
Conor