Thanks Sorin and Sairam, applied to master and branch-2.4.
On Mon, Sep 28, 2015 at 09:42:53PM +0000, Sairam Venugopal wrote: > Acked-by: Sairam Venugopal <[email protected]> > > > > On 9/23/15, 5:40 AM, "Sorin Vinturis" <[email protected]> > wrote: > > >Signed-off-by: Sorin Vinturis <[email protected]> > >--- > >This patch is for both master and 2.4 branch. > >--- > > datapath-windows/ovsext/Actions.c | 20 ++++++++++---------- > > datapath-windows/ovsext/PacketIO.c | 6 +++--- > > datapath-windows/ovsext/PacketIO.h | 10 +++++----- > > datapath-windows/ovsext/Tunnel.c | 8 ++++---- > > datapath-windows/ovsext/User.c | 12 ++++-------- > > datapath-windows/ovsext/User.h | 5 +++-- > > 6 files changed, 29 insertions(+), 32 deletions(-) > > > >diff --git a/datapath-windows/ovsext/Actions.c > >b/datapath-windows/ovsext/Actions.c > >index bfe5d7f..b4644a7 100644 > >--- a/datapath-windows/ovsext/Actions.c > >+++ b/datapath-windows/ovsext/Actions.c > >@@ -566,9 +566,10 @@ OvsDoFlowLookupOutput(OvsForwardingContext > >*ovsFwdCtx) > > > > /* Assert that in the Rx direction, key is always setup. */ > > ASSERT(ovsFwdCtx->tunnelRxNic == NULL || ovsFwdCtx->tunKey.dst != 0); > >- status = OvsExtractFlow(ovsFwdCtx->curNbl, ovsFwdCtx->srcVportNo, > >- &key, &ovsFwdCtx->layers, > >ovsFwdCtx->tunKey.dst != 0 ? > >- &ovsFwdCtx->tunKey : NULL); > >+ status = > >+ OvsExtractFlow(ovsFwdCtx->curNbl, ovsFwdCtx->srcVportNo, > >+ &key, &ovsFwdCtx->layers, > >+ ovsFwdCtx->tunKey.dst != 0 ? &ovsFwdCtx->tunKey : > >NULL); > > if (status != NDIS_STATUS_SUCCESS) { > > OvsCompleteNBLForwardingCtx(ovsFwdCtx, > > L"OVS-Flow extract failed"); > >@@ -581,18 +582,17 @@ OvsDoFlowLookupOutput(OvsForwardingContext > >*ovsFwdCtx) > > OvsFlowUsed(flow, ovsFwdCtx->curNbl, &ovsFwdCtx->layers); > > ovsFwdCtx->switchContext->datapath.hits++; > > status = OvsActionsExecute(ovsFwdCtx->switchContext, > >- ovsFwdCtx->completionList, > >ovsFwdCtx->curNbl, > >- ovsFwdCtx->srcVportNo, > >ovsFwdCtx->sendFlags, > >- &key, &hash, &ovsFwdCtx->layers, > >- flow->actions, flow->actionsLen); > >+ ovsFwdCtx->completionList, > >ovsFwdCtx->curNbl, > >+ ovsFwdCtx->srcVportNo, > >ovsFwdCtx->sendFlags, > >+ &key, &hash, &ovsFwdCtx->layers, > >+ flow->actions, flow->actionsLen); > > ovsFwdCtx->curNbl = NULL; > > } else { > > LIST_ENTRY missedPackets; > > UINT32 num = 0; > > ovsFwdCtx->switchContext->datapath.misses++; > > InitializeListHead(&missedPackets); > >- status = OvsCreateAndAddPackets(NULL, 0, OVS_PACKET_CMD_MISS, > >- ovsFwdCtx->srcVportNo, > >+ status = OvsCreateAndAddPackets(NULL, 0, OVS_PACKET_CMD_MISS, > >vport, > > &key,ovsFwdCtx->curNbl, > > ovsFwdCtx->tunnelRxNic != NULL, > >&ovsFwdCtx->layers, > > ovsFwdCtx->switchContext, &missedPackets, > >&num); > >@@ -1530,7 +1530,7 @@ OvsActionsExecute(POVS_SWITCH_CONTEXT switchContext, > > elem = OvsCreateQueueNlPacket((PVOID)userdataAttr, > > userdataAttr->nlaLen, > > OVS_PACKET_CMD_ACTION, > >- portNo, key,ovsFwdCtx.curNbl, > >+ vport, key, ovsFwdCtx.curNbl, > > > >NET_BUFFER_LIST_FIRST_NB(ovsFwdCtx.curNbl), > > isRecv, > > layers); > >diff --git a/datapath-windows/ovsext/PacketIO.c > >b/datapath-windows/ovsext/PacketIO.c > >index d41335b..cfbae34 100644 > >--- a/datapath-windows/ovsext/PacketIO.c > >+++ b/datapath-windows/ovsext/PacketIO.c > >@@ -333,8 +333,8 @@ OvsStartNBLIngress(POVS_SWITCH_CONTEXT switchContext, > > * Otherwise, it adds it to the completionList. No need > >to > > * check the return value. */ > > OvsActionsExecute(switchContext, &completionList, curNbl, > >- portNo, SendFlags, &key, &hash, &layers, > >- flow->actions, flow->actionsLen); > >+ portNo, SendFlags, &key, &hash, > >&layers, > >+ flow->actions, flow->actionsLen); > > OvsReleaseDatapath(datapath, &dpLockState); > > NdisReleaseRWLock(switchContext->dispatchLock, > >&lockState); > > continue; > >@@ -343,7 +343,7 @@ OvsStartNBLIngress(POVS_SWITCH_CONTEXT switchContext, > > > > datapath->misses++; > > status = OvsCreateAndAddPackets(NULL, 0, > >OVS_PACKET_CMD_MISS, > >- portNo, &key, curNbl, > >+ vport, &key, curNbl, > > sourcePort == > >switchContext->virtualExternalPortId, > > &layers, switchContext, &missedPackets, > >&num); > > if (status == NDIS_STATUS_SUCCESS) { > >diff --git a/datapath-windows/ovsext/PacketIO.h > >b/datapath-windows/ovsext/PacketIO.h > >index 4d29a18..7247869 100644 > >--- a/datapath-windows/ovsext/PacketIO.h > >+++ b/datapath-windows/ovsext/PacketIO.h > >@@ -49,11 +49,11 @@ VOID OvsSendNBLIngress(POVS_SWITCH_CONTEXT > >switchContext, > > ULONG sendFlags); > > > > NDIS_STATUS OvsActionsExecute(POVS_SWITCH_CONTEXT switchContext, > >- OvsCompletionList *completionList, > >- PNET_BUFFER_LIST curNbl, UINT32 srcVportNo, > >- ULONG sendFlags, OvsFlowKey *key, UINT64 > >*hash, > >- OVS_PACKET_HDR_INFO *layers, > >- const PNL_ATTR actions, int actionsLen); > >+ OvsCompletionList *completionList, > >+ PNET_BUFFER_LIST curNbl, UINT32 srcVportNo, > >+ ULONG sendFlags, OvsFlowKey *key, UINT64 > >*hash, > >+ OVS_PACKET_HDR_INFO *layers, > >+ const PNL_ATTR actions, int actionsLen); > > > > VOID OvsLookupFlowOutput(POVS_SWITCH_CONTEXT switchContext, > > VOID *compList, PNET_BUFFER_LIST curNbl); > >diff --git a/datapath-windows/ovsext/Tunnel.c > >b/datapath-windows/ovsext/Tunnel.c > >index ffb9c01..eea4a84 100644 > >--- a/datapath-windows/ovsext/Tunnel.c > >+++ b/datapath-windows/ovsext/Tunnel.c > >@@ -309,8 +309,8 @@ OvsInjectPacketThroughActions(PNET_BUFFER_LIST pNbl, > > datapath->hits++; > > > > OvsActionsExecute(gOvsSwitchContext, &completionList, pNbl, > >- portNo, SendFlags, &key, &hash, &layers, > >- flow->actions, flow->actionsLen); > >+ portNo, SendFlags, &key, &hash, &layers, > >+ flow->actions, flow->actionsLen); > > > > OvsReleaseDatapath(datapath, &dpLockState); > > } else { > >@@ -318,8 +318,8 @@ OvsInjectPacketThroughActions(PNET_BUFFER_LIST pNbl, > > > > datapath->misses++; > > elem = OvsCreateQueueNlPacket(NULL, 0, OVS_PACKET_CMD_MISS, > >- portNo, &key, pNbl, curNb, > >- TRUE, &layers); > >+ vport, &key, pNbl, curNb, > >+ TRUE, &layers); > > if (elem) { > > /* Complete the packet since it was copied to user > >buffer. */ > > InsertTailList(&missedPackets, &elem->link); > >diff --git a/datapath-windows/ovsext/User.c > >b/datapath-windows/ovsext/User.c > >index 8045e9a..7af4816 100644 > >--- a/datapath-windows/ovsext/User.c > >+++ b/datapath-windows/ovsext/User.c > >@@ -772,7 +772,7 @@ NTSTATUS > > OvsCreateAndAddPackets(PVOID userData, > > UINT32 userDataLen, > > UINT32 cmd, > >- UINT32 inPort, > >+ POVS_VPORT_ENTRY vport, > > OvsFlowKey *key, > > PNET_BUFFER_LIST nbl, > > BOOLEAN isRecv, > >@@ -809,7 +809,7 @@ OvsCreateAndAddPackets(PVOID userData, > > nb = NET_BUFFER_LIST_FIRST_NB(nbl); > > while (nb) { > > elem = OvsCreateQueueNlPacket(userData, userDataLen, > >- cmd, inPort, key, nbl, nb, > >+ cmd, vport, key, nbl, nb, > > isRecv, hdrInfo); > > if (elem) { > > InsertTailList(list, &elem->link); > >@@ -988,7 +988,7 @@ POVS_PACKET_QUEUE_ELEM > > OvsCreateQueueNlPacket(PVOID userData, > > UINT32 userDataLen, > > UINT32 cmd, > >- UINT32 inPort, > >+ POVS_VPORT_ENTRY vport, > > OvsFlowKey *key, > > PNET_BUFFER_LIST nbl, > > PNET_BUFFER nb, > >@@ -1007,10 +1007,6 @@ OvsCreateQueueNlPacket(PVOID userData, > > NL_BUFFER nlBuf; > > PNL_MSG_HDR nlMsg; > > > >- /* XXX pass vport in the stack rather than portNo */ > >- POVS_VPORT_ENTRY vport = > >- OvsFindVportByPortNo(gOvsSwitchContext, inPort); > >- > > if (vport == NULL){ > > /* No vport is not fatal. */ > > return NULL; > >@@ -1062,7 +1058,7 @@ OvsCreateQueueNlPacket(PVOID userData, > > elem->packet.queue = 0; > > /* XXX no need as the length is already in the NL attrib */ > > elem->packet.userDataLen = userDataLen; > >- elem->packet.inPort = inPort; > >+ elem->packet.inPort = vport->portNo; > > elem->packet.cmd = cmd; > > if (cmd == (UINT32)OVS_PACKET_CMD_MISS) { > > ovsUserStats.miss++; > >diff --git a/datapath-windows/ovsext/User.h > >b/datapath-windows/ovsext/User.h > >index 139b0ca..9182585 100644 > >--- a/datapath-windows/ovsext/User.h > >+++ b/datapath-windows/ovsext/User.h > >@@ -72,7 +72,8 @@ VOID OvsCleanupPacketQueue(struct _OVS_OPEN_INSTANCE > >*instance); > > > > POVS_PACKET_QUEUE_ELEM OvsCreateQueueNlPacket(PVOID userData, > > UINT32 userDataLen, > >- UINT32 cmd, UINT32 inPort, > >+ UINT32 cmd, > >+ POVS_VPORT_ENTRY vport, > > OvsFlowKey *key, > > PNET_BUFFER_LIST nbl, > > PNET_BUFFER nb, > >@@ -83,7 +84,7 @@ VOID OvsQueuePackets(PLIST_ENTRY packetList, UINT32 > >numElems); > > NTSTATUS OvsCreateAndAddPackets(PVOID userData, > > UINT32 userDataLen, > > UINT32 cmd, > >- UINT32 inPort, > >+ POVS_VPORT_ENTRY vport, > > OvsFlowKey *key, > > PNET_BUFFER_LIST nbl, > > BOOLEAN isRecv, > >-- > >1.9.0.msysgit.0 > >_______________________________________________ > >dev mailing list > >[email protected] > >https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailma > >n_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Dc > >ruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmNR3JEQ&m=_QR6L-So8TGmFBV0A2IaeJNUdS4XN2 > >ehOcQku6idSxg&s=0PpPW_IBNlEugSSfP_sT2AbB9zvgGgxHLwolWUC_rtg&e= > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
