tcp: implement TSQ for retransmits
authorEric Dumazet <edumazet@google.com>
Wed, 21 Sep 2016 05:45:58 +0000 (22:45 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 22 Sep 2016 06:44:16 +0000 (02:44 -0400)
commitf9616c35a0d786bc64fff4bf819d1e4984873367
treeea446b0df2685f3869cfcfcf52b99b545da2362f
parent0f1100c13a4870b6d8dd0bf87b1e25036acb1849
tcp: implement TSQ for retransmits

We saw sch_fq drops caused by the per flow limit of 100 packets and TCP
when dealing with large cwnd and bursts of retransmits.

Even after increasing the limit to 1000, and even after commit
10d3be569243 ("tcp-tso: do not split TSO packets at retransmit time"),
we can still have these drops.

Under certain conditions, TCP can spend a considerable amount of
time queuing thousands of skbs in a single tcp_xmit_retransmit_queue()
invocation, incurring latency spikes and stalls of other softirq
handlers.

This patch implements TSQ for retransmits, limiting number of packets
and giving more chance for scheduling packets in both ways.

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