git: a2703fef5cbe - main - fixup! verbs/mlxs: mlx5: Add tunnel offloads support in direct verbs
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 16 Sep 2026 14:13:26 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=a2703fef5cbe66be3bff971bcbdd9d328b3029ef
commit a2703fef5cbe66be3bff971bcbdd9d328b3029ef
Author: Ariel Ehrenberg <aehrenberg@nvidia.com>
AuthorDate: 2026-07-28 12:02:54 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-09-16 14:12:10 +0000
fixup! verbs/mlxs: mlx5: Add tunnel offloads support in direct verbs
Fix is based on upstream rdma-core commit ee54f9d5348f ("mlx5: Add
loopback flags to QP creation").
Validate create_flags against a supported-flags mask instead of rejecting
anything that is not MLX5DV_QP_CREATE_TUNNEL_OFFLOADS. A create_flags of
0 is now accepted, unknown bits are rejected, and the vendor flag is OR-ed
in rather than assigned. The loopback flags that commit also adds do not
exist in this tree, so only the validation is taken.
Sponsored by: NVidia networking
MFC after: 1 month
---
contrib/ofed/libmlx5/verbs.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/contrib/ofed/libmlx5/verbs.c b/contrib/ofed/libmlx5/verbs.c
index 5e91dcaf5f7a..a0c6111ff107 100644
--- a/contrib/ofed/libmlx5/verbs.c
+++ b/contrib/ofed/libmlx5/verbs.c
@@ -1265,6 +1265,11 @@ enum {
MLX5_DV_CREATE_QP_SUP_COMP_MASK = MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS
};
+enum {
+ MLX5DV_QP_CREATE_SUP_FLAGS =
+ (MLX5DV_QP_CREATE_TUNNEL_OFFLOADS),
+};
+
enum {
MLX5_CREATE_QP_EX2_COMP_MASK = (IBV_QP_INIT_ATTR_CREATE_FLAGS |
IBV_QP_INIT_ATTR_MAX_TSO_HEADER |
@@ -1318,15 +1323,17 @@ static struct ibv_qp *create_qp(struct ibv_context *context,
if (mlx5_qp_attr->comp_mask &
MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS) {
- if (mlx5_qp_attr->create_flags &
- MLX5DV_QP_CREATE_TUNNEL_OFFLOADS) {
- mlx5_create_flags = MLX5_QP_FLAG_TUNNEL_OFFLOADS;
- } else {
+ if (!check_comp_mask(mlx5_qp_attr->create_flags,
+ MLX5DV_QP_CREATE_SUP_FLAGS)) {
mlx5_dbg(fp, MLX5_DBG_QP,
"Unsupported creation flags requested for create_qp\n");
errno = EINVAL;
goto err;
}
+ if (mlx5_qp_attr->create_flags &
+ MLX5DV_QP_CREATE_TUNNEL_OFFLOADS) {
+ mlx5_create_flags |= MLX5_QP_FLAG_TUNNEL_OFFLOADS;
+ }
}
}