From: Ariel Levkovich <[email protected]>

Add a new option to build ovs with doca by specifying '--with-doca' in the
configure line.

This flag must be used along with '--with-dpdk'. Otherwise the configure step
will fail.

An example:

./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc \
    --with-dpdk=static --with-doca=static

Co-authored-by: Salem Sol <[email protected]>
Signed-off-by: Salem Sol <[email protected]>
Co-authored-by: Eli Britstein <[email protected]>
Signed-off-by: Eli Britstein <[email protected]>
Signed-off-by: Ariel Levkovich <[email protected]>
---
 acinclude.m4                  | 248 ++++++++++++++++++++++++++++++++++
 configure.ac                  |   1 +
 lib/automake.mk               |   4 +
 lib/ovs-doca.c                |  86 ++++++++++++
 lib/ovs-doca.h                |  31 +++++
 utilities/checkpatch_dict.txt |   2 +
 vswitchd/bridge.c             |   5 +
 vswitchd/ovs-vswitchd.c       |   3 +
 vswitchd/vswitch.ovsschema    |   9 +-
 vswitchd/vswitch.xml          |  10 ++
 10 files changed, 397 insertions(+), 2 deletions(-)
 create mode 100644 lib/ovs-doca.c
 create mode 100644 lib/ovs-doca.h

diff --git a/acinclude.m4 b/acinclude.m4
index 586163ef3..72411df48 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -367,6 +367,253 @@ AC_DEFUN([OVS_CHECK_LINUX_AF_XDP], [
   AM_CONDITIONAL([HAVE_AF_XDP], test "$AF_XDP_ENABLE" = true)
 ])
 
