From: Eric Dumazet Date: Tue, 13 May 2025 19:39:16 +0000 (+0000) Subject: tcp: skip big rtt sample if receive queue is not empty X-Git-Tag: v6.16-rc1~132^2~97^2~3 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=a00f135cd986f7d23f59723f4f9d531f38867d9d;p=linux-block.git tcp: skip big rtt sample if receive queue is not empty tcp_rcv_rtt_update() role is to keep an estimation of RTT (tp->rcv_rtt_est.rtt_us) for receivers. If an application is too slow to drain the TCP receive queue, it is better to leave the RTT estimation small, so that tcp_rcv_space_adjust() does not inflate tp->rcvq_space.space and sk->sk_rcvbuf. Signed-off-by: Eric Dumazet Link: https://patch.msgid.link/20250513193919.1089692-9-edumazet@google.com Signed-off-by: Jakub Kicinski --- diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 4723d6964925..8ec92dec321a 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -682,6 +682,9 @@ static void tcp_rcv_rtt_update(struct tcp_sock *tp, u32 sample, int win_dep) */ if (win_dep) return; + /* Do not use this sample if receive queue is not empty. */ + if (tp->rcv_nxt != tp->copied_seq) + return; new_sample = old_sample - (old_sample >> 3) + sample; }