On Tue, 2 Mar 2021 09:52:59 -0800 Jakub Kicinski wrote: > When receiver does not accept TCP Fast Open it will only ack > the SYN, and not the data. We detect this and immediately queue > the data for (re)transmission in tcp_rcv_fastopen_synack(). > > In DC networks with very low RTT and without RFS the SYN-ACK > may arrive before NIC driver reported Tx completion on > the original SYN. In which case skb_still_in_host_queue() > returns true and sender will need to wait for the retransmission > timer to fire milliseconds later. > > Work around this issue by passing negative segment count to > __tcp_retransmit_skb() as suggested by Eric. > > The condition triggers more often when Tx coalescing is configured > higher than Rx coalescing on the underlying NIC, but it does happen > even with relatively moderate and even settings (e.g. 33us). > > Note that DC machines usually run configured to always accept > TCP FastOpen data so the problem may not be very common. > > Suggested-by: Eric Dumazet <eduma...@google.com> > Signed-off-by: Neil Spring <ntspr...@fb.com> > Signed-off-by: Jakub Kicinski <k...@kernel.org>
.. and now I realized net-next is closed. I'll keep an eye on patchwork and resend as needed, sorry.