Skip to content

Commit 4d8f24e

Browse files
tracywwnjkuba-moo
authored andcommitted
Revert "tcp: change pingpong threshold to 3"
This reverts commit 4a41f45. This to-be-reverted commit was meant to apply a stricter rule for the stack to enter pingpong mode. However, the condition used to check for interactive session "before(tp->lsndtime, icsk->icsk_ack.lrcvtime)" is jiffy based and might be too coarse, which delays the stack entering pingpong mode. We revert this patch so that we no longer use the above condition to determine interactive session, and also reduce pingpong threshold to 1. Fixes: 4a41f45 ("tcp: change pingpong threshold to 3") Reported-by: LemmyHuang <[email protected]> Suggested-by: Neal Cardwell <[email protected]> Signed-off-by: Wei Wang <[email protected]> Acked-by: Neal Cardwell <[email protected]> Reviewed-by: Eric Dumazet <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 8ee18e2 commit 4d8f24e

File tree

2 files changed

+7
-18
lines changed

2 files changed

+7
-18
lines changed

include/net/inet_connection_sock.h

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ void inet_csk_update_fastreuse(struct inet_bind_bucket *tb,
321321

322322
struct dst_entry *inet_csk_update_pmtu(struct sock *sk, u32 mtu);
323323

324-
#define TCP_PINGPONG_THRESH 3
324+
#define TCP_PINGPONG_THRESH 1
325325

326326
static inline void inet_csk_enter_pingpong_mode(struct sock *sk)
327327
{
@@ -338,14 +338,6 @@ static inline bool inet_csk_in_pingpong_mode(struct sock *sk)
338338
return inet_csk(sk)->icsk_ack.pingpong >= TCP_PINGPONG_THRESH;
339339
}
340340

341-
static inline void inet_csk_inc_pingpong_cnt(struct sock *sk)
342-
{
343-
struct inet_connection_sock *icsk = inet_csk(sk);
344-
345-
if (icsk->icsk_ack.pingpong < U8_MAX)
346-
icsk->icsk_ack.pingpong++;
347-
}
348-
349341
static inline bool inet_csk_has_ulp(struct sock *sk)
350342
{
351343
return inet_sk(sk)->is_icsk && !!inet_csk(sk)->icsk_ulp_ops;

net/ipv4/tcp_output.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -167,16 +167,13 @@ static void tcp_event_data_sent(struct tcp_sock *tp,
167167
if (tcp_packets_in_flight(tp) == 0)
168168
tcp_ca_event(sk, CA_EVENT_TX_START);
169169

170-
/* If this is the first data packet sent in response to the
171-
* previous received data,
172-
* and it is a reply for ato after last received packet,
173-
* increase pingpong count.
174-
*/
175-
if (before(tp->lsndtime, icsk->icsk_ack.lrcvtime) &&
176-
(u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
177-
inet_csk_inc_pingpong_cnt(sk);
178-
179170
tp->lsndtime = now;
171+
172+
/* If it is a reply for ato after last received
173+
* packet, enter pingpong mode.
174+
*/
175+
if ((u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
176+
inet_csk_enter_pingpong_mode(sk);
180177
}
181178

182179
/* Account for an ACK we sent. */

0 commit comments

Comments
 (0)