]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: avoid retransmits of TCP packets hanging in host queues
authorEric Dumazet <edumazet@google.com>
Mon, 21 Apr 2014 00:58:17 +0000 (17:58 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 Apr 2014 01:27:57 +0000 (21:27 -0400)
commitc264c97e44f8e620dacce34a6d56aa333084c672
tree48cabf2c099db7586abdbf22ac92c1bcb2e1cb89
parent49a6f798047875bc779e6e5bb60e92737ae22857
tcp: avoid retransmits of TCP packets hanging in host queues

In commit 459363612e5c ("tcp: introduce TCPSpuriousRtxHostQueues SNMP
counter") we added a logic to detect when a packet was retransmitted
while the prior clone was still in a qdisc or driver queue.

We are now confident we can do better, and catch the problem before
we fragment a TSO packet before retransmit, or in TLP path.

This patch fully exploits the logic by simply canceling the spurious
retransmit.
Original packet is in a queue and will eventually leave the host.

This helps to avoid network collapses when some events make the RTO
estimations very wrong, particularly when dealing with huge number of
sockets with synchronized blast.

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