Pass down the right sendFlags for re-init fwdCtx. Remove the redundant call to ExtractFlow. It resets the flowKey causing failure in tunnel context.
Signed-off-by: Sairam Venugopal <vsai...@vmware.com> --- datapath-windows/ovsext/Actions.c | 15 +++++++-------- datapath-windows/ovsext/Actions.h | 1 + datapath-windows/ovsext/Recirc.c | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/datapath-windows/ovsext/Actions.c b/datapath-windows/ovsext/Actions.c index 5ad29ee..5ee9f17 100644 --- a/datapath-windows/ovsext/Actions.c +++ b/datapath-windows/ovsext/Actions.c @@ -1976,6 +1976,7 @@ OvsDoRecirc(POVS_SWITCH_CONTEXT switchContext, PNET_BUFFER_LIST curNbl, OvsFlowKey *key, UINT32 srcPortNo, + ULONG sendFlags, OVS_PACKET_HDR_INFO *layers) { NDIS_STATUS status; @@ -1983,17 +1984,15 @@ OvsDoRecirc(POVS_SWITCH_CONTEXT switchContext, OvsForwardingContext ovsFwdCtx = { 0 }; UINT64 hash = 0; ASSERT(layers); + PNDIS_SWITCH_FORWARDING_DETAIL_NET_BUFFER_LIST_INFO fwdDetail = + NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL(curNbl); - OvsInitForwardingCtx(&ovsFwdCtx, switchContext, curNbl, - srcPortNo, 0, - NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL(curNbl), - completionList, layers, TRUE); - - status = OvsExtractFlow(ovsFwdCtx.curNbl, ovsFwdCtx.srcVportNo, key, - &ovsFwdCtx.layers, NULL); + status = OvsInitForwardingCtx(&ovsFwdCtx, switchContext, curNbl, + srcPortNo, sendFlags, fwdDetail, + completionList, layers, TRUE); if (status != NDIS_STATUS_SUCCESS) { OvsCompleteNBLForwardingCtx(&ovsFwdCtx, - L"OVS-Dropped due to extract flow failure"); + L"OVS-initing destination port list failed at recirc"); ovsActionStats.failedFlowMiss++; return NDIS_STATUS_FAILURE; } diff --git a/datapath-windows/ovsext/Actions.h b/datapath-windows/ovsext/Actions.h index c56c260..e80ac4a 100644 --- a/datapath-windows/ovsext/Actions.h +++ b/datapath-windows/ovsext/Actions.h @@ -50,6 +50,7 @@ OvsDoRecirc(POVS_SWITCH_CONTEXT switchContext, PNET_BUFFER_LIST curNbl, OvsFlowKey *key, UINT32 srcPortNo, + ULONG sendFlags, OVS_PACKET_HDR_INFO *layers); #endif /* __ACTIONS_H_ */ diff --git a/datapath-windows/ovsext/Recirc.c b/datapath-windows/ovsext/Recirc.c index 2febf06..733e105 100644 --- a/datapath-windows/ovsext/Recirc.c +++ b/datapath-windows/ovsext/Recirc.c @@ -327,6 +327,7 @@ OvsProcessDeferredActions(POVS_SWITCH_CONTEXT switchContext, deferredAction->nbl, &deferredAction->key, portNo, + sendFlags, layers); } } -- 2.5.0.windows.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev