summaryrefslogtreecommitdiffstats
path: root/vnet/vnet/interface.c
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2016-06-10 19:26:54 +0200
committerDave Barach <openvpp@barachs.net>2016-06-14 16:34:02 +0000
commit6c56a3c6f0382f3751272d0784e9e0d16a646f3f (patch)
treee0ab4a2c4415ad6ef072e048897a34b2f00dfe8f /vnet/vnet/interface.c
parent1aa310fe3f06b5bdc27b71d1cde9d71d79e9bd85 (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.c')
-rw-r--r--vnet/vnet/interface.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/vnet/vnet/interface.c b/vnet/vnet/interface.c
index d36f7811d90..2fb93748b1e 100644
--- a/vnet/vnet/interface.c
+++ b/vnet/vnet/interface.c
@@ -689,8 +689,8 @@ vnet_register_interface (vnet_main_t * vnm,
r.flags = 0;
r.name = output_node_name;
r.function = dev_class->no_flatten_output_chains ?
- vnet_interface_output_node_no_flatten :
- vnet_interface_output_node;
+ vnet_interface_output_node_no_flatten_multiarch_select() :
+ vnet_interface_output_node_multiarch_select() ;
r.format_trace = format_vnet_interface_output_trace;
{