tcp: dequeue acked only once per burst
Avoid dequeuing acked bytes more than once per burst for a connection.
Although the fifos do not use locks, size decrements are atomic, so they
rely on locked instructions.
Change-Id: Id65f4ea40b2c10057461402dfd0393034e6472d5
Signed-off-by: Florin Coras <fcoras@cisco.com>
diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c
index f8e74a8..a466e3c 100644
--- a/src/vnet/tcp/tcp.c
+++ b/src/vnet/tcp/tcp.c
@@ -1322,12 +1322,14 @@
for (thread = 0; thread < num_threads; thread++)
{
- vec_validate (tm->wrk_ctx[thread].pending_fast_rxt, 0);
- vec_validate (tm->wrk_ctx[thread].ongoing_fast_rxt, 0);
- vec_validate (tm->wrk_ctx[thread].postponed_fast_rxt, 0);
+ vec_validate (tm->wrk_ctx[thread].pending_fast_rxt, 255);
+ vec_validate (tm->wrk_ctx[thread].ongoing_fast_rxt, 255);
+ vec_validate (tm->wrk_ctx[thread].postponed_fast_rxt, 255);
+ vec_validate (tm->wrk_ctx[thread].pending_deq_acked, 255);
vec_reset_length (tm->wrk_ctx[thread].pending_fast_rxt);
vec_reset_length (tm->wrk_ctx[thread].ongoing_fast_rxt);
vec_reset_length (tm->wrk_ctx[thread].postponed_fast_rxt);
+ vec_reset_length (tm->wrk_ctx[thread].pending_deq_acked);
tm->wrk_ctx[thread].vm = vlib_mains[thread];
/*