[ovs-dev] [PATCH 6/7] datapath-windows: Some fixes in vport get code

Ankur Sharma ankursharma at vmware.com
Sat Oct 4 00:04:50 UTC 2014


Acked-by: Ankur Sharma <ankursharma at vmware.com>
________________________________________
From: dev <dev-bounces at openvswitch.org> on behalf of Nithin Raju <nithin at vmware.com>
Sent: Tuesday, September 30, 2014 6:00 PM
To: dev at openvswitch.org
Subject: [ovs-dev] [PATCH 6/7] datapath-windows: Some fixes in vport get code

In this patch, we make some fixes in the vport get code as well as
elevating some utility functions from static to non-static.

Signed-off-by: Nithin Raju <nithin at vmware.com>
---
 datapath-windows/ovsext/Datapath.c |   17 ++++++++++++-----
 datapath-windows/ovsext/Datapath.h |    8 ++++++++
 2 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c
index 625ead7..a68f0c6 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -1269,7 +1269,7 @@ OvsSetupDumpStart(POVS_USER_PARAMS_CONTEXT usrParamsCtx)

 static VOID
 BuildMsgOut(POVS_MESSAGE msgIn, POVS_MESSAGE msgOut, UINT16 type,
-                     UINT32 length, UINT16 flags)
+            UINT32 length, UINT16 flags)
 {
     msgOut->nlMsg.nlmsgType = type;
     msgOut->nlMsg.nlmsgFlags = flags;
@@ -1278,18 +1278,23 @@ BuildMsgOut(POVS_MESSAGE msgIn, POVS_MESSAGE msgOut, UINT16 type,
     msgOut->nlMsg.nlmsgLen = length;

     msgOut->genlMsg.cmd = msgIn->genlMsg.cmd;
-    msgOut->genlMsg.version = nlDatapathFamilyOps.version;
+    msgOut->genlMsg.version = msgIn->genlMsg.version;
     msgOut->genlMsg.reserved = 0;
 }

-static VOID
+/*
+ * XXX: should move out these functions to a Netlink.c or to a OvsMessage.c
+ * or even make them inlined functions in Datapath.h. Can be done after the
+ * first sprint once we have more code to refactor.
+ */
+VOID
 BuildReplyMsgFromMsgIn(POVS_MESSAGE msgIn, POVS_MESSAGE msgOut, UINT16 flags)
 {
     BuildMsgOut(msgIn, msgOut, msgIn->nlMsg.nlmsgType, sizeof(OVS_MESSAGE),
                 flags);
 }

-static VOID
+VOID
 BuildErrorMsg(POVS_MESSAGE msgIn, POVS_MESSAGE_ERROR msgOut, UINT errorCode)
 {
     BuildMsgOut(msgIn, (POVS_MESSAGE)msgOut, NLMSG_ERROR,
@@ -1545,6 +1550,7 @@ OvsGetVport(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
     }
     OvsReleaseCtrlLock();

+    NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState, 0);
     if (vportAttrs[OVS_VPORT_ATTR_NAME] != NULL) {
         vport = OvsFindVportByOvsName(gOvsSwitchContext,
             NlAttrGet(vportAttrs[OVS_VPORT_ATTR_NAME]),
@@ -1554,15 +1560,16 @@ OvsGetVport(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
             NlAttrGetU32(vportAttrs[OVS_VPORT_ATTR_PORT_NO]));
     } else {
         nlError = NL_ERROR_INVAL;
+        NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
         goto Cleanup;
     }

     if (!vport) {
         nlError = NL_ERROR_NODEV;
+        NdisReleaseRWLock(gOvsSwitchContext->dispatchLock, &lockState);
         goto Cleanup;
     }

-    NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState, 0);
     status = OvsCreateMsgFromVport(vport, msgIn, usrParamsCtx->outputBuffer,
                                    usrParamsCtx->outputLength,
                                    gOvsSwitchContext->dpNo);
diff --git a/datapath-windows/ovsext/Datapath.h b/datapath-windows/ovsext/Datapath.h
index 689e0ae..1e87e65 100644
--- a/datapath-windows/ovsext/Datapath.h
+++ b/datapath-windows/ovsext/Datapath.h
@@ -83,6 +83,14 @@ POVS_OPEN_INSTANCE OvsGetOpenInstance(PFILE_OBJECT fileObject,

 NTSTATUS OvsCompleteIrpRequest(PIRP irp, ULONG_PTR infoPtr, NTSTATUS status);

+VOID OvsAcquireCtrlLock();
+VOID OvsReleaseCtrlLock();
+
+/* XXX: Move this to netlink.[ch] eventually. */
+VOID BuildReplyMsgFromMsgIn(POVS_MESSAGE msgIn, POVS_MESSAGE msgOut,
+                            UINT16 flags);
+VOID BuildErrorMsg(POVS_MESSAGE msgIn, POVS_MESSAGE_ERROR msgOut,
+                   UINT errorCode);

 /*
  * Utility structure and functions to collect in one place all the parameters
--
1.7.4.1

_______________________________________________
dev mailing list
dev at openvswitch.org
https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=f6EhnZ0ORGZNt5QbYmRaOxfWfx%2Bqd3KEiPf3%2FYaollU%3D%0A&m=NE9iNxp5maDAoYq%2F2VEaZk5tDhk6J0%2FEtbXvUODvgBg%3D%0A&s=d6d73a7d623ddfadd33a09dc47a0655bd0abc722d0e9807fb0e713834d06235b


More information about the dev mailing list