diff options
author | 2016-06-10 19:26:54 +0200 | |
---|---|---|
committer | 2016-06-14 16:34:02 +0000 | |
commit | 6c56a3c6f0382f3751272d0784e9e0d16a646f3f (patch) | |
tree | e0ab4a2c4415ad6ef072e048897a34b2f00dfe8f /vnet/vnet/interface_funcs.h | |
parent | 1aa310fe3f06b5bdc27b71d1cde9d71d79e9bd85 (diff) |
Fix double-enqueued packet in interface-output dual-loop, fixes VPP-116
When speculative enqueue fails and a buffer needs to be moved to a new
node queue the original buffer is not correctly removed from the
original queue so buffer get send for transmit and encryption at the
same time. This issue will only be hit with the double loop so low
throughput traffic like pings will not hit the issue. This code path is
also only hit when the feature flag is enabled so will not be hit by
normal traffic
Patch also reorgnizes code to reduce number of branches in the interface
output node loop.
Change-Id: I3653400e58bdfd833e6c42823bab51586128b54b
Signed-off-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'vnet/vnet/interface_funcs.h')
-rw-r--r-- | vnet/vnet/interface_funcs.h | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/vnet/vnet/interface_funcs.h b/vnet/vnet/interface_funcs.h index 9d6fe48e23c..7832afcc7c4 100644 --- a/vnet/vnet/interface_funcs.h +++ b/vnet/vnet/interface_funcs.h @@ -179,14 +179,8 @@ typedef struct { } vnet_interface_output_runtime_t; /* Interface output functions. */ -uword -vnet_interface_output_node (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_frame_t * frame); -uword -vnet_interface_output_node_no_flatten (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_frame_t * frame); +void * vnet_interface_output_node_multiarch_select (void); +void * vnet_interface_output_node_no_flatten_multiarch_select (void); word vnet_sw_interface_compare (vnet_main_t * vnm, uword sw_if_index0, uword sw_if_index1); word vnet_hw_interface_compare (vnet_main_t * vnm, uword hw_if_index0, uword hw_if_index1); |