diff options
author | Florian Westphal <fw@strlen.de> | 2016-11-21 14:18:38 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-11-21 13:20:17 -0500 |
commit | e97991832a4ea4a5f47d65f068a4c966a2eb5730 (patch) | |
tree | 870e5c09c37890d286872c9ae22382d6bf336b37 /net/ipv4/tcp_input.c | |
parent | 85f7e7508a1d288b513493196ef406c6c06134e1 (diff) | |
download | linux-e97991832a4ea4a5f47d65f068a4c966a2eb5730.tar.gz linux-e97991832a4ea4a5f47d65f068a4c966a2eb5730.tar.bz2 linux-e97991832a4ea4a5f47d65f068a4c966a2eb5730.zip |
tcp: make undo_cwnd mandatory for congestion modules
The undo_cwnd fallback in the stack doubles cwnd based on ssthresh,
which un-does reno halving behaviour.
It seems more appropriate to let congctl algorithms pair .ssthresh
and .undo_cwnd properly. Add a 'tcp_reno_undo_cwnd' function and wire it
up for all congestion algorithms that used to rely on the fallback.
Cc: Eric Dumazet <edumazet@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r-- | net/ipv4/tcp_input.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index a70046fea0e8..22e6a2097ff6 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -2394,10 +2394,7 @@ static void tcp_undo_cwnd_reduction(struct sock *sk, bool unmark_loss) if (tp->prior_ssthresh) { const struct inet_connection_sock *icsk = inet_csk(sk); - if (icsk->icsk_ca_ops->undo_cwnd) - tp->snd_cwnd = icsk->icsk_ca_ops->undo_cwnd(sk); - else - tp->snd_cwnd = max(tp->snd_cwnd, tp->snd_ssthresh << 1); + tp->snd_cwnd = icsk->icsk_ca_ops->undo_cwnd(sk); if (tp->prior_ssthresh > tp->snd_ssthresh) { tp->snd_ssthresh = tp->prior_ssthresh; |