tcp: make TCP_USER_TIMEOUT accurate for zero window probes
authorEnke Chen <enchen@paloaltonetworks.com>
Fri, 22 Jan 2021 19:13:06 +0000 (11:13 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sun, 24 Jan 2021 03:32:51 +0000 (19:32 -0800)
commit344db93ae3ee69fc137bd6ed89a8ff1bf5b0db08
tree9550bba9e51fe81198e0e36c626a4d762e0487f5
parent3a30537cee233fb7da302491b28c832247d89bbe
tcp: make TCP_USER_TIMEOUT accurate for zero window probes

The TCP_USER_TIMEOUT is checked by the 0-window probe timer. As the
timer has backoff with a max interval of about two minutes, the
actual timeout for TCP_USER_TIMEOUT can be off by up to two minutes.

In this patch the TCP_USER_TIMEOUT is made more accurate by taking it
into account when computing the timer value for the 0-window probes.

This patch is similar to and builds on top of the one that made
TCP_USER_TIMEOUT accurate for RTOs in commit b701a99e431d ("tcp: Add
tcp_clamp_rto_to_user_timeout() helper to improve accuracy").

Fixes: 9721e709fa68 ("tcp: simplify window probe aborting on USER_TIMEOUT")
Signed-off-by: Enke Chen <enchen@paloaltonetworks.com>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20210122191306.GA99540@localhost.localdomain
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/tcp.h
net/ipv4/tcp_input.c
net/ipv4/tcp_output.c
net/ipv4/tcp_timer.c