summaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp/tcp_newreno.c
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2018-05-23 21:01:30 -0700
committerDamjan Marion <dmarion.lists@gmail.com>2018-05-26 18:56:43 +0000
commitca1c8f3e782dc68a51aa2792771d9b4aac696ddd (patch)
tree890c7250af97dd65357363242e2c7272a199feca /src/vnet/tcp/tcp_newreno.c
parenta34c08c8c5a505e55178a9a8ef5391224d5460a5 (diff)
tcp: loss recovery improvements/fixes
- fix newreno cwnd computation - reset snd_una_max on entering recovery - accept acks beyond snd_nxt but less than snd_congestion when in recovery - avoid entering fast recovery multiple times when using sacks - avoid as much as possible sending small segments when doing fast retransmit - more event logging Change-Id: I19dd151d7704e39d4eae06de3a26f5e124875366 Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/tcp/tcp_newreno.c')
-rw-r--r--src/vnet/tcp/tcp_newreno.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/vnet/tcp/tcp_newreno.c b/src/vnet/tcp/tcp_newreno.c
index 0f43d21dfde..a9ec58c262f 100644
--- a/src/vnet/tcp/tcp_newreno.c
+++ b/src/vnet/tcp/tcp_newreno.c
@@ -41,8 +41,8 @@ newreno_rcv_ack (tcp_connection_t * tc)
if (tc->cwnd_acc_bytes >= tc->cwnd)
{
u32 inc = tc->cwnd_acc_bytes / tc->cwnd;
- tc->cwnd += inc * tc->snd_mss;
tc->cwnd_acc_bytes -= inc * tc->cwnd;
+ tc->cwnd += inc * tc->snd_mss;
}
tc->cwnd = clib_min (tc->cwnd,
transport_tx_fifo_size (&tc->connection));