aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDoug Leith <doug.leith@nuim.ie>2008-12-04 20:17:18 -0500
committerDavid S. Miller <davem@davemloft.net>2008-12-04 20:17:18 -0500
commita6af2d6ba5797c556fba0cd3a19e5f3bc9a99b76 (patch)
treedd2a3be62a935df9c8f8d0a0845ddd310d774f6c /net
parentf706644d55f90e8306d87060168fef33804d6dd9 (diff)
tcp: tcp_vegas ssthresh bug fix
This patch fixes a bug in tcp_vegas.c. At the moment this code leaves ssthresh untouched. However, this means that the vegas congestion control algorithm is effectively unable to reduce cwnd below the ssthresh value (if the vegas update lowers the cwnd below ssthresh, then slow start is activated to raise it back up). One example where this matters is when during slow start cwnd overshoots the link capacity and a flow then exits slow start with ssthresh set to a value above where congestion avoidance would like to adjust it. Signed-off-by: Doug Leith <doug.leith@nuim.ie> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/ipv4/tcp_vegas.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv4/tcp_vegas.c b/net/ipv4/tcp_vegas.c
index 14504dada116..7cd22262de3a 100644
--- a/net/ipv4/tcp_vegas.c
+++ b/net/ipv4/tcp_vegas.c
@@ -326,6 +326,8 @@ static void tcp_vegas_cong_avoid(struct sock *sk, u32 ack, u32 in_flight)
326 tp->snd_cwnd = 2; 326 tp->snd_cwnd = 2;
327 else if (tp->snd_cwnd > tp->snd_cwnd_clamp) 327 else if (tp->snd_cwnd > tp->snd_cwnd_clamp)
328 tp->snd_cwnd = tp->snd_cwnd_clamp; 328 tp->snd_cwnd = tp->snd_cwnd_clamp;
329
330 tp->snd_ssthresh = tcp_current_ssthresh(sk);
329 } 331 }
330 332
331 /* Wipe the slate clean for the next RTT. */ 333 /* Wipe the slate clean for the next RTT. */