]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tcp: skip big rtt sample if receive queue is not empty
authorEric Dumazet <edumazet@google.com>
Tue, 13 May 2025 19:39:16 +0000 (19:39 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 15 May 2025 18:30:09 +0000 (11:30 -0700)
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 <edumazet@google.com>
Link: https://patch.msgid.link/20250513193919.1089692-9-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/tcp_input.c

index 4723d696492517143a2f3c035bfda6b05198a824..8ec92dec321a909abe00203d0097c8bf4df1a240 100644 (file)
@@ -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;
        }