Subject: Re: [PATCH net] tcp: disallow cwnd undo when switching congestion control

From: Stephen Hemminger <[email-masked]>
Date: Wed, 31 May 2017 11:47:32 -0700

On Wed, 31 May 2017 11:21:27 -0700
Yuchung Cheng <[email-masked]> wrote:

> When the sender switches its congestion control during loss
> recovery, if the recovery is spurious then it may incorrectly
> revert cwnd and ssthresh to the older values set by a previous
> congestion control. Consider a congestion control (like BBR)
> that does not use ssthresh and keeps it infinite: the connection
> may incorrectly revert cwnd to an infinite value when switching
> from BBR to another congestion control.
> 
> This patch fixes it by disallowing such cwnd undo operation
> upon switching congestion control.  Note that undo_marker
> is not reset s.t. the packets that were incorrectly marked
> lost would be corrected. We only avoid undoing the cwnd in
> tcp_undo_cwnd_reduction().
> 
> Signed-off-by: Yuchung Cheng <[email-masked]>
> Signed-off-by: Soheil Hassas Yeganeh <[email-masked]>
> Signed-off-by: Neal Cardwell <[email-masked]>
> Signed-off-by: Eric Dumazet <[email-masked]>

That looks correct. Are there other values of congestion state
that should be reset?