From: Florin Coras Date: Sat, 30 Jun 2018 18:27:59 +0000 (-0700) Subject: tcp: fix single loop prefetch X-Git-Tag: v18.07-rc1~65 X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=commitdiff_plain;h=91ca462b58007299621a9fa6b6c06ed0b8a6040a tcp: fix single loop prefetch Also add single loop prefetch in session tx Change-Id: Ib2725a2552fcc1a65050d7a2eb10491a7b34db62 Signed-off-by: Florin Coras --- diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index 00874634551..aec353d3367 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -483,7 +483,13 @@ session_tx_fifo_read_and_snd_i (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_buffer_t *b0; u32 bi0; - ASSERT (n_bufs >= 1); + if (n_left > 1) + { + pbi = smm->tx_buffers[thread_index][n_bufs - 2]; + pb = vlib_get_buffer (vm, pbi); + vlib_prefetch_buffer_header (pb, STORE); + } + to_next[0] = bi0 = smm->tx_buffers[thread_index][--n_bufs]; b0 = vlib_get_buffer (vm, bi0); session_tx_fill_buffer (vm, ctx, b0, &n_bufs, peek_data); diff --git a/src/vnet/tcp/tcp_output.c b/src/vnet/tcp/tcp_output.c index 4b7915828df..7c113458d54 100644 --- a/src/vnet/tcp/tcp_output.c +++ b/src/vnet/tcp/tcp_output.c @@ -1996,8 +1996,8 @@ tcp46_output_inline (vlib_main_t * vm, vlib_node_runtime_t * node, if (n_left_from > 1) { - vlib_prefetch_buffer_header (b[0], STORE); - CLIB_PREFETCH (b[0]->data, 2 * CLIB_CACHE_LINE_BYTES, STORE); + vlib_prefetch_buffer_header (b[1], STORE); + CLIB_PREFETCH (b[1]->data, 2 * CLIB_CACHE_LINE_BYTES, STORE); } next[0] = TCP_OUTPUT_NEXT_IP_LOOKUP;