]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: plug skb_still_in_host_queue() to TSQ
authorEric Dumazet <edumazet@google.com>
Thu, 11 Mar 2021 20:35:04 +0000 (12:35 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 12 Mar 2021 02:35:31 +0000 (18:35 -0800)
commit62c55e9323822628a6e8e2192f42490845b83fce
tree513a55d017f0e693e19f60f325ee82bf2cda5ccb
parentd0d7315859c396fd38f2e4b259629a1ffacf2679
tcp: plug skb_still_in_host_queue() to TSQ

Jakub and Neil reported an increase of RTO timers whenever
TX completions are delayed a bit more (by increasing
NIC TX coalescing parameters)

Main issue is that TCP stack has a logic preventing a packet
being retransmit if the prior clone has not yet been
orphaned or freed.

This logic came with commit c264c97e44f8 ("tcp: avoid
retransmits of TCP packets hanging in host queues")

Thankfully, in the case skb_still_in_host_queue() detects
the initial clone is still in flight, it can use TSQ logic
that will eventually retry later, at the moment the clone
is freed or orphaned.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Neil Spring <ntspring@fb.com>
Reported-by: Jakub Kicinski <kuba@kernel.org>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
net/ipv4/tcp_output.c