[ovs-dev] [PATCH] datapath-windows: Fix recirculation to use the proper FlowKey

Sairam Venugopal vsairam at vmware.com
Fri May 6 23:46:11 UTC 2016


Disregard this patch. I have more changes on this.

Thanks,
Sairam

On 5/6/16, 2:21 PM, "Sairam Venugopal" <vsairam at vmware.com> wrote:

>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 <vsairam at 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
>




More information about the dev mailing list