+dnl OVS_CHECK_DOCA
+dnl
+dnl Configure DOCA source tree
+AC_DEFUN([OVS_CHECK_DOCA], [
+  AC_ARG_WITH([doca],
+              [AS_HELP_STRING([--with-doca=static],
+                              [Specify "static" depending on the
+                              DOCA libraries to use. A custom DOCA install path
+                              can be used otherwise for local builds.])],
+              [have_doca=true])
+  AC_ARG_WITH([nvhws],
+              [AS_HELP_STRING([--with-nvhws=static],
+                              [Specify "static" depending on the
+                              NVHWS libraries to use.])],
+              [have_nvhws=true])
+
+  if test "$have_dpdk" != true || test "$with_dpdk" = no; then
+    if test "$have_doca" = true; then
+      AC_MSG_ERROR([Cannot compile link against doca without dpdk, please add 
--with-dpdk])
+    fi
+  fi
+  AC_MSG_CHECKING([whether doca is enabled])
+  if test "$have_doca" != true || test "$with_doca" = no; then
+    AC_MSG_RESULT([no])
+    DOCALIB_FOUND=false
+  else
+    AC_MSG_RESULT([yes])
+    if test -d "$with_doca"; then
+      DOCA_INSTALL="$with_doca"
+    elif test -d "/opt/mellanox/doca"; then
+      DOCA_INSTALL=/opt/mellanox/doca
+    else
+      DOCA_INSTALL=/usr/local
+    fi
+    DOCA_PKGCONFIG="$(find ${DOCA_INSTALL} -type f -name doca-flow.pc -exec 
dirname {} \; | head -1)"
+    if test -n "$DOCA_PKGCONFIG"; then
+      export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:${DOCA_PKGCONFIG}"
+    fi
+
+    echo "checking for DOCA in PKG_CONFIG_PATH='${PKG_CONFIG_PATH}'"
+    case "$with_doca" in
+      "static"|"shared")
+        DOCA_LINK="$with_doca"
+        ;;
+      *)
+        DOCA_LINK=""
+        ;;
+    esac
+    if test "$enable_shared" = yes && test "$DOCA_LINK" = ""; then
+      DOCA_LINK="shared"
+    fi
+    case "$DOCA_LINK" in
+      ""|"static")
+        DOCA_LINK="static"
+        PKG_CHECK_MODULES_STATIC([DOCA], [doca-flow doca-dpdk-bridge], [
+            DOCA_INCLUDE="$DOCA_CFLAGS -DDOCA_ALLOW_EXPERIMENTAL_API"],
+            [AC_MSG_ERROR([unable to use doca-flow.pc and doca-dpdk-bridge.pc 
for static build])])
+        ;;
+      *)
+        PKG_CHECK_MODULES([DOCA], [doca-flow doca-dpdk-bridge], [
+            DOCA_INCLUDE="$DOCA_CFLAGS -DDOCA_ALLOW_EXPERIMENTAL_API"],
+            [AC_MSG_ERROR([unable to use doca-flow.pc and doca-dpdk-bridge.pc 
for shared build])])
+        ;;
+    esac
+
+    if test "$DOCA_LINK" = static; then
+      # Deduplicate DOCA libraries that appear multiple times.
+      # This happens when libraries are in Requires.private and we also
+      # explicitly request them. Only remove first occurrence if there
+      # are actually duplicates to avoid removing the only instance.
+      DOCA_DEDUP_LIBS="doca_common doca_dpdk_bridge"
+      for lib in $DOCA_DEDUP_LIBS; do
+        lib_count=$(echo "$DOCA_LIBS" | grep -o "l:lib${lib}\.a" | wc -l)
+        if test "$lib_count" -ge 2; then
+          DOCA_LIBS=$(echo "$DOCA_LIBS" | sed "s@-Wl,--whole-archive -L[[^ ]]* 
-l:lib${lib}\.a -Wl,--no-whole-archive -Wl,--as-needed @@")
+        fi
+        # Remove shared library references if static lib exists
+        if echo "$DOCA_LIBS" | grep -q "lib${lib}\.a"; then
+          DOCA_LIBS=$(echo "$DOCA_LIBS" | sed "s/-l${lib}//g")
+        fi
+      done
+
+      # Deduplicate DPDK libraries that may appear in DOCA_LIBS when
+      # doca-dpdk-bridge.pc includes libdpdk in Requires.private.
+      dpdk_dedup_result=""
+      dpdk_seen_libs=":"
+      for flag in $DOCA_LIBS; do
+        case "$flag" in
+          -l:librte_*|-lrte_*)
+            case "$dpdk_seen_libs" in
+              *:$flag:*)
+                ;;
+              *)
+                dpdk_dedup_result="$dpdk_dedup_result $flag"
+                dpdk_seen_libs="$dpdk_seen_libs$flag:"
+                ;;
+            esac
+            ;;
+          *)
+            dpdk_dedup_result="$dpdk_dedup_result $flag"
+            ;;
+        esac
+      done
+      DOCA_LIBS=$(echo "$dpdk_dedup_result" | sed 's/^ *//')
+    fi
+
+    # Strip ALL DPDK libraries from DOCA pkg-config output for both
+    # static and shared builds. We link DPDK directly via DPDK's own
+    # pkg-config to avoid using doca-dpdk-bridge as a workaround.
+    # Remove both static (-l:librte_*.a) and shared (-lrte_*) forms,
+    # and DPDK paths. Then collapse spaces, clean up empty
+    # whole-archive, and trim leading/trailing spaces.
+    DOCA_LIBS=$(echo "$DOCA_LIBS" | sed 's/-l:librte_[[^ ]]*\.a//g; 
s/-lrte_[[^ ]]*//g; s@-L[[^ ]]*/dpdk[[^ ]]*/lib[[^ ]]*@@g' | sed 's/  */ /g; 
s/-Wl,--whole-archive  *-Wl,--no-whole-archive//g; s/^ *//; s/ *$//')
+
+    # pkg-config --static of nvhws returns both shared and static libs.
+    # Strip the unneeded library according to requested. If not
+    # specified, default to same link type as DOCA.
+    nvhws_link="${with_nvhws:-$DOCA_LINK}"
+    # Force nvhws to link statically
+    nvhws_link="static"
+    if test "$nvhws_link" = static; then
+      DOCA_LIBS=$(echo "$DOCA_LIBS" | sed 's/-lnvhws//g')
+      if test "$DOCA_LINK" = static; then
+        DOCA_LIBS=$(echo "$DOCA_LIBS" | sed 
's/-l:libnvhws.a/-Wl,--whole-archive -l:libnvhws.a -Wl,--no-whole-archive/g')
+      fi
+    elif test "$nvhws_link" = shared; then
+      DOCA_LIBS=$(echo "$DOCA_LIBS" | sed 's/-l:libnvhws.a//g')
+      # Ensure shared nvhws is in libs (may not be in pkg-config for
+      # shared builds). Try pkg-config first, then extract from include.
+      if ! echo "$DOCA_LIBS" | grep -q "\-lnvhws"; then
+        nvhws_ldflags=$($PKG_CONFIG --libs-only-L libnvhws 2>/dev/null || echo 
"")
+        DOCA_LIBS="$DOCA_LIBS $nvhws_ldflags -lnvhws"
+      fi
+    fi
+    # For shared builds, ensure doca_common is included (may only be
+    # in Requires.private and not in Libs field of .pc files).
+    if test "$DOCA_LINK" = shared; then
+      if ! echo "$DOCA_LIBS" | grep -q "\-ldoca_common"; then
+        DOCA_LIBS="$DOCA_LIBS -ldoca_common"
+      fi
+    fi
+    DOCA_LIB="$DOCA_LIBS"
+
+    USED_PATH=`$PKG_CONFIG --variable=prefix doca-flow`
+    echo "Using DOCA release: '$USED_PATH'"
+
+    ovs_save_CFLAGS="$CFLAGS"
+    ovs_save_LDFLAGS="$LDFLAGS"
+    # Statically linked libraries might have been built with sanitizers 
enabled.
+    # In such case, use the generated sanitizer cflags.
+    CFLAGS="$CFLAGS $SANITIZER_CFLAGS $DOCA_INCLUDE"
+
+    AC_MSG_CHECKING([for doca_flow.h])
+    AC_COMPILE_IFELSE(
+      [AC_LANG_PROGRAM([#include <doca_flow.h>],
+                       [struct doca_flow_port *port = NULL ;])],
+      [AC_MSG_RESULT([yes])],
+      [AC_MSG_RESULT([no])
+       AC_MSG_ERROR(m4_normalize([
+          Unable to include doca_flow.h, check the config.log for more details.
+          As a DOCA library was found in the current search path, a missing 
doca_flow.h
+          usually means that it was built without DOCA-flow support.
+          Verify that you fullfilled all DOCA-flow build dependencies and that 
it
+          was not automatically disabled.]))
+      ])
+
+    # For static compilation, add DPDK libraries for link test since
+    # we stripped them from DOCA. DPDK_LIB is available from
+    # OVS_CHECK_DPDK which runs before OVS_CHECK_DOCA.
+    if test "$enable_shared" = yes; then
+      LIBS="$DOCA_LIB $LIBS"
+    else
+      if test "$DOCA_LINK" = static; then
+        LIBS="$DOCA_LIB $DPDK_LIB $ovs_save_libs_before_dpdk"
+      else
+        LIBS="$DOCA_LIB $ovs_save_libs_before_dpdk"
+      fi
+    fi
+    AC_MSG_CHECKING([for DOCA-flow link])
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([#include <doca_flow_net.h>
+                        #include <doca_flow.h>],
+                       [struct doca_flow_cfg *cfg;
+                        int rv;
+                        doca_flow_cfg_create(&cfg);
+                        rv = doca_flow_init(cfg);
+                        doca_flow_cfg_destroy(cfg);
+                        return rv;])],
+      [AC_MSG_RESULT([yes])
+        DOCALIB_FOUND=true],
+      [AC_MSG_RESULT([no])
+        AC_MSG_ERROR(m4_normalize([
+           Unable to link with DOCA-flow, check the config.log for more 
details.
+           If a working DOCA-flow library was not found in the current search 
path,
+           update PKG_CONFIG_PATH for pkg-config to find the .pc file in a 
proper location.]))
+      ])
+    CFLAGS="$ovs_save_CFLAGS"
+    LDFLAGS="$ovs_save_LDFLAGS"
+    OVS_CFLAGS="$OVS_CFLAGS $DOCA_INCLUDE -Wno-deprecated-declarations 
-DALLOW_EXPERIMENTAL_API"
+
+    # DOCA libraries are very specific in their ordering and inherit DPDK
+    # libraries which contain --whole-archive. Autotools will reorder
+    # them, breaking static links. Use the same solution as DPDK below.
+    # Transform the pkg-config output into a single linker parameter, separated
+    # by commas and wrapped by -Wl.
+    DOCA_LDFLAGS=$(echo "$DOCA_LIBS" | tr -s ' ' ',' | sed 's/-Wl,//g')
+    # Replace -pthread with -lpthread for LD and remove the last extra comma.
+    DOCA_LDFLAGS=$(echo "$DOCA_LDFLAGS"| sed 's/,$//' | sed 
's/-pthread/-lpthread/g')
+    # Prepend "-Wl,".
+    DOCA_LDFLAGS="-Wl,$DOCA_LDFLAGS"
+
+    # The full DOCA linker parameters must be made available to every
+    # object trying to link against libopenvswitch. It means every
+    # binary generated will contain DOCA unfortunately.
+    # DPDK must also be added after DOCA since DOCA libraries depend on
+    # DPDK symbols. Order: DOCA first, DPDK second.
+    if test "$DOCA_LINK" = static; then
+      # For static builds, use wrapped DPDK flags (all stripped from
+      # DOCA and linked directly via DPDK pkg-config).
+      OVS_LDFLAGS="$OVS_LDFLAGS $DOCA_LDFLAGS $DPDK_vswitchd_LDFLAGS"
+      # Clear to prevent double linkage
+      DPDK_vswitchd_LDFLAGS=""
+    else
+      # For shared builds, use unwrapped DPDK_LIB (stripped from DOCA
+      # and linked directly via DPDK pkg-config). Add PMD drivers
+      # explicitly as they may not be in Libs field for shared builds.
+      for pmd in rte_net_mlx5 rte_net_vhost; do
+        if ! echo "$DPDK_LIB" | grep -q "\-l$pmd"; then
+          DPDK_LIB="$DPDK_LIB -l$pmd"
+        fi
+      done
+      # Add RPATH to ensure runtime linker uses the correct library
+      # paths instead of system defaults (e.g., /opt/mellanox/).
+      # Use --disable-new-dtags to force RPATH (not RUNPATH) which has
+      # higher priority than system library paths.
+      rpath_dirs=$(echo "$DOCA_LIBS $DPDK_LIB" | grep -o -- '-L[[^ ]]*' | sed 
's/-L//' | sort -u | tr '\n' ':' | sed 's/:$//')
+      OVS_LDFLAGS="$OVS_LDFLAGS $DOCA_LDFLAGS $DPDK_LIB"
+      if test -n "$rpath_dirs"; then
+        OVS_LDFLAGS="$OVS_LDFLAGS -Wl,--disable-new-dtags,-rpath,$rpath_dirs"
+      fi
+    fi
+    AC_DEFINE([DOCA_NETDEV], [1], [System uses the DOCA module.])
+  fi
+
+  AM_CONDITIONAL([DOCA_NETDEV], [$DOCALIB_FOUND])
+])
+
 dnl OVS_CHECK_DPDK
 dnl
 dnl Configure DPDK source tree
