Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1555098/?format=api
{ "id": 1555098, "url": "http://patchwork.ozlabs.org/api/patches/1555098/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/patch/20211115025312.786953-4-cmi@nvidia.com/", "project": { "id": 47, "url": "http://patchwork.ozlabs.org/api/projects/47/?format=api", "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": "<20211115025312.786953-4-cmi@nvidia.com>", "list_archive_url": null, "date": "2021-11-15T02:53:07", "name": "[ovs-dev,v18,3/8] dpif-offload-provider: Introduce dpif-offload-provider layer", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "71283dfda31b4c7fa04d6c2628262826c6ecb5ce", "submitter": { "id": 80086, "url": "http://patchwork.ozlabs.org/api/people/80086/?format=api", "name": "Chris Mi", "email": "cmi@nvidia.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/openvswitch/patch/20211115025312.786953-4-cmi@nvidia.com/mbox/", "series": [ { "id": 271987, "url": "http://patchwork.ozlabs.org/api/series/271987/?format=api", "web_url": "http://patchwork.ozlabs.org/project/openvswitch/list/?series=271987", "date": "2021-11-15T02:53:04", "name": "Add offload support for sFlow", "version": 18, "mbox": "http://patchwork.ozlabs.org/series/271987/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1555098/comments/", "check": "success", "checks": "http://patchwork.ozlabs.org/api/patches/1555098/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@lists.linuxfoundation.org" ], "Authentication-Results": [ "bilbo.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=DjsD05An;\n\tdkim-atps=neutral", "ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=140.211.166.137; helo=smtp4.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN>)" ], "Received": [ "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby bilbo.ozlabs.org (Postfix) with ESMTPS id 4Hstzx39X7z9s5P\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 15 Nov 2021 13:53:33 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 85E7340300;\n\tMon, 15 Nov 2021 02:53:31 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n\tby localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id fHzTJKsGXu0N; Mon, 15 Nov 2021 02:53:30 +0000 (UTC)", "from lists.linuxfoundation.org (lf-lists.osuosl.org\n [IPv6:2605:bc80:3010:104::8cd3:938])\n\tby smtp4.osuosl.org (Postfix) with ESMTPS id 8601A402BA;\n\tMon, 15 Nov 2021 02:53:29 +0000 (UTC)", "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 4C2BCC002E;\n\tMon, 15 Nov 2021 02:53:29 +0000 (UTC)", "from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n by lists.linuxfoundation.org (Postfix) with ESMTP id AD14DC002E\n for <dev@openvswitch.org>; Mon, 15 Nov 2021 02:53:27 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id A96C4402A4\n for <dev@openvswitch.org>; Mon, 15 Nov 2021 02:53:27 +0000 (UTC)", "from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id cqg2xje46ba4 for <dev@openvswitch.org>;\n Mon, 15 Nov 2021 02:53:26 +0000 (UTC)", "from NAM10-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam10on2061f.outbound.protection.outlook.com\n [IPv6:2a01:111:f400:7e89::61f])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 9F4AB401EF\n for <dev@openvswitch.org>; Mon, 15 Nov 2021 02:53:26 +0000 (UTC)", "from DM6PR01CA0001.prod.exchangelabs.com (2603:10b6:5:296::6) by\n DM6PR12MB3770.namprd12.prod.outlook.com (2603:10b6:5:1c4::19) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.4690.26; Mon, 15 Nov 2021 02:53:23 +0000", "from DM6NAM11FT013.eop-nam11.prod.protection.outlook.com\n (2603:10b6:5:296:cafe::57) by DM6PR01CA0001.outlook.office365.com\n (2603:10b6:5:296::6) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.26 via Frontend\n Transport; Mon, 15 Nov 2021 02:53:23 +0000", "from mail.nvidia.com (216.228.112.35) by\n DM6NAM11FT013.mail.protection.outlook.com (10.13.173.142) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id\n 15.20.4690.15 via Frontend Transport; Mon, 15 Nov 2021 02:53:23 +0000", "from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL111.nvidia.com\n (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 15 Nov\n 2021 02:53:22 +0000", "from dev-r630-03.lab.mtl.com (172.20.187.5) by mail.nvidia.com\n (172.20.187.10) with Microsoft SMTP Server id 15.0.1497.18 via Frontend\n Transport; Mon, 15 Nov 2021 02:53:20 +0000" ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "whitelisted by SQLgrey-1.8.0", "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=FSOSF5L5biCXtmP18NXK6gK1KjgTrnxgqAkswIfYGbWhRFwsB6s8ddlPMZkJFKXdi3L46GFY1yex1Colm6+W8I7vm04W+hccM3tUky1fal7tME354PmTsmvlXVbMYWFVKx6Hh4y2/joUA+1t3aOPJG6D5jS4UIWmulxvv0cnBX4YsfvWuNJ2/VsnHdlgAGs39e54q2aaJyIH2YkjS/UBvHouCB9tY1ztqW7ReN1WgKtX+b9wYyqo3mDK5u2RNNzQLgy84EzD2V6NIh0X9sOOkBWy3LoWk8Lyt8PEkr+fkl1BrOR2Xxaz65oC3GWdSph22LO6OwtpLi5WyGy3OhjpbA==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=wVrkbRGr/ckOn+NTbjoxZtwE8Pe97Lo4DaOxXcqNUjc=;\n b=btyFkvgpYFW9HvA/XZvHFiyVcnh3u6iISKjEjcSdQurG3cpCymOvZDwLj3keMC93KSeRILB0HXkGNfGrF92lkOLxOu3YSycF08gLXIYMWag3v0QneXBt5hbFVac3kdjhGBAse38WEm2RSL0E03z0YyeLYzxJQG2lpR4sNkE6Q7vCluTga3cnq2JMfAoHX0J0iOy7q4ToGUfi6+GP9WNJEIjQx4b1ukctBYSlG41Bbk6LOelX0iLkx0hsHqMFgqlQMhqtNURgOSziQ2Qgs1wG+Ayi7hBG97dF3IlSkSZa9PGVxTX4/tueHI84fZ/pRt5B+yJ+xZb2UaeIUYa810wHcQ==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.112.35) smtp.rcpttodomain=ovn.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n header.from=nvidia.com; dkim=none (message not signed); arc=none", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=wVrkbRGr/ckOn+NTbjoxZtwE8Pe97Lo4DaOxXcqNUjc=;\n b=DjsD05Anfq5zwwgxWEOism22D9UZGytEMg6NX22TQ+ME5dobTPcDbKHn8Vf1x/KqBxTQAWGBZ+2/MeVXmt4494P/4vq/LQUTYIUXUB0VmW18mMawhRduCLrPNyDQ1FIHnNs63P2CV2b8gI3OGbsXMIfkMcLjUcjyri/xMqnNddfvmUgpkjIlJR+FHagoJ4mOjoAW/EtivapojDzQ3z5ObHf6RC1mCTYbxG5B00Q6d4GwhS5BSG2NYP3DOpxCPoD1E3XZuqR1NZmEe5SNCLDFr//FOpp66VFtz12NCoeqbM6QHHyEbQUDRDuZYKObGuIh27SfMJIsuVUt/4iOOL2F1A==", "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.112.35)\n smtp.mailfrom=nvidia.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;", "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.112.35 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.112.35; helo=mail.nvidia.com;", "To": "<dev@openvswitch.org>", "Date": "Mon, 15 Nov 2021 10:53:07 +0800", "Message-ID": "<20211115025312.786953-4-cmi@nvidia.com>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20211115025312.786953-1-cmi@nvidia.com>", "References": "<20211115025312.786953-1-cmi@nvidia.com>", "MIME-Version": "1.0", "X-EOPAttributedMessage": "0", "X-MS-PublicTrafficType": "Email", "X-MS-Office365-Filtering-Correlation-Id": "66d58190-25d0-4cd3-2c00-08d9a7e31703", "X-MS-TrafficTypeDiagnostic": "DM6PR12MB3770:", "X-Microsoft-Antispam-PRVS": "\n <DM6PR12MB3770DB428DC4DEBDE99707F2CF989@DM6PR12MB3770.namprd12.prod.outlook.com>", "X-MS-Oob-TLC-OOBClassifiers": "OLM:5797;", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;", "X-Microsoft-Antispam-Message-Info": "\n nvt1CtXMN/Lk1F6DueVJ7u9iCegvvzMiNaQbdLC1V0Ez8DQMNVaC9S1UQqo+9Bg5v5KLfsP1ko3ur9stfY+ZvQKo7PTnCKHTKqrGC30pXCQZEI2yAV+/cJLcsefXcnARnIh+jYMJb2sZ92zqbuQWT84AU06TZ58/YZEIMbpZqyFsXPu578fTNPBAyixfe7spVEnUJYFtdD8om8l6306ZtZ29kEcn7U3IzX7sdiG3yRIpd39vA9sEBO/ENhl+XXX7ealVgurQV3zyXuWy0SHkHGmUReo3zLtCpcvomYSz921I4uD46FcVxCgk7tY7+cfamVo4dqS5hmtBlBDNmfCZgnkALeeHUp5DsxcgD0pjaOiXDqoMHvFw10V9ZkbuwrNYGHOQzK0OkJiPAgBzoziYzR+N+XiKz7pUnejRHudDbbrumGwNsZW7wgGEn5XCtp0zE6A9Xo63XjjzYzgj7lq8qLi1wPDWLVenyY9pyxfolldt2gf4LHndZm3+tDBsHizcbxl3L0ZUX15HOpGyaUtzQQADpdbrzjYH66dDd5WNWcfVc1pcnKXLCO0HPtpCU5XI6aB1r/5SA8VMz1TqBfXxiq5V3cbHTWCarS66apmhUjQ8iHaco2RneogBB3epgQDuq9C+nR+4zo0boj+CNpboexcJvIJfkytn5HgbesHeYvq1bpgYHrkm5yvX0U4XGDcyw+ZQb9DD80QdqOh/hV3+FKTtATfdQIZGNRqpuXC0+qqAFMXu83bsXHseM/GXNP40+DG2g9rI5N7MZjp7/4MrBaAt42IPSZnR1AMdFQUhMVY=", "X-Forefront-Antispam-Report": "CIP:216.228.112.35; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid04.nvidia.com; CAT:NONE;\n SFS:(4636009)(46966006)(36840700001)(86362001)(336012)(36756003)(7636003)(36860700001)(4326008)(107886003)(966005)(426003)(8676002)(5660300002)(2906002)(2616005)(186003)(47076005)(316002)(82310400003)(6916009)(6666004)(26005)(356005)(54906003)(70586007)(1076003)(8936002)(70206006)(508600001)(83380400001);\n DIR:OUT; SFP:1101;", "X-OriginatorOrg": "Nvidia.com", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "15 Nov 2021 02:53:23.4005 (UTC)", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 66d58190-25d0-4cd3-2c00-08d9a7e31703", "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a", "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.35];\n Helo=[mail.nvidia.com]", "X-MS-Exchange-CrossTenant-AuthSource": "\n DM6NAM11FT013.eop-nam11.prod.protection.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM6PR12MB3770", "Cc": "elibr@nvidia.com, simon.horman@netronome.com, roniba@nvidia.com,\n i.maximets@ovn.org", "Subject": "[ovs-dev] [PATCH v18 3/8] dpif-offload-provider: Introduce\n\tdpif-offload-provider layer", "X-BeenThere": "ovs-dev@openvswitch.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "<ovs-dev.openvswitch.org>", "List-Unsubscribe": "<https://mail.openvswitch.org/mailman/options/ovs-dev>,\n <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 <mailto:ovs-dev-request@openvswitch.org?subject=subscribe>", "From": "Chris Mi via dev <ovs-dev@openvswitch.org>", "Reply-To": "Chris Mi <cmi@nvidia.com>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "ovs-dev-bounces@openvswitch.org", "Sender": "\"dev\" <ovs-dev-bounces@openvswitch.org>" }, "content": "Some offload actions require functionality that is not netdev\nbased, but dpif. For example, sFlow action requires to create\na psample netlink socket to receive the sampled packets from\nTC or kernel driver.\n\nCreate dpif-offload-provider layer to support such actions.\n\nSigned-off-by: Chris Mi <cmi@nvidia.com>\nReviewed-by: Eli Britstein <elibr@nvidia.com>\n---\n lib/automake.mk | 2 ++\n lib/dpif-offload-provider.h | 52 +++++++++++++++++++++++++++++++++++++\n lib/dpif-offload.c | 43 ++++++++++++++++++++++++++++++\n lib/dpif-provider.h | 4 ++-\n 4 files changed, 100 insertions(+), 1 deletion(-)\n create mode 100644 lib/dpif-offload-provider.h\n create mode 100644 lib/dpif-offload.c", "diff": "diff --git a/lib/automake.mk b/lib/automake.mk\nindex 46f869a33..9259f57de 100644\n--- a/lib/automake.mk\n+++ b/lib/automake.mk\n@@ -127,6 +127,8 @@ lib_libopenvswitch_la_SOURCES = \\\n \tlib/dpif-netdev-private.h \\\n \tlib/dpif-netdev-perf.c \\\n \tlib/dpif-netdev-perf.h \\\n+\tlib/dpif-offload.c \\\n+\tlib/dpif-offload-provider.h \\\n \tlib/dpif-provider.h \\\n \tlib/dpif.c \\\n \tlib/dpif.h \\\ndiff --git a/lib/dpif-offload-provider.h b/lib/dpif-offload-provider.h\nnew file mode 100644\nindex 000000000..3b94740df\n--- /dev/null\n+++ b/lib/dpif-offload-provider.h\n@@ -0,0 +1,52 @@\n+/*\n+ * Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at:\n+ *\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+#ifndef DPIF_OFFLOAD_PROVIDER_H\n+#define DPIF_OFFLOAD_PROVIDER_H\n+\n+struct dpif;\n+struct dpif_offload_sflow;\n+\n+/* Datapath interface offload structure, to be defined by each implementation\n+ * of a datapath interface.\n+ */\n+struct dpif_offload_class {\n+ /* Type of dpif offload in this class, e.g. \"system\", \"netdev\", etc.\n+ *\n+ * One of the providers should supply a \"system\" type, since this is\n+ * the type assumed if no type is specified when opening a dpif. */\n+ const char *type;\n+\n+ /* Called when the dpif offload provider is registered. */\n+ int (*init)(void);\n+\n+ /* Free all dpif offload resources. */\n+ void (*destroy)(void);\n+\n+ /* Arranges for the poll loop for an upcall handler to wake up when psample\n+ * has a message queued to be received. */\n+ void (*sflow_recv_wait)(void);\n+\n+ /* Polls for an upcall from psample for an upcall handler.\n+ * Return 0 for success. */\n+ int (*sflow_recv)(struct dpif_offload_sflow *sflow);\n+};\n+\n+void dpif_offload_sflow_recv_wait(const struct dpif *dpif);\n+int dpif_offload_sflow_recv(const struct dpif *dpif,\n+ struct dpif_offload_sflow *sflow);\n+\n+#endif /* DPIF_OFFLOAD_PROVIDER_H */\ndiff --git a/lib/dpif-offload.c b/lib/dpif-offload.c\nnew file mode 100644\nindex 000000000..f2bf3e634\n--- /dev/null\n+++ b/lib/dpif-offload.c\n@@ -0,0 +1,43 @@\n+/*\n+ * Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at:\n+ *\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+#include <config.h>\n+#include <errno.h>\n+\n+#include \"dpif-provider.h\"\n+\n+void\n+dpif_offload_sflow_recv_wait(const struct dpif *dpif)\n+{\n+ const struct dpif_offload_class *offload_class = dpif->offload_class;\n+\n+ if (offload_class && offload_class->sflow_recv_wait) {\n+ offload_class->sflow_recv_wait();\n+ }\n+}\n+\n+int\n+dpif_offload_sflow_recv(const struct dpif *dpif,\n+ struct dpif_offload_sflow *sflow)\n+{\n+ const struct dpif_offload_class *offload_class = dpif->offload_class;\n+\n+ if (offload_class && offload_class->sflow_recv) {\n+ return offload_class->sflow_recv(sflow);\n+ }\n+\n+ return EOPNOTSUPP;\n+}\ndiff --git a/lib/dpif-provider.h b/lib/dpif-provider.h\nindex 27e3a7658..37b3d3618 100644\n--- a/lib/dpif-provider.h\n+++ b/lib/dpif-provider.h\n@@ -22,8 +22,9 @@\n * exposed over OpenFlow as a single switch. Datapaths and the collections of\n * ports that they contain may be fixed or dynamic. */\n \n-#include \"openflow/openflow.h\"\n #include \"dpif.h\"\n+#include \"dpif-offload-provider.h\"\n+#include \"openflow/openflow.h\"\n #include \"util.h\"\n \n #ifdef __cplusplus\n@@ -35,6 +36,7 @@ extern \"C\" {\n * This structure should be treated as opaque by dpif implementations. */\n struct dpif {\n const struct dpif_class *dpif_class;\n+ const struct dpif_offload_class *offload_class;\n char *base_name;\n char *full_name;\n uint8_t netflow_engine_type;\n", "prefixes": [ "ovs-dev", "v18", "3/8" ] }