{"id":804186,"url":"http://patchwork.ozlabs.org/api/patches/804186/?format=json","web_url":"http://patchwork.ozlabs.org/project/openvswitch/patch/20170821214523.17860-1-rams@vmware.com/","project":{"id":47,"url":"http://patchwork.ozlabs.org/api/projects/47/?format=json","name":"Open vSwitch","link_name":"openvswitch","list_id":"ovs-dev.openvswitch.org","list_email":"ovs-dev@openvswitch.org","web_url":"http://openvswitch.org/","scm_url":"git@github.com:openvswitch/ovs.git","webscm_url":"https://github.com/openvswitch/ovs","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20170821214523.17860-1-rams@vmware.com>","list_archive_url":null,"date":"2017-08-21T21:45:23","name":"[ovs-dev] datapath-windows: Move OvsCreateNewNBLsFromMultipleNBs to BuggerMgmt","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"cd1a32b7e2ab5c1658ab35892df31ca8c82ee212","submitter":{"id":69910,"url":"http://patchwork.ozlabs.org/api/people/69910/?format=json","name":"Shashank Ram","email":"rams@vmware.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/openvswitch/patch/20170821214523.17860-1-rams@vmware.com/mbox/","series":[],"comments":"http://patchwork.ozlabs.org/api/patches/804186/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/804186/checks/","tags":{},"related":[],"headers":{"Return-Path":"<ovs-dev-bounces@openvswitch.org>","X-Original-To":["incoming@patchwork.ozlabs.org","dev@openvswitch.org"],"Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","ovs-dev@mail.linuxfoundation.org"],"Authentication-Results":"ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=openvswitch.org\n\t(client-ip=140.211.169.12; helo=mail.linuxfoundation.org;\n\tenvelope-from=ovs-dev-bounces@openvswitch.org;\n\treceiver=<UNKNOWN>)","Received":["from mail.linuxfoundation.org (mail.linuxfoundation.org\n\t[140.211.169.12])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xbnMN3qMBz9t1t\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 22 Aug 2017 07:46:40 +1000 (AEST)","from mail.linux-foundation.org (localhost [127.0.0.1])\n\tby mail.linuxfoundation.org (Postfix) with ESMTP id 390B5900;\n\tMon, 21 Aug 2017 21:46:36 +0000 (UTC)","from smtp1.linuxfoundation.org (smtp1.linux-foundation.org\n\t[172.17.192.35])\n\tby mail.linuxfoundation.org (Postfix) with ESMTPS id 391E68E3\n\tfor <dev@openvswitch.org>; Mon, 21 Aug 2017 21:46:35 +0000 (UTC)","from EX13-EDG-OU-001.vmware.com (ex13-edg-ou-001.vmware.com\n\t[208.91.0.189])\n\tby smtp1.linuxfoundation.org (Postfix) with ESMTPS id 21F1B460\n\tfor <dev@openvswitch.org>; Mon, 21 Aug 2017 21:46:35 +0000 (UTC)","from sc9-mailhost1.vmware.com (10.113.161.71) by\n\tEX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP\n\tServer id 15.0.1156.6; Mon, 21 Aug 2017 14:45:44 -0700","from localhost.localdomain (htb-1s-eng-dhcp79.eng.vmware.com\n\t[10.33.78.79])\n\tby sc9-mailhost1.vmware.com (Postfix) with ESMTP id 76F0718524;\n\tMon, 21 Aug 2017 14:46:34 -0700 (PDT)"],"X-Greylist":"domain auto-whitelisted by SQLgrey-1.7.6","From":"Shashank Ram <rams@vmware.com>","To":"<dev@openvswitch.org>","Date":"Mon, 21 Aug 2017 14:45:23 -0700","Message-ID":"<20170821214523.17860-1-rams@vmware.com>","X-Mailer":"git-send-email 2.9.3.windows.2","MIME-Version":"1.0","Received-SPF":"None (EX13-EDG-OU-001.vmware.com: rams@vmware.com does not\n\tdesignate permitted sender hosts)","Subject":"[ovs-dev] [PATCH] datapath-windows: Move\n\tOvsCreateNewNBLsFromMultipleNBs to BuggerMgmt","X-BeenThere":"ovs-dev@openvswitch.org","X-Mailman-Version":"2.1.12","Precedence":"list","List-Id":"<ovs-dev.openvswitch.org>","List-Unsubscribe":"<https://mail.openvswitch.org/mailman/options/ovs-dev>,\n\t<mailto:ovs-dev-request@openvswitch.org?subject=unsubscribe>","List-Archive":"<http://mail.openvswitch.org/pipermail/ovs-dev/>","List-Post":"<mailto:ovs-dev@openvswitch.org>","List-Help":"<mailto:ovs-dev-request@openvswitch.org?subject=help>","List-Subscribe":"<https://mail.openvswitch.org/mailman/listinfo/ovs-dev>,\n\t<mailto:ovs-dev-request@openvswitch.org?subject=subscribe>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"ovs-dev-bounces@openvswitch.org","Errors-To":"ovs-dev-bounces@openvswitch.org"},"content":"Moves function OvsCreateNewNBLsFromMultipleNBs() to BufferMgmt.c\nto facilitate consumption from outside PacketIO.c.\n\nSigned-off-by: Shashank Ram <rams@vmware.com>\n---\n datapath-windows/ovsext/BufferMgmt.c | 47 ++++++++++++++++++++++++++++++++++++\n datapath-windows/ovsext/BufferMgmt.h |  4 +++\n datapath-windows/ovsext/PacketIO.c   | 42 --------------------------------\n 3 files changed, 51 insertions(+), 42 deletions(-)\n\n--\n2.9.3.windows.2","diff":"diff --git a/datapath-windows/ovsext/BufferMgmt.c b/datapath-windows/ovsext/BufferMgmt.c\nindex 1ede4a3..5c9e562 100644\n--- a/datapath-windows/ovsext/BufferMgmt.c\n+++ b/datapath-windows/ovsext/BufferMgmt.c\n@@ -1783,3 +1783,50 @@ OvsGetCtxSourcePortNo(PNET_BUFFER_LIST nbl,\n     *portNo = ctx->srcPortNo;\n     return NDIS_STATUS_SUCCESS;\n }\n+\n+/*\n+ * --------------------------------------------------------------------------\n+ * OvsCreateNewNBLsFromMultipleNBs --\n+ *      Creates an NBL chain where each NBL has a single NB,\n+ *      from an NBL which has multiple NBs.\n+ *      Sets 'curNbl' and 'lastNbl' to the first and last NBL in the\n+ *      newly created NBL chain respectively, and completes the original NBL.\n+ * --------------------------------------------------------------------------\n+ */\n+NTSTATUS\n+OvsCreateNewNBLsFromMultipleNBs(POVS_SWITCH_CONTEXT switchContext,\n+                                PNET_BUFFER_LIST *curNbl,\n+                                PNET_BUFFER_LIST *lastNbl)\n+{\n+    NTSTATUS status = STATUS_SUCCESS;\n+    PNET_BUFFER_LIST newNbls = NULL;\n+    PNET_BUFFER_LIST nbl = NULL;\n+    BOOLEAN error = TRUE;\n+\n+    do {\n+        /* Create new NBLs from curNbl with multiple net buffers. */\n+        newNbls = OvsPartialCopyToMultipleNBLs(switchContext,\n+                                               *curNbl, 0, 0, TRUE);\n+        if (NULL == newNbls) {\n+            OVS_LOG_ERROR(\"Failed to allocate NBLs with single NB.\");\n+            status = NDIS_STATUS_RESOURCES;\n+            break;\n+        }\n+\n+        nbl = newNbls;\n+        while (nbl) {\n+            *lastNbl = nbl;\n+            nbl = NET_BUFFER_LIST_NEXT_NBL(nbl);\n+        }\n+\n+        (*curNbl)->Next = NULL;\n+\n+        OvsCompleteNBL(switchContext, *curNbl, TRUE);\n+\n+        *curNbl = newNbls;\n+\n+        error = FALSE;\n+    } while (error);\n+\n+    return status;\n+}\ndiff --git a/datapath-windows/ovsext/BufferMgmt.h b/datapath-windows/ovsext/BufferMgmt.h\nindex e6cc0fe..dcf310a 100644\n--- a/datapath-windows/ovsext/BufferMgmt.h\n+++ b/datapath-windows/ovsext/BufferMgmt.h\n@@ -141,4 +141,8 @@ NDIS_STATUS OvsSetCtxSourcePortNo(PNET_BUFFER_LIST nbl, UINT32 portNo);\n\n NDIS_STATUS OvsGetCtxSourcePortNo(PNET_BUFFER_LIST nbl, UINT32 *portNo);\n\n+NTSTATUS OvsCreateNewNBLsFromMultipleNBs(PVOID context,\n+                                         PNET_BUFFER_LIST *curNbl,\n+                                         PNET_BUFFER_LIST *lastNbl);\n+\n #endif /* __BUFFER_MGMT_H_ */\ndiff --git a/datapath-windows/ovsext/PacketIO.c b/datapath-windows/ovsext/PacketIO.c\nindex 81c574e..38e3e5f 100644\n--- a/datapath-windows/ovsext/PacketIO.c\n+++ b/datapath-windows/ovsext/PacketIO.c\n@@ -46,10 +46,6 @@ extern NDIS_STRING ovsExtFriendlyNameUC;\n static VOID OvsFinalizeCompletionList(OvsCompletionList *completionList);\n static VOID OvsCompleteNBLIngress(POVS_SWITCH_CONTEXT switchContext,\n                     PNET_BUFFER_LIST netBufferLists, ULONG sendCompleteFlags);\n-static NTSTATUS OvsCreateNewNBLsFromMultipleNBs(\n-                    POVS_SWITCH_CONTEXT switchContext,\n-                    PNET_BUFFER_LIST *curNbl,\n-                    PNET_BUFFER_LIST *lastNbl);\n\n VOID\n OvsInitCompletionList(OvsCompletionList *completionList,\n@@ -500,41 +496,3 @@ OvsExtCancelSendNBL(NDIS_HANDLE filterModuleContext,\n     /* All send requests get completed synchronously, so there is no need to\n      * implement this callback. */\n }\n-\n-static NTSTATUS\n-OvsCreateNewNBLsFromMultipleNBs(POVS_SWITCH_CONTEXT switchContext,\n-                                PNET_BUFFER_LIST *curNbl,\n-                                PNET_BUFFER_LIST *lastNbl)\n-{\n-    NTSTATUS status = STATUS_SUCCESS;\n-    PNET_BUFFER_LIST newNbls = NULL;\n-    PNET_BUFFER_LIST nbl = NULL;\n-    BOOLEAN error = TRUE;\n-\n-    do {\n-        /* Create new NBLs from curNbl with multiple net buffers. */\n-        newNbls = OvsPartialCopyToMultipleNBLs(switchContext,\n-                                               *curNbl, 0, 0, TRUE);\n-        if (NULL == newNbls) {\n-            OVS_LOG_ERROR(\"Failed to allocate NBLs with single NB.\");\n-            status = NDIS_STATUS_RESOURCES;\n-            break;\n-        }\n-\n-        nbl = newNbls;\n-        while (nbl) {\n-            *lastNbl = nbl;\n-            nbl = NET_BUFFER_LIST_NEXT_NBL(nbl);\n-        }\n-\n-        (*curNbl)->Next = NULL;\n-\n-        OvsCompleteNBL(switchContext, *curNbl, TRUE);\n-\n-        *curNbl = newNbls;\n-\n-        error = FALSE;\n-    } while (error);\n-\n-    return status;\n-}\n","prefixes":["ovs-dev"]}