Fix double-enqueued packet in interface-output dual-loop, fixes VPP-116 02/1502/2
authorDamjan Marion <damarion@cisco.com>
Fri, 10 Jun 2016 17:26:54 +0000 (19:26 +0200)
committerDave Barach <openvpp@barachs.net>
Tue, 14 Jun 2016 16:34:02 +0000 (16:34 +0000)
commit6c56a3c6f0382f3751272d0784e9e0d16a646f3f
treee0ab4a2c4415ad6ef072e048897a34b2f00dfe8f
parent1aa310fe3f06b5bdc27b71d1cde9d71d79e9bd85
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>
vnet/vnet/interface.c
vnet/vnet/interface_funcs.h
vnet/vnet/interface_output.c