]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: reset reordering est. selectively on timeout
authorYuchung Cheng <ycheng@google.com>
Mon, 12 Aug 2013 23:41:25 +0000 (16:41 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 13 Aug 2013 23:08:33 +0000 (16:08 -0700)
commit25a8d4c5f82bb7adc06265cf14eb0500b49158a1
treedb72e02385e949e1b3a9c305e661db65a27f639b
parentfea07804df14fb9fb8aa006805b6f4117968d1b5
tcp: reset reordering est. selectively on timeout

On timeout the TCP sender unconditionally resets the estimated degree
of network reordering (tp->reordering). The idea behind this is that
the estimate is too large to trigger fast recovery (e.g., due to a IP
path change).

But for example if the sender only had 2 packets outstanding, then a
timeout doesn't tell much about reordering. A sender that learns about
reordering on big writes and loses packets on small writes will end up
falsely retransmitting again and again, especially when reordering is
more likely on big writes.

Therefore the sender should only suspect that tp->reordering is too
high if it could have gone into fast recovery with the (lower) default
estimate.

Signed-off-by: Yuchung Cheng <ycheng@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c