On 12/03/2026 12:39, Eelco Chaudron wrote:
External email: Use caution opening links or attachments
On 9 Feb 2026, at 14:29, Eli Britstein wrote:
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
Thanks for the patch, Ariel/Eli! Much appreciated.
I did not dive too deeply into the automake changes, and I would love for
someone with more experience in that area to take a look as well. That
said, I did notice quite a bit of unusual handling going on there. Is all
of that really necessary, or might there be a cleaner way to approach it?
Maybe there is even an opportunity to simplify things in the DOCA package
itself.
Ack. I simplified it, will be in v2.
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
Skipped reviewing this part.
[...]
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();
This sounds a bit scary to me.
Is there anything else DOCA changes in DPDK which is not visible to the
user? Especially since normal DPDK ports might be used, and when
compiled with DOCA it could behave differently than when compiled
without DOCA. The latter should ideally not be the case with DOCA
integration.
With doca compiled, dpdk steering (mlx5 only) is disabled in a
constructor. This constructor in OVS is for enabling it back.
There is a limitation that doca/mlx5-dpdk ports cannot be concurrently
used. In the same ESW it doesn't make any sense, so the only use-case in
which this limitation takes place is if the user wants to use mixed
configuration of one ESW with doca and another with dpdk (again, mlx5
only) ports.
We think that this is an acceptable limitation.
[...]
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev