I am doing network performance tests with the W5100 connected to a FPGA. I have optimised the read, write and sequenctial cycles periods to their minimum specified (80ns, 70ns and 30ns respectively). I am able to reach approximately 67Mbps sustained using a single socket (in contrast to the specified 25Mbps).
However it happends regulary that the PC receiving the data from the W5100 has a “TCP ZeroWindow” (Win=0). When this occurs the W5100 keeps on transmitting data to the PC well outside the W5100 internal 16kbyte buffers. I have captured the behaviour with Wireshark.
Please find attached the following files:
- A screenshot of the point where the Windows Size of the PC becomes 0 (2016-02-29 11_45_32-i2chip_00002_20160229111116.png)
- Wireshark capture (PCAP) of the link behaviour as described (W5100_Transmittion_Wireshark_Capture.zip)
As can be seen in the Wireshark capture the W5100 (192.168.3.100) transmits data to the PC (192.168.3.1). Once the Window Size of the PC reaches ‘0’ it remains as such. I would expect that the W5100 stops transmission until the ACK from the PC is received and the Windows Size becomes >0. However the W5100 keeps transmitting TCP packets continuously and so now and then performs a re-transmission of the TCP packet as requested (Seq=20574722). At this point the W5100 and PC are out of sequence which does not resolve anymore.
Has anyone experienced this and if yes, am I doing something wrong?
This seems to be an “issue” at TCP level for which I have no control.
All help welcome.
W5100_Transmittion_Wireshark_Capture.zip (4.74 MB)