Re: [PATCH net] tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states

2017-08-03 Thread David Miller
From: Yuchung Cheng 
Date: 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

2017-08-02 Thread Yuchung Cheng
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!


Re: [PATCH net] tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states

2017-08-02 Thread David Miller
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?


Re: [PATCH net] tcp: avoid setting cwnd to invalid ssthresh after cwnd reduction states

2017-08-02 Thread Eric Dumazet
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

2017-08-01 Thread Yuchung Cheng
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(-)

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