diff options
author | Eric Dumazet <edumazet@google.com> | 2025-05-13 19:39:16 +0000 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2025-05-15 11:30:09 -0700 |
commit | a00f135cd986f7d23f59723f4f9d531f38867d9d (patch) | |
tree | f49ebe760bb6d71741c6d3730e70cfe5ea1a4964 /net/ipv4/tcp_input.c | |
parent | b879dcb1aeeca278eacaac0b1e2425b1c7599f9f (diff) |
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 <edumazet@google.com>
Link: https://patch.msgid.link/20250513193919.1089692-9-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 3 |
1 files changed, 3 insertions, 0 deletions
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; } |