From: Florian Westphal <f...@strlen.de>
Date: Fri, 28 Oct 2016 18:43:11 +0200

> If a congestion control module doesn't provide .undo_cwnd function,
> tcp_undo_cwnd_reduction() will set cwnd to
> 
>    tp->snd_cwnd = max(tp->snd_cwnd, tp->snd_ssthresh << 1);
> 
> ... which makes sense for reno (it sets ssthresh to half the current cwnd),
> but it makes no sense for dctcp, which sets ssthresh based on the current
> congestion estimate.
> 
> This can cause severe growth of cwnd (eventually overflowing u32).
> 
> Fix this by saving last cwnd on loss and restore cwnd based on that,
> similar to cubic and other algorithms.
> 
> Fixes: e3118e8359bb7c ("net: tcp: add DCTCP congestion control algorithm")
> Cc: Lawrence Brakmo <bra...@fb.com>
> Cc: Andrew Shewmaker <ags...@gmail.com>
> Cc: Glenn Judd <glenn.j...@morganstanley.com>
> Acked-by: Daniel Borkmann <dan...@iogearbox.net>
> Signed-off-by: Florian Westphal <f...@strlen.de>

Applied and queued up for -stable, thanks Florian.

Reply via email to