Hi,
I am porting the Plus-TCP stack (git tag V3.1.0) for my Ethernet driver, Here I am using the Iperf port I got from the community
from: post in forum freertos-tcp-iperf3-server.
In my test with 100M connection, For UDP I am getting 95Mbps but for TCP I was only getting 70Mbps. I want to improve this get similar throughput as UDP.
from my debugging, I suspect the ACK being delayed might be the cause. To test this out, I edited the stack (just to test). This seemd to help and was able to get around 94Mbps throughput
edit:
diff --git a/source/FreeRTOS_TCP_Transmission.c b/source/FreeRTOS_TCP_Transmission.c
index a113d8f9..de58f633 100644
--- a/source/FreeRTOS_TCP_Transmission.c
+++ b/source/FreeRTOS_TCP_Transmission.c
@@ -1362,7 +1362,9 @@
/* Normally a delayed ACK should wait 200 ms for a next incoming
* packet. Only wait 20 ms here to gain performance. A slow ACK
* for full-size message. */
- pxSocket->u.xTCP.usTimeout = ( uint16_t ) pdMS_TO_TICKS( tcpDELAYED_ACK_LONGER_DELAY_MS );
+ /*pxSocket->u.xTCP.usTimeout = ( uint16_t ) pdMS_TO_TICKS( tcpDELAYED_ACK_LONGER_DELAY_MS );*/
+ pxSocket->u.xTCP.usTimeout = ( uint16_t ) tcpDELAYED_ACK_SHORT_DELAY_MS;
+ /*pxSocket->u.xTCP.usTimeout = ( uint16_t ) 5;*/
if( pxSocket->u.xTCP.usTimeout < 1U ) /* LCOV_EXCL_BR_LINE, the second branch will never be hit */
{
Any suggestion on where I should be looking into, Is there a method to fix this without editing the stack code. What am I missing