Hello list,
Thanks to one of the users of FreeRTOS+TCP, Tamas Selmeci, we discovered an issue: a TCP connection may die as soon as a transmitted packet gets dropped (never arrives).
This can only happen when
configTICK_RATE_HZ
is defined as less than 1000 Hz.
Proposed change for now:
~~~~
Within ‘FreeRTOS
TCPIP.c’ :
s/pdMS_TO_TICKS/pdMS_TO_MIN_TICKS/g
In 'FreeRTOS_IP.h' please add this macro :
#define pdMS_TO_MIN_TICKS( xTimeInMs )
( pdMS_TO_TICKS( ( xTimeInMs ) ) < 1 ? 1 : pdMS_TO_TICKS( ( xTimeInMs ) ) )
~~~~
The problem occurs when
pdMS_TO_TICKS()
returns zero. When
pxSocket->u.xTcp.usTimeout
becomes zero it means: this socket does not need attention from the IP-task. As a result, the connection would die.
Changing subject:
FreeRTOS+TCP will soon support multiple interfaces and IP-addresses!
If anyone would like to pioneer and help us with testing, pleas write to us directly ( e.g. to h.tibosch located at freertos.org ). We’d love to get feedback from you before releasing the new source code.
Regards.