diff options
Diffstat (limited to 'src/vnet/tcp/tcp_newreno.c')
-rw-r--r-- | src/vnet/tcp/tcp_newreno.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/vnet/tcp/tcp_newreno.c b/src/vnet/tcp/tcp_newreno.c index 7e37efb1052..8b704a6ba04 100644 --- a/src/vnet/tcp/tcp_newreno.c +++ b/src/vnet/tcp/tcp_newreno.c @@ -19,6 +19,12 @@ static void newreno_congestion (tcp_connection_t * tc) { tc->ssthresh = clib_max (tcp_flight_size (tc) / 2, 2 * tc->snd_mss); + tc->cwnd = tc->ssthresh; + /* Post retransmit update cwnd to ssthresh and account for the + * three segments that have left the network and should've been + * buffered at the receiver XXX */ + if (!tcp_opts_sack_permitted (&tc->rcv_opts)) + tc->cwnd += 3 * tc->snd_mss; } static void |