Incase of action execution dpif-netdev set may-steal for a packet depending on whether it is last action or not. But this does not work if it is last action inside a recirc action.
Signed-off-by: Pravin B Shelar <pshe...@nicira.com> --- lib/dpif-netdev.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 6b8201b..223e594 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -2893,10 +2893,9 @@ dp_execute_cb(void *aux_, struct dpif_packet **packets, int cnt, } (*depth)--; - return; + } else { + VLOG_WARN("Packet dropped. Max recirculation depth exceeded."); } - - VLOG_WARN("Packet dropped. Max recirculation depth exceeded."); break; case OVS_ACTION_ATTR_PUSH_VLAN: @@ -2922,6 +2921,10 @@ dp_netdev_execute_actions(struct dp_netdev_pmd_thread *pmd, { struct dp_netdev_execute_aux aux = {pmd}; + /* Do not steal packets inside recirc action. */ + if (OVS_UNLIKELY(*recirc_depth_get())) { + may_steal = false; + } odp_execute_actions(&aux, packets, cnt, may_steal, md, actions, actions_len, dp_execute_cb); } -- 1.9.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev