[ovs-dev] [PATCH v2] datapath-windows: Update Recirculation to use the right parameters

Sairam Venugopal vsairam at vmware.com
Fri Mar 25 18:06:49 UTC 2016


Update OvsLookupFlow() to include flowKey->RecircId when computing hash.
Use the right source port Id for checking if a packet is received or transmitted.

Signed-off-by: Sairam Venugopal <vsairam at vmware.com>
---
 datapath-windows/ovsext/Actions.c | 2 +-
 datapath-windows/ovsext/Flow.c    | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/datapath-windows/ovsext/Actions.c b/datapath-windows/ovsext/Actions.c
index a91454d..7742096 100644
--- a/datapath-windows/ovsext/Actions.c
+++ b/datapath-windows/ovsext/Actions.c
@@ -2015,7 +2015,7 @@ OvsDoRecirc(POVS_SWITCH_CONTEXT switchContext,
         }
         status = OvsCreateAndAddPackets(NULL, 0, OVS_PACKET_CMD_MISS,
                                         vport, key, ovsFwdCtx.curNbl,
-                                        srcPortNo ==
+                                        ovsFwdCtx.fwdDetail->SourcePortId ==
                                         switchContext->virtualExternalPortId,
                                         &ovsFwdCtx.layers,
                                         ovsFwdCtx.switchContext,
diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c
index 02c41b7..d49697c 100644
--- a/datapath-windows/ovsext/Flow.c
+++ b/datapath-windows/ovsext/Flow.c
@@ -2133,6 +2133,9 @@ OvsLookupFlow(OVS_DATAPATH *datapath,
 
     if (!hashValid) {
         *hash = OvsJhashBytes(start, size, 0);
+        if (key->recircId) {
+            *hash = OvsJhashWords((UINT32*)hash, 1, key->recircId);
+        }
     }
 
     head = &datapath->flowTable[HASH_BUCKET(*hash)];
-- 
2.5.0.windows.1




More information about the dev mailing list