From 7364ac14b64f86314b386c1428972c96ced67695 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 16 Oct 2019 10:07:39 -0700 Subject: tcp: avoid head retransmit if scoreboard has no holes Type: fix Change-Id: I6164ad0d97cd91b60c85302eff691836d12a0a70 Signed-off-by: Florin Coras (cherry picked from commit 8a8b05c526883fe34b83239a3c4f56087d1df9e5) --- src/vnet/tcp/tcp_input.c | 2 -- src/vnet/tcp/tcp_output.c | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'src/vnet') diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c index 12377d68179..22222fba1e2 100755 --- a/src/vnet/tcp/tcp_input.c +++ b/src/vnet/tcp/tcp_input.c @@ -945,8 +945,6 @@ scoreboard_clear (sack_scoreboard_t * sb) sb->sacked_bytes = 0; sb->last_sacked_bytes = 0; sb->last_bytes_delivered = 0; - sb->high_sacked = 0; - sb->high_rxt = 0; sb->lost_bytes = 0; sb->last_lost_bytes = 0; sb->cur_rxt_hole = TCP_INVALID_SACK_HOLE_INDEX; diff --git a/src/vnet/tcp/tcp_output.c b/src/vnet/tcp/tcp_output.c index fb806446dcc..08099fffa4e 100644 --- a/src/vnet/tcp/tcp_output.c +++ b/src/vnet/tcp/tcp_output.c @@ -1932,7 +1932,8 @@ tcp_retransmit_sack (tcp_worker_ctx_t * wrk, tcp_connection_t * tc, sb = &tc->sack_sb; /* Check if snd_una is a lost retransmit */ - if (seq_gt (sb->high_sacked, tc->snd_congestion) + if (pool_elts (sb->holes) + && seq_gt (sb->high_sacked, tc->snd_congestion) && tc->rxt_head != tc->snd_una && tcp_retransmit_should_retry_head (tc, sb)) { -- cgit 1.2.3-korg