stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* FAILED: patch "[PATCH] Revert "tcp: change pingpong threshold to 3"" failed to apply to 5.4-stable tree
@ 2022-07-30 15:24 gregkh
  2022-08-15 20:51 ` [PATCH stable 5.4] Revert "tcp: change pingpong threshold to 3" Kuniyuki Iwashima
  0 siblings, 1 reply; 5+ messages in thread
From: gregkh @ 2022-07-30 15:24 UTC (permalink / raw)
  To: weiwan, edumazet, hlm3280, kuba, ncardwell; +Cc: stable


The patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From 4d8f24eeedc58d5f87b650ddda73c16e8ba56559 Mon Sep 17 00:00:00 2001
From: Wei Wang <weiwan@google.com>
Date: Thu, 21 Jul 2022 20:44:04 +0000
Subject: [PATCH] Revert "tcp: change pingpong threshold to 3"

This reverts commit 4a41f453bedfd5e9cd040bad509d9da49feb3e2c.

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: 4a41f453bedf ("tcp: change pingpong threshold to 3")
Reported-by: LemmyHuang <hlm3280@163.com>
Suggested-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Wei Wang <weiwan@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20220721204404.388396-1-weiwan@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
index 85cd695e7fd1..ee88f0f1350f 100644
--- a/include/net/inet_connection_sock.h
+++ b/include/net/inet_connection_sock.h
@@ -321,7 +321,7 @@ void inet_csk_update_fastreuse(struct inet_bind_bucket *tb,
 
 struct dst_entry *inet_csk_update_pmtu(struct sock *sk, u32 mtu);
 
-#define TCP_PINGPONG_THRESH	3
+#define TCP_PINGPONG_THRESH	1
 
 static inline void inet_csk_enter_pingpong_mode(struct sock *sk)
 {
@@ -338,14 +338,6 @@ static inline bool inet_csk_in_pingpong_mode(struct sock *sk)
 	return inet_csk(sk)->icsk_ack.pingpong >= TCP_PINGPONG_THRESH;
 }
 
-static inline void inet_csk_inc_pingpong_cnt(struct sock *sk)
-{
-	struct inet_connection_sock *icsk = inet_csk(sk);
-
-	if (icsk->icsk_ack.pingpong < U8_MAX)
-		icsk->icsk_ack.pingpong++;
-}
-
 static inline bool inet_csk_has_ulp(struct sock *sk)
 {
 	return inet_sk(sk)->is_icsk && !!inet_csk(sk)->icsk_ulp_ops;
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index cf6713c9567e..2efe41c84ee8 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -167,16 +167,13 @@ static void tcp_event_data_sent(struct tcp_sock *tp,
 	if (tcp_packets_in_flight(tp) == 0)
 		tcp_ca_event(sk, CA_EVENT_TX_START);
 
-	/* If this is the first data packet sent in response to the
-	 * previous received data,
-	 * and it is a reply for ato after last received packet,
-	 * increase pingpong count.
-	 */
-	if (before(tp->lsndtime, icsk->icsk_ack.lrcvtime) &&
-	    (u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
-		inet_csk_inc_pingpong_cnt(sk);
-
 	tp->lsndtime = now;
+
+	/* If it is a reply for ato after last received
+	 * packet, enter pingpong mode.
+	 */
+	if ((u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
+		inet_csk_enter_pingpong_mode(sk);
 }
 
 /* Account for an ACK we sent. */


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH stable 5.4] Revert "tcp: change pingpong threshold to 3"
  2022-07-30 15:24 FAILED: patch "[PATCH] Revert "tcp: change pingpong threshold to 3"" failed to apply to 5.4-stable tree gregkh
@ 2022-08-15 20:51 ` Kuniyuki Iwashima
  2022-08-16  1:45   ` Jakub Kicinski
  2022-08-16  5:49   ` Jiri Slaby
  0 siblings, 2 replies; 5+ messages in thread
From: Kuniyuki Iwashima @ 2022-08-15 20:51 UTC (permalink / raw)
  To: stable
  Cc: Kuniyuki Iwashima, Wei Wang, LemmyHuang, Neal Cardwell,
	Eric Dumazet, Jakub Kicinski

From: Wei Wang <weiwan@google.com>

commit 4d8f24eeedc58d5f87b650ddda73c16e8ba56559 upstream.

This reverts commit 4a41f453bedfd5e9cd040bad509d9da49feb3e2c.

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: 4a41f453bedf ("tcp: change pingpong threshold to 3")
Reported-by: LemmyHuang <hlm3280@163.com>
Suggested-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Wei Wang <weiwan@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20220721204404.388396-1-weiwan@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
 include/net/inet_connection_sock.h | 10 +---------
 net/ipv4/tcp_output.c              | 15 ++++++---------
 2 files changed, 7 insertions(+), 18 deletions(-)

diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
index 13792c0ef46e..2e5f2c8b0663 100644
--- a/include/net/inet_connection_sock.h
+++ b/include/net/inet_connection_sock.h
@@ -318,7 +318,7 @@ void inet_csk_update_fastreuse(struct inet_bind_bucket *tb,
 
 struct dst_entry *inet_csk_update_pmtu(struct sock *sk, u32 mtu);
 
-#define TCP_PINGPONG_THRESH	3
+#define TCP_PINGPONG_THRESH	1
 
 static inline void inet_csk_enter_pingpong_mode(struct sock *sk)
 {
@@ -334,12 +334,4 @@ static inline bool inet_csk_in_pingpong_mode(struct sock *sk)
 {
 	return inet_csk(sk)->icsk_ack.pingpong >= TCP_PINGPONG_THRESH;
 }
-
-static inline void inet_csk_inc_pingpong_cnt(struct sock *sk)
-{
-	struct inet_connection_sock *icsk = inet_csk(sk);
-
-	if (icsk->icsk_ack.pingpong < U8_MAX)
-		icsk->icsk_ack.pingpong++;
-}
 #endif /* _INET_CONNECTION_SOCK_H */
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index ef749a47768a..7f9004ae44a4 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -166,16 +166,13 @@ static void tcp_event_data_sent(struct tcp_sock *tp,
 	if (tcp_packets_in_flight(tp) == 0)
 		tcp_ca_event(sk, CA_EVENT_TX_START);
 
-	/* If this is the first data packet sent in response to the
-	 * previous received data,
-	 * and it is a reply for ato after last received packet,
-	 * increase pingpong count.
-	 */
-	if (before(tp->lsndtime, icsk->icsk_ack.lrcvtime) &&
-	    (u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
-		inet_csk_inc_pingpong_cnt(sk);
-
 	tp->lsndtime = now;
+
+	/* If it is a reply for ato after last received
+	 * packet, enter pingpong mode.
+	 */
+	if ((u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
+		inet_csk_enter_pingpong_mode(sk);
 }
 
 /* Account for an ACK we sent. */
-- 
2.37.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH stable 5.4] Revert "tcp: change pingpong threshold to 3"
  2022-08-15 20:51 ` [PATCH stable 5.4] Revert "tcp: change pingpong threshold to 3" Kuniyuki Iwashima
@ 2022-08-16  1:45   ` Jakub Kicinski
  2022-08-16  5:49   ` Jiri Slaby
  1 sibling, 0 replies; 5+ messages in thread
From: Jakub Kicinski @ 2022-08-16  1:45 UTC (permalink / raw)
  To: Kuniyuki Iwashima
  Cc: stable, Wei Wang, LemmyHuang, Neal Cardwell, Eric Dumazet

On Mon, 15 Aug 2022 20:51:29 +0000 Kuniyuki Iwashima wrote:
> From: Wei Wang <weiwan@google.com>
> 
> commit 4d8f24eeedc58d5f87b650ddda73c16e8ba56559 upstream.
> 
> This reverts commit 4a41f453bedfd5e9cd040bad509d9da49feb3e2c.
> 
> 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: 4a41f453bedf ("tcp: change pingpong threshold to 3")
> Reported-by: LemmyHuang <hlm3280@163.com>
> Suggested-by: Neal Cardwell <ncardwell@google.com>
> Signed-off-by: Wei Wang <weiwan@google.com>
> Acked-by: Neal Cardwell <ncardwell@google.com>
> Reviewed-by: Eric Dumazet <edumazet@google.com>
> Link: https://lore.kernel.org/r/20220721204404.388396-1-weiwan@google.com
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>

Should we wait for the resolution in the original thread first?

https://lore.kernel.org/all/ca408271-8730-eb2b-f12e-3f66df2e643a@kernel.org/

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH stable 5.4] Revert "tcp: change pingpong threshold to 3"
  2022-08-15 20:51 ` [PATCH stable 5.4] Revert "tcp: change pingpong threshold to 3" Kuniyuki Iwashima
  2022-08-16  1:45   ` Jakub Kicinski
@ 2022-08-16  5:49   ` Jiri Slaby
  2022-08-17 12:04     ` Greg KH
  1 sibling, 1 reply; 5+ messages in thread
From: Jiri Slaby @ 2022-08-16  5:49 UTC (permalink / raw)
  To: Kuniyuki Iwashima, stable
  Cc: Wei Wang, LemmyHuang, Neal Cardwell, Eric Dumazet, Jakub Kicinski

On 15. 08. 22, 22:51, Kuniyuki Iwashima wrote:
> From: Wei Wang <weiwan@google.com>
> 
> commit 4d8f24eeedc58d5f87b650ddda73c16e8ba56559 upstream.
> 
> This reverts commit 4a41f453bedfd5e9cd040bad509d9da49feb3e2c.
> 
> 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.

I would wait a bit before backporting this to stable:
https://lore.kernel.org/all/ca408271-8730-eb2b-f12e-3f66df2e643a@kernel.org/

> Fixes: 4a41f453bedf ("tcp: change pingpong threshold to 3")
> Reported-by: LemmyHuang <hlm3280@163.com>
> Suggested-by: Neal Cardwell <ncardwell@google.com>
> Signed-off-by: Wei Wang <weiwan@google.com>
> Acked-by: Neal Cardwell <ncardwell@google.com>
> Reviewed-by: Eric Dumazet <edumazet@google.com>
> Link: https://lore.kernel.org/r/20220721204404.388396-1-weiwan@google.com
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
>   include/net/inet_connection_sock.h | 10 +---------
>   net/ipv4/tcp_output.c              | 15 ++++++---------
>   2 files changed, 7 insertions(+), 18 deletions(-)
> 
> diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h
> index 13792c0ef46e..2e5f2c8b0663 100644
> --- a/include/net/inet_connection_sock.h
> +++ b/include/net/inet_connection_sock.h
> @@ -318,7 +318,7 @@ void inet_csk_update_fastreuse(struct inet_bind_bucket *tb,
>   
>   struct dst_entry *inet_csk_update_pmtu(struct sock *sk, u32 mtu);
>   
> -#define TCP_PINGPONG_THRESH	3
> +#define TCP_PINGPONG_THRESH	1
>   
>   static inline void inet_csk_enter_pingpong_mode(struct sock *sk)
>   {
> @@ -334,12 +334,4 @@ static inline bool inet_csk_in_pingpong_mode(struct sock *sk)
>   {
>   	return inet_csk(sk)->icsk_ack.pingpong >= TCP_PINGPONG_THRESH;
>   }
> -
> -static inline void inet_csk_inc_pingpong_cnt(struct sock *sk)
> -{
> -	struct inet_connection_sock *icsk = inet_csk(sk);
> -
> -	if (icsk->icsk_ack.pingpong < U8_MAX)
> -		icsk->icsk_ack.pingpong++;
> -}
>   #endif /* _INET_CONNECTION_SOCK_H */
> diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
> index ef749a47768a..7f9004ae44a4 100644
> --- a/net/ipv4/tcp_output.c
> +++ b/net/ipv4/tcp_output.c
> @@ -166,16 +166,13 @@ static void tcp_event_data_sent(struct tcp_sock *tp,
>   	if (tcp_packets_in_flight(tp) == 0)
>   		tcp_ca_event(sk, CA_EVENT_TX_START);
>   
> -	/* If this is the first data packet sent in response to the
> -	 * previous received data,
> -	 * and it is a reply for ato after last received packet,
> -	 * increase pingpong count.
> -	 */
> -	if (before(tp->lsndtime, icsk->icsk_ack.lrcvtime) &&
> -	    (u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
> -		inet_csk_inc_pingpong_cnt(sk);
> -
>   	tp->lsndtime = now;
> +
> +	/* If it is a reply for ato after last received
> +	 * packet, enter pingpong mode.
> +	 */
> +	if ((u32)(now - icsk->icsk_ack.lrcvtime) < icsk->icsk_ack.ato)
> +		inet_csk_enter_pingpong_mode(sk);
>   }
>   
>   /* Account for an ACK we sent. */

-- 
js
suse labs


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH stable 5.4] Revert "tcp: change pingpong threshold to 3"
  2022-08-16  5:49   ` Jiri Slaby
@ 2022-08-17 12:04     ` Greg KH
  0 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2022-08-17 12:04 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: Kuniyuki Iwashima, stable, Wei Wang, LemmyHuang, Neal Cardwell,
	Eric Dumazet, Jakub Kicinski

On Tue, Aug 16, 2022 at 07:49:17AM +0200, Jiri Slaby wrote:
> On 15. 08. 22, 22:51, Kuniyuki Iwashima wrote:
> > From: Wei Wang <weiwan@google.com>
> > 
> > commit 4d8f24eeedc58d5f87b650ddda73c16e8ba56559 upstream.
> > 
> > This reverts commit 4a41f453bedfd5e9cd040bad509d9da49feb3e2c.
> > 
> > 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.
> 
> I would wait a bit before backporting this to stable:
> https://lore.kernel.org/all/ca408271-8730-eb2b-f12e-3f66df2e643a@kernel.org/

Looks like all is good, so I'll leave this be for now.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-08-17 12:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-30 15:24 FAILED: patch "[PATCH] Revert "tcp: change pingpong threshold to 3"" failed to apply to 5.4-stable tree gregkh
2022-08-15 20:51 ` [PATCH stable 5.4] Revert "tcp: change pingpong threshold to 3" Kuniyuki Iwashima
2022-08-16  1:45   ` Jakub Kicinski
2022-08-16  5:49   ` Jiri Slaby
2022-08-17 12:04     ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).