Revert Backoff [v3]: Revert RTO on ICMP destination unreachable
authorDamian Lukowski <damian@tvk.rwth-aachen.de>
Wed, 26 Aug 2009 00:16:31 +0000 (00:16 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 Sep 2009 09:45:42 +0000 (02:45 -0700)
commitf1ecd5d9e7366609d640ff4040304ea197fbc618
treeef4901d52ad0d2555094998f02d08788e197c20a
parent4d1a2d9ec1c17df077ed09a0d135bccf5637a3b7
Revert Backoff [v3]: Revert RTO on ICMP destination unreachable

Here, an ICMP host/network unreachable message, whose payload fits to
TCP's SND.UNA, is taken as an indication that the RTO retransmission has
not been lost due to congestion, but because of a route failure
somewhere along the path.
With true congestion, a router won't trigger such a message and the
patched TCP will operate as standard TCP.

This patch reverts one RTO backoff, if an ICMP host/network unreachable
message, whose payload fits to TCP's SND.UNA, arrives.
Based on the new RTO, the retransmission timer is reset to reflect the
remaining time, or - if the revert clocked out the timer - a retransmission
is sent out immediately.
Backoffs are only reverted, if TCP is in RTO loss recovery, i.e. if
there have been retransmissions and reversible backoffs, already.

Changes from v2:
1) Renaming of skb in tcp_v4_err() moved to another patch.
2) Reintroduced tcp_bound_rto() and __tcp_set_rto().
3) Fixed code comments.

Signed-off-by: Damian Lukowski <damian@tvk.rwth-aachen.de>
Acked-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_timer.c