I’m doing some stress testing on the W5300 using TCP mode, and I’m seeing great throughput when I try to send as much data as possible. The problem is that when I push the maximum data and then stop sending data, the last data in the FIFO is not being sent.
I can read the TX_FSR registers and see that the data is in the FIFO because the available space is the full amount that should be allocated minus the size of the data that should have been sent.
If I start sending more data, the “stuck” data goes out as it should before the new data starts going out, but whenever I stop sending data to the TX FIFO, the last bit is not being sent out over the network. It seems like it’s waiting for me to shove more data in.
This problem only happens during a stress test. If I send data slowly and never stress the buffering, all of the data is sent out as expected.
The Sn_SSR is reading 0x17 (SOCK_ESTABLISHED) as expected. I’ll do some more searching and see if I notice any difference in some other register or status.
Any ideas? Is there a setting I’m missing somewhere that will force the W5300 to drain the TX FIFOs when they have any data in them?