TCP Zynq performance

Greetings a bigger project, which runs on a Zynq device I have converted to FreeRTOS from another rtos. Additionally I now have to add TCP connectivity. Therefore I’ve implemented and tried LwIP-141 as well as FreeRTOS+TCP. For the latter I used the newest Version (160919) with additions I found here in the forum (Zynqplustcpdriver2017731.7z). The LwIP stack comes with Xilinx demo-source and they offer an app-note to test the performance. I have to note that I’m looking for ultimate performance from device to host-PC (WIN64), That is, using the 1 gbps ethernet interface I would like to have nearly full-speed. In the app-note for Lwip Xilinx indicates 542 Mb/s for socket-mode and 949 Mb/s for RAW-mode. The first mode I was able to reproduce, the second not yet due to build-errors. Because I would obviously prefer the socket-mode I thougt to test FreeRTOS+TCP. First problem was to have a demo-project with iperf server/client for TCP. These are not contained in the demo, so I’ve written them by myself taking the LWip files as template. The result was 523 Mb/s for receive (server on device) and 620 Mb/s for transmit (client on device). Then I’ve tested Hein Tibosch’ iperftaskv10 and later iperftaskv30. The first using iperf2, the latter with iperf3. The result was similar, meaning, the best I achived, was depending of buffer-sizes etc. about 550 Mb/s for receive. BUT can I also use the iperf_task to test transmit-speed? How are the settings then and how to invoke iperf3 on the host? I tried the –reverse option but got nothing but 1 byte sent from device to PC. 🙂 And secondly: What remains to improve the transmit speed? Is zero-copy implemented for tcp-transmit and if it exists, what definition has to be set to use it? Any other ideas to get tcp-socket-transmit running at highest speed? I would be thankful for advice and hints, because I’d rather like the FreeRTOS version instead of LwIP. With best regards, Hannes