Acked-by: Sorin Vinturis <svintu...@cloudbasesolutions.com> -----Original Message----- From: dev [mailto:dev-boun...@openvswitch.org] On Behalf Of Ankur Sharma Sent: Wednesday, October 22, 2014 3:25 AM To: dev@openvswitch.org Subject: [ovs-dev] [PATCH v2 3/6] datapath-windows: Calling OvsAddPidInstance and OvsDelPidInstance
Signed-off-by: Ankur Sharma <ankursha...@vmware.com> --- datapath-windows/ovsext/User.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/datapath-windows/ovsext/User.c b/datapath-windows/ovsext/User.c index 36787cd..6327959 100644 --- a/datapath-windows/ovsext/User.c +++ b/datapath-windows/ovsext/User.c @@ -136,9 +136,22 @@ OvsSubscribeDpIoctl(PVOID instanceP, POVS_USER_PACKET_QUEUE queue; POVS_OPEN_INSTANCE instance = (POVS_OPEN_INSTANCE)instanceP; + OvsAcquireCtrlLock(); + if (!gOvsSwitchContext) { + OvsReleaseCtrlLock(); + return STATUS_INVALID_PARAMETER; + } + OvsReleaseCtrlLock(); + if (instance->packetQueue && !join) { /* unsubscribe */ OvsCleanupPacketQueue(instance); + + OvsAcquireCtrlLock(); + /* Remove the instance from pidHashArray */ + OvsDelPidInstance(gOvsSwitchContext, pid); + OvsReleaseCtrlLock(); + } else if (instance->packetQueue == NULL && join) { queue = (POVS_USER_PACKET_QUEUE) OvsAllocateMemory(sizeof *queue); if (queue == NULL) { @@ -154,10 +167,17 @@ OvsSubscribeDpIoctl(PVOID instanceP, queue->instance = instance; instance->packetQueue = queue; NdisReleaseSpinLock(&queue->queueLock); + + OvsAcquireCtrlLock(); + /* Insert the instance to pidHashArray */ + OvsAddPidInstance(gOvsSwitchContext, pid, instance); + OvsReleaseCtrlLock(); + } else { /* user mode should call only once for subscribe */ return STATUS_INVALID_PARAMETER; } + return STATUS_SUCCESS; } -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev