Re: [PATCH net] tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
From: Yuchung ChengDate: Wed, 2 Aug 2017 10:58:54 -0700 > On Wed, Aug 2, 2017 at 10:51 AM, David Miller wrote: >> >> From: Yuchung Cheng >> Date: Tue, 1 Aug 2017 13:22:32 -0700 >> >> > If the sender switches the congestion control during ECN-triggered >> > cwnd-reduction state (CA_CWR), upon exiting recovery cwnd is set to >> > the ssthresh value calculated by the previous congestion control. If >> > the previous congestion control is BBR that always keep ssthresh >> > to TCP_INIFINITE_SSTHRESH, cwnd ends up being infinite. The safe >> > step is to avoid assigning invalid ssthresh value when recovery ends. >> > >> > Signed-off-by: Yuchung Cheng >> > Signed-off-by: Neal Cardwell >> >> Applied, thanks. >> >> Is this a -stable candidate? > > Yes it is. Thanks! Great, queued up.
Re: [PATCH net] tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
On Wed, Aug 2, 2017 at 10:51 AM, David Millerwrote: > > From: Yuchung Cheng > Date: Tue, 1 Aug 2017 13:22:32 -0700 > > > If the sender switches the congestion control during ECN-triggered > > cwnd-reduction state (CA_CWR), upon exiting recovery cwnd is set to > > the ssthresh value calculated by the previous congestion control. If > > the previous congestion control is BBR that always keep ssthresh > > to TCP_INIFINITE_SSTHRESH, cwnd ends up being infinite. The safe > > step is to avoid assigning invalid ssthresh value when recovery ends. > > > > Signed-off-by: Yuchung Cheng > > Signed-off-by: Neal Cardwell > > Applied, thanks. > > Is this a -stable candidate? Yes it is. Thanks!
Re: [PATCH net] tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
From: Yuchung ChengDate: Tue, 1 Aug 2017 13:22:32 -0700 > If the sender switches the congestion control during ECN-triggered > cwnd-reduction state (CA_CWR), upon exiting recovery cwnd is set to > the ssthresh value calculated by the previous congestion control. If > the previous congestion control is BBR that always keep ssthresh > to TCP_INIFINITE_SSTHRESH, cwnd ends up being infinite. The safe > step is to avoid assigning invalid ssthresh value when recovery ends. > > Signed-off-by: Yuchung Cheng > Signed-off-by: Neal Cardwell Applied, thanks. Is this a -stable candidate?
Re: [PATCH net] tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
On Tue, 2017-08-01 at 13:22 -0700, Yuchung Cheng wrote: > If the sender switches the congestion control during ECN-triggered > cwnd-reduction state (CA_CWR), upon exiting recovery cwnd is set to > the ssthresh value calculated by the previous congestion control. If > the previous congestion control is BBR that always keep ssthresh > to TCP_INIFINITE_SSTHRESH, cwnd ends up being infinite. The safe > step is to avoid assigning invalid ssthresh value when recovery ends. > > Signed-off-by: Yuchung Cheng> Signed-off-by: Neal Cardwell > --- > net/ipv4/tcp_input.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Acked-by: Eric Dumazet
[PATCH net] tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states
If the sender switches the congestion control during ECN-triggered cwnd-reduction state (CA_CWR), upon exiting recovery cwnd is set to the ssthresh value calculated by the previous congestion control. If the previous congestion control is BBR that always keep ssthresh to TCP_INIFINITE_SSTHRESH, cwnd ends up being infinite. The safe step is to avoid assigning invalid ssthresh value when recovery ends. Signed-off-by: Yuchung ChengSigned-off-by: Neal Cardwell --- net/ipv4/tcp_input.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 2920e0cb09f8..dad026fcfd09 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -2520,8 +2520,8 @@ static inline void tcp_end_cwnd_reduction(struct sock *sk) return; /* Reset cwnd to ssthresh in CWR or Recovery (unless it's undone) */ - if (inet_csk(sk)->icsk_ca_state == TCP_CA_CWR || - (tp->undo_marker && tp->snd_ssthresh < TCP_INFINITE_SSTHRESH)) { + if (tp->snd_ssthresh < TCP_INFINITE_SSTHRESH && + (inet_csk(sk)->icsk_ca_state == TCP_CA_CWR || tp->undo_marker)) { tp->snd_cwnd = tp->snd_ssthresh; tp->snd_cwnd_stamp = tcp_jiffies32; } -- 2.14.0.rc1.383.gd1ce394fe2-goog