get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2218456/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2218456,
    "url": "http://patchwork.ozlabs.org/api/patches/2218456/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/openvswitch/patch/20260401091318.2671624-11-elibr@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": "<20260401091318.2671624-11-elibr@nvidia.com>",
    "list_archive_url": null,
    "date": "2026-04-01T09:13:17",
    "name": "[ovs-dev,v3,10/11] acinclude.m4: Add '--with-doca' option.",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "a5b69a4ac6888b199874bbee5c359a75140b612e",
    "submitter": {
        "id": 79848,
        "url": "http://patchwork.ozlabs.org/api/people/79848/?format=api",
        "name": "Eli Britstein",
        "email": "elibr@nvidia.com"
    },
    "delegate": {
        "id": 75123,
        "url": "http://patchwork.ozlabs.org/api/users/75123/?format=api",
        "username": "echaudron",
        "first_name": "Eelco",
        "last_name": "Chaudron",
        "email": "echaudro@redhat.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/openvswitch/patch/20260401091318.2671624-11-elibr@nvidia.com/mbox/",
    "series": [
        {
            "id": 498297,
            "url": "http://patchwork.ozlabs.org/api/series/498297/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/openvswitch/list/?series=498297",
            "date": "2026-04-01T09:13:07",
            "name": "netdev-doca",
            "version": 3,
            "mbox": "http://patchwork.ozlabs.org/series/498297/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2218456/comments/",
    "check": "success",
    "checks": "http://patchwork.ozlabs.org/api/patches/2218456/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@legolas.ozlabs.org",
            "ovs-dev@lists.linuxfoundation.org"
        ],
        "Authentication-Results": [
            "legolas.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=pTuBRooV;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org\n (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=patchwork.ozlabs.org)",
            "smtp1.osuosl.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=pTuBRooV",
            "smtp1.osuosl.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com"
        ],
        "Received": [
            "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4flzr668BXz1yGH\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 01 Apr 2026 20:16:22 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id 6E0C582016;\n\tWed,  1 Apr 2026 09:16:21 +0000 (UTC)",
            "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id HwVj8gWSVH1J; Wed,  1 Apr 2026 09:16:19 +0000 (UTC)",
            "from lists.linuxfoundation.org (lf-lists.osuosl.org\n [IPv6:2605:bc80:3010:104::8cd3:938])\n\tby smtp1.osuosl.org (Postfix) with ESMTPS id 5055781DEF;\n\tWed,  1 Apr 2026 09:16:19 +0000 (UTC)",
            "from lf-lists.osuosl.org (localhost [127.0.0.1])\n\tby lists.linuxfoundation.org (Postfix) with ESMTP id 38E72C0070;\n\tWed,  1 Apr 2026 09:16:19 +0000 (UTC)",
            "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n by lists.linuxfoundation.org (Postfix) with ESMTP id 6C481C0070\n for <dev@openvswitch.org>; Wed,  1 Apr 2026 09:16:18 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id EFACD81DEF\n for <dev@openvswitch.org>; Wed,  1 Apr 2026 09:15:26 +0000 (UTC)",
            "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id dI_pEiYQJqzI for <dev@openvswitch.org>;\n Wed,  1 Apr 2026 09:15:25 +0000 (UTC)",
            "from SN4PR0501CU005.outbound.protection.outlook.com\n (mail-southcentralusazlp170110003.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c10d::3])\n by smtp1.osuosl.org (Postfix) with ESMTPS id 6138E81DF3\n for <dev@openvswitch.org>; Wed,  1 Apr 2026 09:15:25 +0000 (UTC)",
            "from PH1PEPF000132EA.NAMP220.PROD.OUTLOOK.COM (2603:10b6:518:1::2e)\n by BL1PR12MB5899.namprd12.prod.outlook.com (2603:10b6:208:397::19)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 1 Apr\n 2026 09:15:15 +0000",
            "from SA2PEPF000015CB.namprd03.prod.outlook.com\n (2a01:111:f403:c801::5) by PH1PEPF000132EA.outlook.office365.com\n (2603:1036:903:47::3) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.28 via Frontend Transport; Wed,\n 1 Apr 2026 09:15:14 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n SA2PEPF000015CB.mail.protection.outlook.com (10.167.241.201) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9769.17 via Frontend Transport; Wed, 1 Apr 2026 09:15:14 +0000",
            "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 1 Apr\n 2026 02:14:55 -0700",
            "from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Wed, 1 Apr\n 2026 02:14:52 -0700"
        ],
        "X-Virus-Scanned": [
            "amavis at osuosl.org",
            "amavis at osuosl.org"
        ],
        "X-Comment": "SPF check N/A for local connections -\n client-ip=2605:bc80:3010:104::8cd3:938; helo=lists.linuxfoundation.org;\n envelope-from=ovs-dev-bounces@openvswitch.org; receiver=<UNKNOWN> ",
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 smtp1.osuosl.org 5055781DEF",
            "OpenDKIM Filter v2.11.0 smtp1.osuosl.org 6138E81DF3"
        ],
        "Received-SPF": [
            "Pass (mailfrom) identity=mailfrom;\n client-ip=2a01:111:f403:c10d::3;\n helo=sn4pr0501cu005.outbound.protection.outlook.com;\n envelope-from=elibr@nvidia.com; receiver=<UNKNOWN>",
            "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.161 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp1.osuosl.org 6138E81DF3",
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Ac+GfkuSuljUknDP8YfPgV4QJEfIeSjgGuHI+rcl/RJ5o4IuTGSKAbkW4C7Cicmr9watcQtnS3XZCDvq+dNHQxBSwvopbNescYwxBp4J7diNuqmZ5ixfA/DYjn53dN0vWiqYc8yRQawiqDbTDFtgUUI/1+mjgD0OA2hUGQdmdh/AyHVzZCdZtAharYiA+DjbCg0gGDw76rxSUORYzQKJSTPF2sH6N4lzi/1YG45Tiyhbtraeqr6ty0UxfkDqVSJghEdZXfm+ODPJxN6tGErs+yAhijlwCuxheV4NroHM9tWkrA31M9MrrEHJADwuSMT1h61hzIACPA0/J9Wf2P5d2w==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\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=J1gdZhWuet6S+390boHU1C4sls7ts8v4vvD5YjHFBgk=;\n b=uXMVKd0e+kSHf/eznCa++c40hSqGCbJAOSXfs2sAswMWOE+u2PfrKrt6uW+WOOEhtUYO5DWW8qDgbsVo9UafBMaxXTPROZ3091XKqB1f+R7Dd7Yeg8hH689YarFFDcW2T+bhOcgMp1I/qLYFh6vdwb0nDVzqsVC2SfBwS0ol69fajU916hBeI2oqOka8BAa0M9QXMW5qgf8puYpd5+NyM3oU1rG4prBeH2MRP7zGvdXOdGSbtIcCwDkHh8j+iBMthwAV3BmiFUSCpQWVrvGwTxgwZCNhMiVQayP48qEDmEwqNwVUYWY+HuUy8qw4kSuF1sw2lU9fAyQIGsUH80Bt2Q==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.161) smtp.rcpttodomain=openvswitch.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none (0)",
        "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=J1gdZhWuet6S+390boHU1C4sls7ts8v4vvD5YjHFBgk=;\n b=pTuBRooVjyb1aPJcte01j0Ho19bzGhZb1afEoKvtePYsQhvXf7qkIeXN0gy3rKeFZiRYyZh5kIEjM9ia0un/0uVaQBD7of4g9OlXRav+JpTL6crlWcR3dtsIJ7pTkBNCizrV42NsEoWWUZDKMpFU3EGXWC49hujzbqnUNJ3V0y7knAzv75rlruoWKK1JPPc3R+SwWywtHom9iVvaOJCDAd3ldhk3UtL7CJ63W258uWdKIKDionp6IoDM0xEjDJ7iOMTCNLj1+oYa/TAwWmpiE/bXcIG8+frtq8laR2ADkes5DFvCt2ZQ8ucsdQZWiXUEqOczVs07gJ5QiMQwzx72Bg==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.161)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "From": "Eli Britstein <elibr@nvidia.com>",
        "To": "<dev@openvswitch.org>",
        "Date": "Wed, 1 Apr 2026 12:13:17 +0300",
        "Message-ID": "<20260401091318.2671624-11-elibr@nvidia.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20260401091318.2671624-1-elibr@nvidia.com>",
        "References": "<20260401091318.2671624-1-elibr@nvidia.com>",
        "MIME-Version": "1.0",
        "X-Originating-IP": "[10.126.231.35]",
        "X-ClientProxiedBy": "rnnvmail203.nvidia.com (10.129.68.9) To\n rnnvmail201.nvidia.com (10.129.68.8)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "SA2PEPF000015CB:EE_|BL1PR12MB5899:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "556857ba-c0e2-4e97-b675-08de8fcf2f55",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|36860700016|376014|82310400026|1800799024|13003099007|18002099003|56012099003|22082099003;",
        "X-Microsoft-Antispam-Message-Info": "\n nImoXpXE5f4KagG6MA+kmrB42i44WtP02/85R1ldcBa87EGQSQTUYaWBDrO20XDLCJsXwnzCBFrFbF9LkjP/iNzuYfFk9iFVwLWmVk2qtrVMBilu/97inZmrgj8vCMfFjsPjHgp5ALr6tDuv90eJQg1vtcgkRXOx1ZIJ8hNz4lZUR3gle+5PG1KLEv7jQYmqmhb9N1gwL6FY1Z4b0JLCHVN3W0pBN85LoNhomeCs72G1ib1BbFsu4LTl2a40cb5wv54bzJjEtaJ1n4EBJhEyuukDY0QpdVnXbV7Pjui4XGyGjRLN5Oe5+MBrX7NbaF8gZiCcGa97IyY6X+bx21PO3nD5JH1pep/zzIIf6oBW0KC06He8q8O688bLN6gP2uCqsMNBtH3chZhoH5esrjAC/pCLjK58CIZ8MVMSu9mwnHmUgPT9Eu3Ro5/lCmR+SzmJeA7v5TbAEWlIajJqPH3Ys3pqLEMB7vZzI3fSAAmJOLjUmtBsoKtBEKz7ocGoyKt4mDnvW0cgF6SCS3HEyz8gSI/vGVUabJX6BaMxbGSe7Owt0tUkAZR8kGnDWeMaaupE4qI1jDFC1E3afnXSmXODxBCIVqlsdkNygsGHzSzGlBX/lsSHI4OS7z/Kh1jdNXHuMyclgSbU4edXLpt8phmBHmEx6nA/bRtvRKpyFDLKICicx7bMm11hHIcrZ1BpZcEOxWRWl8NwB/afozzhLgj3l73EgEaHS8pFXUoNOoZG8tQdJ0JLXbTEjINADL2Er8wZh/tTUkPHC8hop6H4m+55qQ==",
        "X-Forefront-Antispam-Report": "CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE;\n SFS:(13230040)(36860700016)(376014)(82310400026)(1800799024)(13003099007)(18002099003)(56012099003)(22082099003);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n pPCAaXgi9zQsE6Vnpq8eY7mDQQ5HF925q658AtDGlthze+ymOb2jRHfDxNggHJI8IVxB/EpZ9HBKpCPhhjj/xMmzAVHAiFma0h9kVHIgjuCcC9hrD/Q6ou6Df6GcxdSCCBwvdB+PEHOKs5REOt9Bpo0wDeFnlgjwIyoK8/stVupVqEYu7nai6d/gpyZsKeYrJPKPH8WxPodlrhJ1B01fS7m+F4u9cmcxyU48sbQAYJNDFTD5Tn3AL2/CCKQS2XH5GYIe4QAlDXgFzue0CCt8iV6tR8u5mXOoeVYhJjtYNJag9rIpV/oyXVCOKu+wjpPTYV3/XqgiCiI+cmR8SPvDjdSEfTcdWamc3uQ0ymbjXKeLhpZQdRQY5fXhehQbPeSfufKLPo/na6gGxslZ50zof0oU0B5pnHsnMj/m1VuBZAcyZBNzkM+Z2HZ4L7dbgYIU",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "01 Apr 2026 09:15:14.6838 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 556857ba-c0e2-4e97-b675-08de8fcf2f55",
        "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.117.161];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n SA2PEPF000015CB.namprd03.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BL1PR12MB5899",
        "Subject": "[ovs-dev] [PATCH v3 10/11] acinclude.m4: Add '--with-doca' option.",
        "X-BeenThere": "ovs-dev@openvswitch.org",
        "X-Mailman-Version": "2.1.30",
        "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>",
        "Cc": "Eli Britstein <elibr@nvidia.com>, Ariel Levkovich <lariel@nvidia.com>,\n Ilya Maximets <i.maximets@ovn.org>,\n David Marchand <david.marchand@redhat.com>,\n Maor Dickman <maord@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": "From: Ariel Levkovich <lariel@nvidia.com>\n\nAdd a new option to build ovs with doca by specifying '--with-doca' in the\nconfigure line.\n\nThis flag must be used along with '--with-dpdk'. Otherwise the configure step\nwill fail.\n\nAn example:\n\n./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc \\\n    --with-dpdk=static --with-doca=static\n\nCo-authored-by: Salem Sol <salems@nvidia.com>\nSigned-off-by: Salem Sol <salems@nvidia.com>\nCo-authored-by: Eli Britstein <elibr@nvidia.com>\nSigned-off-by: Eli Britstein <elibr@nvidia.com>\nSigned-off-by: Ariel Levkovich <lariel@nvidia.com>\n---\n .ci/doca-build.sh                    |  36 ++++++\n .ci/doca-install.sh                  |  20 +++\n .github/workflows/build-and-test.yml |  58 +++++++++\n Makefile.am                          |   2 +\n acinclude.m4                         | 174 +++++++++++++++++++++++++++\n configure.ac                         |   1 +\n lib/automake.mk                      |   4 +\n lib/dpdk.h                           |   1 +\n lib/ovs-doca.c                       |  86 +++++++++++++\n lib/ovs-doca.h                       |  31 +++++\n utilities/checkpatch_dict.txt        |   1 +\n vswitchd/bridge.c                    |   5 +\n vswitchd/ovs-vswitchd.c              |   3 +\n vswitchd/vswitch.ovsschema           |   9 +-\n vswitchd/vswitch.xml                 |  10 ++\n 15 files changed, 439 insertions(+), 2 deletions(-)\n create mode 100755 .ci/doca-build.sh\n create mode 100755 .ci/doca-install.sh\n create mode 100644 lib/ovs-doca.c\n create mode 100644 lib/ovs-doca.h",
    "diff": "diff --git a/.ci/doca-build.sh b/.ci/doca-build.sh\nnew file mode 100755\nindex 000000000..ed9dd7dc9\n--- /dev/null\n+++ b/.ci/doca-build.sh\n@@ -0,0 +1,36 @@\n+#!/bin/bash\n+\n+set -o errexit\n+set -x\n+\n+CFLAGS_FOR_OVS=\"-g -O2\"\n+EXTRA_OPTS=\"--enable-Werror\"\n+JOBS=${JOBS:-\"-j4\"}\n+\n+DOCA_LINK=\"${DOCA_LINK:-static}\"\n+\n+for pc_dir in $(find /opt/mellanox -name pkgconfig -type d 2>/dev/null); do\n+    PKG_CONFIG_PATH=\"${pc_dir}:${PKG_CONFIG_PATH}\"\n+done\n+export PKG_CONFIG_PATH\n+\n+if [ \"$DOCA_LINK\" = \"shared\" ]; then\n+    DOCA_LIB=$(find /opt/mellanox -name pkgconfig -type d 2>/dev/null \\\n+               | head -1 | sed 's|/pkgconfig$||')\n+    export LD_LIBRARY_PATH=\"${DOCA_LIB}:${LD_LIBRARY_PATH}\"\n+fi\n+sudo ldconfig\n+\n+if [ \"$CC\" = \"clang\" ]; then\n+    CFLAGS_FOR_OVS=\"${CFLAGS_FOR_OVS} -Wno-error=unused-command-line-argument\"\n+fi\n+\n+EXTRA_OPTS=\"$EXTRA_OPTS --with-dpdk=$DOCA_LINK --with-doca=$DOCA_LINK\"\n+\n+if [ \"$DOCA_LINK\" = \"shared\" ]; then\n+    EXTRA_OPTS=\"$EXTRA_OPTS --enable-shared\"\n+fi\n+\n+./boot.sh\n+./configure CFLAGS=\"${CFLAGS_FOR_OVS}\" $EXTRA_OPTS\n+make $JOBS\ndiff --git a/.ci/doca-install.sh b/.ci/doca-install.sh\nnew file mode 100755\nindex 000000000..5931bf821\n--- /dev/null\n+++ b/.ci/doca-install.sh\n@@ -0,0 +1,20 @@\n+#!/bin/bash\n+\n+set -ev\n+\n+# Install DOCA SDK packages.\n+#\n+# Download the DOCA host repo package from:\n+#   https://developer.nvidia.com/doca-downloads\n+#     deployment_platform=Host-Server, deployment_package=DOCA-Host,\n+#     target_os=Linux, Architecture=x86_64, Profile=doca-all\n+#\n+\n+DOCA_REPO_PKG_URL=\"${DOCA_REPO_PKG_URL:?Set to .deb repo package URL}\"\n+\n+wget -q \"$DOCA_REPO_PKG_URL\" -O /tmp/doca-repo.deb\n+sudo dpkg -i /tmp/doca-repo.deb\n+sudo apt-get update\n+sudo apt-get install -y dpdk-community-dev \\\n+    libdoca-sdk-flow-dev libdoca-sdk-dpdk-bridge-dev\n+\ndiff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml\nindex f1d006de6..8924d517c 100644\n--- a/.github/workflows/build-and-test.yml\n+++ b/.github/workflows/build-and-test.yml\n@@ -699,3 +699,61 @@ jobs:\n         path: |\n           rpm/rpmbuild/SRPMS/*.rpm\n           rpm/rpmbuild/RPMS/*/*.rpm\n+\n+  build-doca:\n+    env:\n+      dependencies: |\n+        automake libtool gcc bc libssl-dev llvm-dev libnuma-dev \\\n+        libunbound-dev libunwind-dev libsystemd-dev wget python3-pip\n+      DOCA_REPO_PKG_URL: \"https://www.mellanox.com/downloads/DOCA/DOCA_v3.3.0/host/doca-host_3.3.0-088000-26.01-ubuntu2404_amd64.deb\"\n+      CC:        ${{ matrix.compiler }}\n+      DOCA_LINK: ${{ matrix.doca_link }}\n+\n+    name: doca ubuntu ${{ matrix.compiler }} ${{ matrix.doca_link }}\n+    runs-on: ubuntu-24.04\n+    timeout-minutes: 30\n+\n+    strategy:\n+      fail-fast: false\n+      matrix:\n+        include:\n+          - compiler:  gcc\n+            doca_link: static\n+          - compiler:  gcc\n+            doca_link: shared\n+          - compiler:  clang\n+            doca_link: static\n+          - compiler:  clang\n+            doca_link: shared\n+\n+    steps:\n+    - name: checkout\n+      uses: actions/checkout@v4\n+\n+    - name: update PATH\n+      run:  |\n+        echo \"$HOME/bin\"        >> $GITHUB_PATH\n+        echo \"$HOME/.local/bin\" >> $GITHUB_PATH\n+\n+    - name: set up python\n+      uses: actions/setup-python@v5\n+      with:\n+        python-version: ${{ env.python_default }}\n+\n+    - name: update APT cache\n+      run:  sudo apt update || true\n+    - name: install common dependencies\n+      run:  sudo apt install -y ${{ env.dependencies }}\n+\n+    - name: install DOCA\n+      run:  ./.ci/doca-install.sh\n+\n+    - name: build\n+      run:  ./.ci/doca-build.sh\n+\n+    - name: upload logs on failure\n+      if: failure() || cancelled()\n+      uses: actions/upload-artifact@v4\n+      with:\n+        name: logs-doca-ubuntu-${{ matrix.compiler }}-${{ matrix.doca_link }}\n+        path: config.log\ndiff --git a/Makefile.am b/Makefile.am\nindex a805f21d1..ddc3e931e 100644\n--- a/Makefile.am\n+++ b/Makefile.am\n@@ -77,6 +77,8 @@ EXTRA_DIST = \\\n \tMAINTAINERS.rst \\\n \tREADME.rst \\\n \tNOTICE \\\n+\t.ci/doca-build.sh \\\n+\t.ci/doca-install.sh \\\n \t.ci/dpdk-build.sh \\\n \t.ci/dpdk-prepare.sh \\\n \t.ci/linux-build.sh \\\ndiff --git a/acinclude.m4 b/acinclude.m4\nindex 060c416f8..e8d475f37 100644\n--- a/acinclude.m4\n+++ b/acinclude.m4\n@@ -374,6 +374,179 @@ AC_DEFUN([OVS_CHECK_LINUX_AF_XDP], [\n   AM_CONDITIONAL([HAVE_AF_XDP], test \"$AF_XDP_ENABLE\" = true)\n ])\n \n+dnl OVS_CHECK_DOCA\n+dnl\n+dnl Configure DOCA source tree\n+AC_DEFUN([OVS_CHECK_DOCA], [\n+  AC_ARG_WITH([doca],\n+              [AS_HELP_STRING([--with-doca=static],\n+                              [Specify \"static\" depending on the\n+                              DOCA libraries to use. A custom DOCA install path\n+                              can be used otherwise for local builds.])],\n+              [have_doca=true])\n+\n+  if test \"$have_dpdk\" != true || test \"$with_dpdk\" = no; then\n+    if test \"$have_doca\" = true; then\n+      AC_MSG_ERROR([Cannot compile link against doca without dpdk, please add --with-dpdk])\n+    fi\n+  fi\n+  AC_MSG_CHECKING([whether doca is enabled])\n+  if test \"$have_doca\" != true || test \"$with_doca\" = no; then\n+    AC_MSG_RESULT([no])\n+    DOCALIB_FOUND=false\n+  else\n+    AC_MSG_RESULT([yes])\n+    if test -d \"$with_doca\"; then\n+      DOCA_INSTALL=\"$with_doca\"\n+    elif test -d \"/opt/mellanox/doca\"; then\n+      DOCA_INSTALL=/opt/mellanox/doca\n+    else\n+      DOCA_INSTALL=/usr/local\n+    fi\n+    DOCA_PKGCONFIG=\"$(find ${DOCA_INSTALL} -type f -name doca-flow.pc -exec dirname {} \\; | head -1)\"\n+    if test -n \"$DOCA_PKGCONFIG\"; then\n+      if test -n \"$PKG_CONFIG_PATH\"; then\n+        export PKG_CONFIG_PATH=\"${DOCA_PKGCONFIG}:${PKG_CONFIG_PATH}\"\n+      else\n+        export PKG_CONFIG_PATH=\"${DOCA_PKGCONFIG}\"\n+      fi\n+    fi\n+\n+    echo \"checking for DOCA in PKG_CONFIG_PATH='${PKG_CONFIG_PATH}'\"\n+    case \"$with_doca\" in\n+      \"static\"|\"shared\")\n+        DOCA_LINK=\"$with_doca\"\n+        ;;\n+      *)\n+        if test \"$enable_shared\" = yes; then\n+          DOCA_LINK=\"shared\"\n+        else\n+          DOCA_LINK=\"static\"\n+        fi\n+        ;;\n+    esac\n+\n+    DOCA_PKGS=\"doca-flow doca-dpdk-bridge doca-common\"\n+    if test \"$DOCA_LINK\" = static; then\n+      PKG_CHECK_MODULES_STATIC([DOCA], [$DOCA_PKGS], [],\n+          [AC_MSG_ERROR([unable to use $DOCA_PKGS .pc files for $DOCA_LINK build])])\n+    else\n+      PKG_CHECK_MODULES([DOCA], [$DOCA_PKGS], [],\n+          [AC_MSG_ERROR([unable to use $DOCA_PKGS .pc files for $DOCA_LINK build])])\n+    fi\n+    DOCA_INCLUDE=\"$DOCA_CFLAGS -DDOCA_ALLOW_EXPERIMENTAL_API\"\n+\n+    if test \"$DOCA_LINK\" = static; then\n+      # pkg-config --static may emit the same library in duplicate\n+      # --whole-archive blocks when multiple packages share a dependency\n+      # (both doca-flow and doca-dpdk-bridge pull in doca-common).\n+      # Linking the same .a under --whole-archive twice causes \"multiple\n+      # definition\" errors. Remove the second occurrence using a sed\n+      # backreference, and strip redundant shared-lib flags (-l<lib>)\n+      # since the static .a is already linked via --whole-archive.\n+      DOCA_DEDUP_LIBS=\"doca_common doca_dpdk_bridge\"\n+      for lib in $DOCA_DEDUP_LIBS; do\n+        lib_count=$(echo \"$DOCA_LIBS\" | grep -o \"l:lib${lib}\\.a\" | wc -l)\n+        if test \"$lib_count\" -ge 2; then\n+          DOCA_LIBS=$(echo \"$DOCA_LIBS\" | sed \"s@-Wl,--whole-archive -L[[^ ]]* -l:lib${lib}\\.a -Wl,--no-whole-archive -Wl,--as-needed @@2g\")\n+        fi\n+        if echo \"$DOCA_LIBS\" | grep -q \"l:lib${lib}\\.a\"; then\n+          DOCA_LIBS=$(echo \"$DOCA_LIBS\" | sed \"s/-l${lib}//g\")\n+        fi\n+      done\n+    fi\n+\n+    USED_PATH=`$PKG_CONFIG --variable=prefix doca-flow`\n+    echo \"Using DOCA release: '$USED_PATH'\"\n+\n+    ovs_save_CFLAGS=\"$CFLAGS\"\n+    ovs_save_LDFLAGS=\"$LDFLAGS\"\n+    # Statically linked libraries might have been built with sanitizers enabled.\n+    # In such case, use the generated sanitizer cflags.\n+    CFLAGS=\"$CFLAGS $SANITIZER_CFLAGS $DOCA_INCLUDE\"\n+\n+    AC_MSG_CHECKING([for doca_flow.h])\n+    AC_COMPILE_IFELSE(\n+      [AC_LANG_PROGRAM([#include <doca_flow.h>],\n+                       [struct doca_flow_port *port = NULL ;])],\n+      [AC_MSG_RESULT([yes])],\n+      [AC_MSG_RESULT([no])\n+       AC_MSG_ERROR(m4_normalize([\n+          Unable to include doca_flow.h, check the config.log for more details.\n+          As a DOCA library was found in the current search path, a missing doca_flow.h\n+          usually means that it was built without DOCA-flow support.\n+          Verify that you fullfilled all DOCA-flow build dependencies and that it\n+          was not automatically disabled.]))\n+      ])\n+\n+    # DOCA's static pkg-config output already includes DPDK through\n+    # its transitive dependency on libdpdk (via doca-dpdk-bridge), so\n+    # no need to add DPDK_LIB separately for static link tests.\n+    if test \"$enable_shared\" = yes; then\n+      LIBS=\"$DOCA_LIBS $LIBS\"\n+    else\n+      LIBS=\"$DOCA_LIBS $ovs_save_libs_before_dpdk\"\n+    fi\n+    AC_MSG_CHECKING([for DOCA-flow link])\n+    AC_LINK_IFELSE(\n+      [AC_LANG_PROGRAM([#include <doca_flow_net.h>\n+                        #include <doca_flow.h>],\n+                       [struct doca_flow_cfg *cfg;\n+                        int rv;\n+                        doca_flow_cfg_create(&cfg);\n+                        rv = doca_flow_init(cfg);\n+                        doca_flow_cfg_destroy(cfg);\n+                        return rv;])],\n+      [AC_MSG_RESULT([yes])\n+        DOCALIB_FOUND=true],\n+      [AC_MSG_RESULT([no])\n+        AC_MSG_ERROR(m4_normalize([\n+           Unable to link with DOCA-flow, check the config.log for more details.\n+           If a working DOCA-flow library was not found in the current search path,\n+           update PKG_CONFIG_PATH for pkg-config to find the .pc file in a proper location.]))\n+      ])\n+    CFLAGS=\"$ovs_save_CFLAGS\"\n+    LDFLAGS=\"$ovs_save_LDFLAGS\"\n+    OVS_CFLAGS=\"$OVS_CFLAGS $DOCA_INCLUDE -Wno-deprecated-declarations -DALLOW_EXPERIMENTAL_API\"\n+\n+    # DOCA libraries are very specific in their ordering and inherit DPDK\n+    # libraries which contain --whole-archive. Autotools will reorder\n+    # them, breaking static links. Use the same solution as DPDK below.\n+    # Transform the pkg-config output into a single linker parameter, separated\n+    # by commas and wrapped by -Wl.\n+    DOCA_LDFLAGS=$(echo \"$DOCA_LIBS\" | tr -s ' ' ',' | sed 's/-Wl,//g')\n+    # Replace -pthread with -lpthread for LD and remove the last extra comma.\n+    DOCA_LDFLAGS=$(echo \"$DOCA_LDFLAGS\"| sed 's/,$//' | sed 's/-pthread/-lpthread/g')\n+    # Prepend \"-Wl,\".\n+    DOCA_LDFLAGS=\"-Wl,$DOCA_LDFLAGS\"\n+\n+    # The full DOCA linker parameters must be made available to every\n+    # object trying to link against libopenvswitch. It means every\n+    # binary generated will contain DOCA unfortunately.\n+    if test \"$DOCA_LINK\" = static; then\n+      # DOCA's static pkg-config output already includes DPDK through\n+      # its transitive dependency on libdpdk (via doca-dpdk-bridge).\n+      OVS_LDFLAGS=\"$OVS_LDFLAGS $DOCA_LDFLAGS\"\n+      # Clear to prevent double linkage from Makefile.am\n+      DPDK_vswitchd_LDFLAGS=\"\"\n+    else\n+      # For shared builds, DPDK is not in DOCA's output (libdpdk is in\n+      # Requires.private, not followed by pkg-config without --static).\n+      # Link DPDK separately. Add PMD drivers explicitly as they may\n+      # not be in Libs field for shared builds.\n+      for pmd in rte_net_mlx5 rte_net_vhost; do\n+        if ! echo \"$DPDK_LIB\" | grep -q \"\\-l$pmd\"; then\n+          DPDK_LIB=\"$DPDK_LIB -l$pmd\"\n+        fi\n+      done\n+      OVS_LDFLAGS=\"$OVS_LDFLAGS $DOCA_LDFLAGS $DPDK_LIB\"\n+    fi\n+    AC_DEFINE([DOCA_NETDEV], [1], [System uses the DOCA module.])\n+  fi\n+\n+  AM_CONDITIONAL([DOCA_NETDEV], [$DOCALIB_FOUND])\n+])\n+\n dnl OVS_CHECK_DPDK\n dnl\n dnl Configure DPDK source tree\n@@ -478,6 +651,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [\n     OVS_FIND_DEPENDENCY([dlopen], [dl], [libdl])\n \n     AC_MSG_CHECKING([whether linking with dpdk works])\n+    ovs_save_libs_before_dpdk=\"$LIBS\"\n     LIBS=\"$DPDK_LIB $LIBS\"\n     AC_LINK_IFELSE(\n       [AC_LANG_PROGRAM([#include <rte_config.h>\ndiff --git a/configure.ac b/configure.ac\nindex cd063f811..031d38c90 100644\n--- a/configure.ac\n+++ b/configure.ac\n@@ -204,6 +204,7 @@ OVS_CHECK_LINUX_TC\n OVS_CHECK_LINUX_SCTP_CT\n OVS_CHECK_LINUX_VIRTIO_TYPES\n OVS_CHECK_DPDK\n+OVS_CHECK_DOCA\n OVS_CHECK_PRAGMA_MESSAGE\n OVS_CHECK_VERSION_SUFFIX\n AC_SUBST([CFLAGS])\ndiff --git a/lib/automake.mk b/lib/automake.mk\nindex bab03c3e7..66c5c3d93 100644\n--- a/lib/automake.mk\n+++ b/lib/automake.mk\n@@ -517,6 +517,10 @@ lib_libopenvswitch_la_SOURCES += \\\n \tlib/dpdk-stub.c\n endif\n \n+lib_libopenvswitch_la_SOURCES += \\\n+\tlib/ovs-doca.c \\\n+\tlib/ovs-doca.h\n+\n if WIN32\n lib_libopenvswitch_la_SOURCES += \\\n \tlib/dpif-netlink.c \\\ndiff --git a/lib/dpdk.h b/lib/dpdk.h\nindex 1b790e682..7571604dd 100644\n--- a/lib/dpdk.h\n+++ b/lib/dpdk.h\n@@ -18,6 +18,7 @@\n #define DPDK_H\n \n #include <stdbool.h>\n+#include <stdint.h>\n \n #ifdef DPDK_NETDEV\n \ndiff --git a/lib/ovs-doca.c b/lib/ovs-doca.c\nnew file mode 100644\nindex 000000000..eae361a21\n--- /dev/null\n+++ b/lib/ovs-doca.c\n@@ -0,0 +1,86 @@\n+/*\n+ * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES.\n+ * All rights reserved.\n+ * SPDX-License-Identifier: Apache-2.0\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+\n+#include \"compiler.h\"\n+#include \"ovs-doca.h\"\n+#include \"vswitch-idl.h\"\n+\n+#ifdef DOCA_NETDEV\n+\n+#include <rte_common.h>\n+#include <rte_pmd_mlx5.h>\n+\n+#include <doca_version.h>\n+\n+/* DOCA disables dpdk steering as a constructor in higher priority.\n+ * Set a lower priority one to enable it back. Disable it only upon using\n+ * doca ports.\n+ */\n+RTE_INIT(dpdk_steering_enable)\n+{\n+    rte_pmd_mlx5_enable_steering();\n+}\n+\n+void\n+ovs_doca_init(const struct smap *ovs_other_config OVS_UNUSED)\n+{\n+}\n+\n+void\n+print_doca_version(void)\n+{\n+    puts(doca_version_runtime());\n+}\n+\n+void\n+ovs_doca_status(const struct ovsrec_open_vswitch *cfg)\n+{\n+    if (!cfg) {\n+        return;\n+    }\n+\n+    ovsrec_open_vswitch_set_doca_initialized(cfg, false);\n+    ovsrec_open_vswitch_set_doca_version(cfg, doca_version_runtime());\n+}\n+\n+#else /* DOCA_NETDEV */\n+\n+void\n+ovs_doca_init(const struct smap *ovs_other_config OVS_UNUSED)\n+{\n+}\n+\n+void\n+print_doca_version(void)\n+{\n+}\n+\n+void\n+ovs_doca_status(const struct ovsrec_open_vswitch *cfg)\n+{\n+    if (!cfg) {\n+        return;\n+    }\n+\n+    ovsrec_open_vswitch_set_doca_initialized(cfg, false);\n+    ovsrec_open_vswitch_set_doca_version(cfg, \"none\");\n+}\n+\n+#endif /* DOCA_NETDEV */\ndiff --git a/lib/ovs-doca.h b/lib/ovs-doca.h\nnew file mode 100644\nindex 000000000..9bd96c941\n--- /dev/null\n+++ b/lib/ovs-doca.h\n@@ -0,0 +1,31 @@\n+/*\n+ * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES.\n+ * All rights reserved.\n+ * SPDX-License-Identifier: Apache-2.0\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 OVS_DOCA_H\n+#define OVS_DOCA_H\n+\n+#include <config.h>\n+\n+struct ovsrec_open_vswitch;\n+struct smap;\n+\n+void ovs_doca_init(const struct smap *ovs_other_config);\n+void print_doca_version(void);\n+void ovs_doca_status(const struct ovsrec_open_vswitch *);\n+\n+#endif /* OVS_DOCA_H */\ndiff --git a/utilities/checkpatch_dict.txt b/utilities/checkpatch_dict.txt\nindex 5ad599c1d..6a454bcf8 100644\n--- a/utilities/checkpatch_dict.txt\n+++ b/utilities/checkpatch_dict.txt\n@@ -55,6 +55,7 @@ dhcpv4\n dhcpv6\n dnat\n dns\n+doca\n dpcls\n dpctl\n dpdk\ndiff --git a/vswitchd/bridge.c b/vswitchd/bridge.c\nindex 7a68e19ac..dd494b0f6 100644\n--- a/vswitchd/bridge.c\n+++ b/vswitchd/bridge.c\n@@ -50,6 +50,7 @@\n #include \"openvswitch/ofpbuf.h\"\n #include \"openvswitch/vconn.h\"\n #include \"openvswitch/vlog.h\"\n+#include \"ovs-doca.h\"\n #include \"ovs-lldp.h\"\n #include \"ovs-numa.h\"\n #include \"packets.h\"\n@@ -451,6 +452,8 @@ bridge_init(const char *remote)\n     ovsdb_idl_omit(idl, &ovsrec_open_vswitch_col_system_version);\n     ovsdb_idl_omit_alert(idl, &ovsrec_open_vswitch_col_dpdk_version);\n     ovsdb_idl_omit_alert(idl, &ovsrec_open_vswitch_col_dpdk_initialized);\n+    ovsdb_idl_omit_alert(idl, &ovsrec_open_vswitch_col_doca_version);\n+    ovsdb_idl_omit_alert(idl, &ovsrec_open_vswitch_col_doca_initialized);\n \n     ovsdb_idl_omit_alert(idl, &ovsrec_bridge_col_datapath_id);\n     ovsdb_idl_omit_alert(idl, &ovsrec_bridge_col_datapath_version);\n@@ -3260,6 +3263,7 @@ run_status_update(void)\n             connectivity_seqno = seq;\n             status_txn = ovsdb_idl_txn_create(idl);\n             dpdk_status(cfg);\n+            ovs_doca_status(cfg);\n             HMAP_FOR_EACH (br, node, &all_bridges) {\n                 struct port *port;\n \n@@ -3400,6 +3404,7 @@ bridge_run(void)\n \n     if (cfg) {\n         dpdk_init(&cfg->other_config);\n+        ovs_doca_init(&cfg->other_config);\n         userspace_tso_init(&cfg->other_config);\n     }\n \ndiff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c\nindex 6d90c73b8..03c739443 100644\n--- a/vswitchd/ovs-vswitchd.c\n+++ b/vswitchd/ovs-vswitchd.c\n@@ -30,6 +30,7 @@\n #include \"compiler.h\"\n #include \"daemon.h\"\n #include \"dirs.h\"\n+#include \"dpdk.h\"\n #include \"dpif.h\"\n #include \"dummy.h\"\n #include \"fatal-signal.h\"\n@@ -37,6 +38,7 @@\n #include \"netdev.h\"\n #include \"openflow/openflow.h\"\n #include \"ovsdb-idl.h\"\n+#include \"ovs-doca.h\"\n #include \"ovs-rcu.h\"\n #include \"ovs-router.h\"\n #include \"ovs-thread.h\"\n@@ -220,6 +222,7 @@ parse_options(int argc, char *argv[], char **unixctl_pathp)\n         case 'V':\n             ovs_print_version(0, 0);\n             print_dpdk_version();\n+            print_doca_version();\n             exit(EXIT_SUCCESS);\n \n         case OPT_MLOCKALL:\ndiff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema\nindex c658291c7..d3b84ac30 100644\n--- a/vswitchd/vswitch.ovsschema\n+++ b/vswitchd/vswitch.ovsschema\n@@ -1,6 +1,6 @@\n {\"name\": \"Open_vSwitch\",\n- \"version\": \"8.8.0\",\n- \"cksum\": \"2823623553 27869\",\n+ \"version\": \"8.9.0\",\n+ \"cksum\": \"2639123554 28037\",\n  \"tables\": {\n    \"Open_vSwitch\": {\n      \"columns\": {\n@@ -56,6 +56,11 @@\n        \"dpdk_initialized\": {\n          \"type\": \"boolean\"},\n        \"dpdk_version\": {\n+         \"type\": {\"key\": {\"type\": \"string\"},\n+                  \"min\": 0, \"max\": 1}},\n+       \"doca_initialized\": {\n+         \"type\": \"boolean\"},\n+       \"doca_version\": {\n          \"type\": {\"key\": {\"type\": \"string\"},\n                   \"min\": 0, \"max\": 1}}},\n      \"isRoot\": true,\ndiff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml\nindex b7a5afc0a..9edd1027e 100644\n--- a/vswitchd/vswitch.xml\n+++ b/vswitchd/vswitch.xml\n@@ -941,6 +941,10 @@\n         true and the DPDK library is successfully initialized.\n       </column>\n \n+      <column name=\"doca_initialized\">\n+        Always false.\n+      </column>\n+\n       <group title=\"Statistics\">\n         <p>\n           The <code>statistics</code> column contains key-value pairs that\n@@ -1131,6 +1135,12 @@\n         </p>\n       </column>\n \n+      <column name=\"doca_version\">\n+        <p>\n+          The version of the linked DOCA library.\n+        </p>\n+      </column>\n+\n     </group>\n \n     <group title=\"Capabilities\">\n",
    "prefixes": [
        "ovs-dev",
        "v3",
        "10/11"
    ]
}