For a TCP client connect() call to a TCP server..

UNIX® Network Programming book by Richard Stevens says the following..

If the client TCP receives no response to its SYN segment, ETIMEDOUT is returned. 4.4BSD,
for example, sends one SYN when connect is called, another 6 seconds later, and another
24 seconds later (p. 828 of TCPv2). If no response is received after a total of 75 seconds, the
error is returned.

In Linux I would like know what is the retry mechanism (how many times and how far apart). Asking because for a TCP client connect() call I am getting ETIMEDOUT error. This socket has O\_NONBLOCK option and monitored by epoll() for the events.

If someone can point to me where in the code this retry logic is implemented that would be helpful too. I tried following a bit starting with tcp\_v4\_connect() from net/ipv4/tcp\_ipv4.c, but lost my way pretty soon..