I’ve recently finished developing a STM32F zero-copy driver port and have been doing some performance tests but are hitting an issue with TCP transfers. I’ve been using the iperf (tested ver 2 & 3) for first loop-back bandwidth tests. In UDP loop-back tests it comfortably achieves 100mb/s full duplex with zero packet loss running for minutes on end.
I’m having problems with TCP transfers though. In basic text (eg CLI) TCP connections it all works fine, but when I try an iperf loop-back Wireshark shows it connects ok, but after several PSH transfers it stops. After a few seconds iperf (or more likely Windows’ IP stack) retries again but after a few SYN & RST ping-pongs it stops again for a few seconds before the next retry. Given the lack of packet loss with UDP transfers it suggests a TCP handshaking sensitivity.
That above explanation may not be enough for you to go by, but would it be possible for you to test a very simple iperf TCP loopback on your known working ports? I ask mainly because it’s actually quite a good standard example that you could use.
Also, if people are interested in the driver port I could package it up and post it.
FYI, on a side note, a heads up on a few tiny website API documentation discrepancies:
- FreeRTOS_createsocketset is now FreeRTOS_CreateSocketSet in the code
- FreeRTOS_shutdown links to “FreeRTOS_revc()” (sic) typo. The href itself is correct though.
- The code example in FreeRTOS_recvfrom doesn’t pass pxSourceAddressLength as a pointer.
Thanks for the support guys.