@@ -464,6 +711,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [
     OVS_FIND_DEPENDENCY([dlopen], [dl], [libdl])
 
     AC_MSG_CHECKING([whether linking with dpdk works])
+    ovs_save_libs_before_dpdk="$LIBS"
     LIBS="$DPDK_LIB $LIBS"
     AC_LINK_IFELSE(
       [AC_LANG_PROGRAM([#include <rte_config.h>
diff --git a/configure.ac b/configure.ac
index 6f28360a1..5a62b4c94 100644
--- a/configure.ac
+++ b/configure.ac
@@ -202,6 +202,7 @@ OVS_CHECK_LINUX_TC
 OVS_CHECK_LINUX_SCTP_CT
 OVS_CHECK_LINUX_VIRTIO_TYPES
 OVS_CHECK_DPDK
+OVS_CHECK_DOCA
 OVS_CHECK_PRAGMA_MESSAGE
 OVS_CHECK_VERSION_SUFFIX
 AC_SUBST([CFLAGS])
diff --git a/lib/automake.mk b/lib/automake.mk
index cf7b3d18c..199a34e69 100644
--- a/lib/automake.mk
+++ b/lib/automake.mk
@@ -516,6 +516,10 @@ lib_libopenvswitch_la_SOURCES += \
        lib/dpdk-stub.c
 endif
 
+lib_libopenvswitch_la_SOURCES += \
+       lib/ovs-doca.c \
+       lib/ovs-doca.h
+
 if WIN32
 lib_libopenvswitch_la_SOURCES += \
        lib/dpif-netlink.c \
diff --git a/lib/ovs-doca.c b/lib/ovs-doca.c
new file mode 100644
index 000000000..eae361a21
--- /dev/null
+++ b/lib/ovs-doca.c
@@ -0,0 +1,86 @@
+/*
+ * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES.
+ * All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <config.h>
+
+#include "compiler.h"
+#include "ovs-doca.h"
+#include "vswitch-idl.h"
+
+#ifdef DOCA_NETDEV
+
+#include <rte_common.h>
+#include <rte_pmd_mlx5.h>
+
+#include <doca_version.h>
+
+/* DOCA disables dpdk steering as a constructor in higher priority.
+ * Set a lower priority one to enable it back. Disable it only upon using
+ * doca ports.
+ */
+RTE_INIT(dpdk_steering_enable)
+{
+    rte_pmd_mlx5_enable_steering();
+}
+
+void
+ovs_doca_init(const struct smap *ovs_other_config OVS_UNUSED)
+{
+}
+
+void
+print_doca_version(void)
+{
+    puts(doca_version_runtime());
+}
+
+void
+ovs_doca_status(const struct ovsrec_open_vswitch *cfg)
+{
+    if (!cfg) {
+        return;
+    }
+
+    ovsrec_open_vswitch_set_doca_initialized(cfg, false);
+    ovsrec_open_vswitch_set_doca_version(cfg, doca_version_runtime());
+}
+
+#else /* DOCA_NETDEV */
+
+void
+ovs_doca_init(const struct smap *ovs_other_config OVS_UNUSED)
+{
+}
+
+void
+print_doca_version(void)
+{
+}
+
+void
+ovs_doca_status(const struct ovsrec_open_vswitch *cfg)
+{
+    if (!cfg) {
+        return;
+    }
+
+    ovsrec_open_vswitch_set_doca_initialized(cfg, false);
+    ovsrec_open_vswitch_set_doca_version(cfg, "none");
+}
+
+#endif /* DOCA_NETDEV */
diff --git a/lib/ovs-doca.h b/lib/ovs-doca.h
new file mode 100644
index 000000000..9bd96c941
--- /dev/null
+++ b/lib/ovs-doca.h
@@ -0,0 +1,31 @@
+/*
+ * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES.
+ * All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OVS_DOCA_H
+#define OVS_DOCA_H
+
+#include <config.h>
+
+struct ovsrec_open_vswitch;
+struct smap;
+
+void ovs_doca_init(const struct smap *ovs_other_config);
+void print_doca_version(void);
+void ovs_doca_status(const struct ovsrec_open_vswitch *);
+
+#endif /* OVS_DOCA_H */
diff --git a/utilities/checkpatch_dict.txt b/utilities/checkpatch_dict.txt
index ccc9249a2..d56d78bef 100644
--- a/utilities/checkpatch_dict.txt
+++ b/utilities/checkpatch_dict.txt
@@ -1,3 +1,4 @@
+acinclude
 acl
 addresssanitizer
 afxdp
@@ -53,6 +54,7 @@ dhcpv4
 dhcpv6
 dnat
 dns
+doca
 dpcls
 dpctl
 dpdk
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 7a68e19ac..dd494b0f6 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -50,6 +50,7 @@
 #include "openvswitch/ofpbuf.h"
 #include "openvswitch/vconn.h"
 #include "openvswitch/vlog.h"
+#include "ovs-doca.h"
 #include "ovs-lldp.h"
 #include "ovs-numa.h"
 #include "packets.h"
@@ -451,6 +452,8 @@ bridge_init(const char *remote)
     ovsdb_idl_omit(idl, &ovsrec_open_vswitch_col_system_version);
     ovsdb_idl_omit_alert(idl, &ovsrec_open_vswitch_col_dpdk_version);
     ovsdb_idl_omit_alert(idl, &ovsrec_open_vswitch_col_dpdk_initialized);
+    ovsdb_idl_omit_alert(idl, &ovsrec_open_vswitch_col_doca_version);
+    ovsdb_idl_omit_alert(idl, &ovsrec_open_vswitch_col_doca_initialized);
 
     ovsdb_idl_omit_alert(idl, &ovsrec_bridge_col_datapath_id);
     ovsdb_idl_omit_alert(idl, &ovsrec_bridge_col_datapath_version);
@@ -3260,6 +3263,7 @@ run_status_update(void)
             connectivity_seqno = seq;
             status_txn = ovsdb_idl_txn_create(idl);
             dpdk_status(cfg);
+            ovs_doca_status(cfg);
             HMAP_FOR_EACH (br, node, &all_bridges) {
                 struct port *port;
 
@@ -3400,6 +3404,7 @@ bridge_run(void)
 
     if (cfg) {
         dpdk_init(&cfg->other_config);
+        ovs_doca_init(&cfg->other_config);
         userspace_tso_init(&cfg->other_config);
     }
 
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index 6d90c73b8..03c739443 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -30,6 +30,7 @@
 #include "compiler.h"
 #include "daemon.h"
 #include "dirs.h"
+#include "dpdk.h"
 #include "dpif.h"
 #include "dummy.h"
 #include "fatal-signal.h"
@@ -37,6 +38,7 @@
 #include "netdev.h"
 #include "openflow/openflow.h"
 #include "ovsdb-idl.h"
+#include "ovs-doca.h"
 #include "ovs-rcu.h"
 #include "ovs-router.h"
 #include "ovs-thread.h"
@@ -220,6 +222,7 @@ parse_options(int argc, char *argv[], char **unixctl_pathp)
         case 'V':
             ovs_print_version(0, 0);
             print_dpdk_version();
+            print_doca_version();
             exit(EXIT_SUCCESS);
 
         case OPT_MLOCKALL:
diff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema
index c658291c7..d3b84ac30 100644
--- a/vswitchd/vswitch.ovsschema
+++ b/vswitchd/vswitch.ovsschema
@@ -1,6 +1,6 @@
 {"name": "Open_vSwitch",
- "version": "8.8.0",
- "cksum": "2823623553 27869",
+ "version": "8.9.0",
+ "cksum": "2639123554 28037",
  "tables": {
    "Open_vSwitch": {
      "columns": {
@@ -56,6 +56,11 @@
        "dpdk_initialized": {
          "type": "boolean"},
        "dpdk_version": {
+         "type": {"key": {"type": "string"},
+                  "min": 0, "max": 1}},
+       "doca_initialized": {
+         "type": "boolean"},
+       "doca_version": {
          "type": {"key": {"type": "string"},
                   "min": 0, "max": 1}}},
      "isRoot": true,
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index b7a5afc0a..9edd1027e 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -941,6 +941,10 @@
         true and the DPDK library is successfully initialized.
       </column>
 
+      <column name="doca_initialized">
+        Always false.
+      </column>
+
       <group title="Statistics">
         <p>
           The <code>statistics</code> column contains key-value pairs that
@@ -1131,6 +1135,12 @@
         </p>
       </column>
 
+      <column name="doca_version">
+        <p>
+          The version of the linked DOCA library.
+        </p>
+      </column>
+
     </group>
 
     <group title="Capabilities">
-- 
2.34.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to