From nobody Wed Sep 16 14:13:10 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hlLT22j9Yz6rWLX for ; Wed, 16 Sep 2026 14:13:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hlLT21LSkz3Mcq for ; Wed, 16 Sep 2026 14:13:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789567990; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xETBy78FiMGN7H2Rp3Y9XRi62Bf9Xpy/0VEOhzrWQfQ=; b=fnCjHwzRiJE8zuwqg+CalxLIhb4f2Vjb9g6v0c7u2jipOCUYxS8zOxFhnMn4jE6ObxgzIi 4qrKLELKgH/RCzirC29BILqDQ3kNfhEeFSWnsffaT/VnZILMIg/ZUoDmMejbouEtcdzQz2 yV7FT8NULemDq+qjF+7PtGdDTUiuGV9DQvvIGnkHHRMfQTt7lAGFLFwlkKAAAxg7PWrsZf zL3BkOOS9KjRK78dW6oUZkIKwl3mp4wn+zXizsokTkJ8kniJoRcWMIvrR0qZ/KegaaApPy wVNijso7i916TTQsEYarDAeNJxzHKyFNhFG0xqeZDHm48okrxIooh8aOwWyGYA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1789567990; b=fqI/trB0npoy+zgVUut1gfcYtLkDXtrwJ60zYX259A9mntIM4LPFMeAFHC0xl6aowFK7Dh O7NjB/FJD20qzGSCSqQnNUsDvq+gyZ4AQMcOiFm1GjXGnMhk9z1ICpEmckk7qMc6aa0Lkf Ziwp9FUqr4LHMlRnw0Gyvr/uNlPXnye3m7ypkSnW2sWYu5lhuRX687BMcCN+dqVMhNuV+M pnLWt5N8SCSu+ZMKpEfyP/MlWqSth9l9v0oEmiKceGipp3RzhC8ghu1a7MbGlyOow/rb+G 38RU20/CIDXizxkCA9YJPeSRXBPijmHrNAiyB2akqvN61a/cKNUOLuX14Wf+IQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789567990; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xETBy78FiMGN7H2Rp3Y9XRi62Bf9Xpy/0VEOhzrWQfQ=; b=PD0/tF3rzh5i5+EFsNPge1Y+YUS10lccD5/b65gGInzPYFpsBPlJC09PJiW6KExVpBjy9s MTrqiZkAhDErjQ/+Fra+q09EHy+oo4No6SziYu6ZUSBuuOXYW3ySAxndY7tc8u96Bs+VLL ElPbLofAADOCbHUAbvQXVnZBsRe67977fUyaSz2m/1GXyeyCY+7l94kC8QrStfrLDhOwDO aZ3463EGmIAweX6wU0NaUitp2Yd2OfgRbhSSvmgBhjx04+KayobEJv6UYb2lb3mHMCgQVD /WyRzJBW3nZf+tuLYSkA81O9sR08j0mcS4Yab8hPxMibVijcRNAGlMB7XB+XHg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hlLT20N8Xzr2W for ; Wed, 16 Sep 2026 14:13:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 37e6a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 16 Sep 2026 14:13:10 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Vag Singh From: Konstantin Belousov Subject: git: 0d63d42ad70d - main - libmlx5: Report if kernel allows using MPW in SQ List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0d63d42ad70dd5f6e5acd8eac466c8e9fe584204 Auto-Submitted: auto-generated Date: Wed, 16 Sep 2026 14:13:10 +0000 Message-Id: <6aaaa3f6.37e6a.50a24cf7@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0d63d42ad70dd5f6e5acd8eac466c8e9fe584204 commit 0d63d42ad70dd5f6e5acd8eac466c8e9fe584204 Author: Vag Singh AuthorDate: 2025-08-14 06:43:08 +0000 Commit: Konstantin Belousov CommitDate: 2026-09-16 14:12:08 +0000 libmlx5: Report if kernel allows using MPW in SQ PATCH 20/31] FreeBSD OFED support for DPDK MLX5 PMD a) Use flag MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED to indicate hardware supports multi packet WQE and it's enabled in SQ context. Flag MLX5DV_CONTEXT_FLAGS_MPW is deprecated, shall not be used in new applications. b) Report if enhanced multi packet send WQE is supported through mlx5 direct verbs. Differential revision: https://reviews.freebsd.org/D32194 MFC after: 1 month --- contrib/ofed/libmlx5/mlx5-abi.h | 6 ++++++ contrib/ofed/libmlx5/mlx5.c | 7 +++++-- contrib/ofed/libmlx5/mlx5.h | 4 +++- contrib/ofed/libmlx5/mlx5dv.h | 4 +++- contrib/ofed/libmlx5/mlx5dv_query_device.3 | 4 +++- contrib/ofed/libmlx5/verbs.c | 7 +++++-- 6 files changed, 25 insertions(+), 7 deletions(-) diff --git a/contrib/ofed/libmlx5/mlx5-abi.h b/contrib/ofed/libmlx5/mlx5-abi.h index d05cb407e22a..bce9e559326b 100644 --- a/contrib/ofed/libmlx5/mlx5-abi.h +++ b/contrib/ofed/libmlx5/mlx5-abi.h @@ -273,6 +273,12 @@ struct mlx5_packet_pacing_caps { __u32 reserved; }; +enum mlx5_mpw_caps { + MLX5_MPW_OBSOLETE = 1 << 0, /* Obsoleted, don't use */ + MLX5_ALLOW_MPW = 1 << 1, + MLX5_SUPPORT_EMPW = 1 << 2, +}; + struct mlx5_query_device_ex_resp { struct ibv_query_device_resp_ex ibv_resp; __u32 comp_mask; diff --git a/contrib/ofed/libmlx5/mlx5.c b/contrib/ofed/libmlx5/mlx5.c index 5737680db93b..807725580dac 100644 --- a/contrib/ofed/libmlx5/mlx5.c +++ b/contrib/ofed/libmlx5/mlx5.c @@ -650,14 +650,17 @@ int mlx5dv_query_device(struct ibv_context *ctx_in, if (mctx->cqe_version == MLX5_CQE_VERSION_V1) attrs_out->flags |= MLX5DV_CONTEXT_FLAGS_CQE_V1; - if (mctx->vendor_cap_flags & MLX5_VENDOR_CAP_FLAGS_MPW) - attrs_out->flags |= MLX5DV_CONTEXT_FLAGS_MPW; + if (mctx->vendor_cap_flags & MLX5_VENDOR_CAP_FLAGS_MPW_ALLOWED) + attrs_out->flags |= MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED; if (attrs_out->comp_mask & MLX5DV_CONTEXT_MASK_CQE_COMPRESION) { attrs_out->cqe_comp_caps = mctx->cqe_comp_caps; comp_mask_out |= MLX5DV_CONTEXT_MASK_CQE_COMPRESION; } + if (mctx->vendor_cap_flags & MLX5_VENDOR_CAP_FLAGS_ENHANCED_MPW) + attrs_out->flags |= MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW; + attrs_out->comp_mask = comp_mask_out; return 0; diff --git a/contrib/ofed/libmlx5/mlx5.h b/contrib/ofed/libmlx5/mlx5.h index 45082243a56c..11fceff1f433 100644 --- a/contrib/ofed/libmlx5/mlx5.h +++ b/contrib/ofed/libmlx5/mlx5.h @@ -180,7 +180,9 @@ enum { }; enum mlx5_vendor_cap_flags { - MLX5_VENDOR_CAP_FLAGS_MPW = 1 << 0, + MLX5_VENDOR_CAP_FLAGS_MPW = 1 << 0, /* Obsoleted */ + MLX5_VENDOR_CAP_FLAGS_MPW_ALLOWED = 1 << 1, + MLX5_VENDOR_CAP_FLAGS_ENHANCED_MPW = 1 << 2, }; enum { diff --git a/contrib/ofed/libmlx5/mlx5dv.h b/contrib/ofed/libmlx5/mlx5dv.h index 9555d9e2851f..102efdf9065b 100644 --- a/contrib/ofed/libmlx5/mlx5dv.h +++ b/contrib/ofed/libmlx5/mlx5dv.h @@ -81,7 +81,9 @@ enum mlx5dv_context_flags { * This flag indicates if CQE version 0 or 1 is needed. */ MLX5DV_CONTEXT_FLAGS_CQE_V1 = (1 << 0), - MLX5DV_CONTEXT_FLAGS_MPW = (1 << 1), + MLX5DV_CONTEXT_FLAGS_OBSOLETE = (1 << 1), /* Obsoleted, don't use */ + MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED = (1 << 2), + MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW = (1 << 3), }; enum mlx5dv_cq_init_attr_mask { diff --git a/contrib/ofed/libmlx5/mlx5dv_query_device.3 b/contrib/ofed/libmlx5/mlx5dv_query_device.3 index b33a75b42a20..6e92c0766124 100644 --- a/contrib/ofed/libmlx5/mlx5dv_query_device.3 +++ b/contrib/ofed/libmlx5/mlx5dv_query_device.3 @@ -35,7 +35,9 @@ enum mlx5dv_context_flags { * This flag indicates if CQE version 0 or 1 is needed. */ MLX5DV_CONTEXT_FLAGS_CQE_V1 = (1 << 0), - MLX5DV_CONTEXT_FLAGS_MPW = (1 << 1), /* Multi packet WQE is supported or not */ + MLX5DV_CONTEXT_FLAGS_OBSOLETE = (1 << 1), /* Obsoleted, don't use */ + MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED = (1 << 2), /* Multi packet WQE is allowed */ + MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW = (1 << 3), /* Enhanced multi packet WQE is supported or not */ .in -8 }; .fi diff --git a/contrib/ofed/libmlx5/verbs.c b/contrib/ofed/libmlx5/verbs.c index db77b0d20cd1..ae09281931e7 100644 --- a/contrib/ofed/libmlx5/verbs.c +++ b/contrib/ofed/libmlx5/verbs.c @@ -1992,8 +1992,11 @@ int mlx5_query_device_ex(struct ibv_context *context, attr->rss_caps.rx_hash_function = resp.rss_caps.rx_hash_function; attr->packet_pacing_caps = resp.packet_pacing_caps.caps; - if (resp.support_multi_pkt_send_wqe) - mctx->vendor_cap_flags |= MLX5_VENDOR_CAP_FLAGS_MPW; + if (resp.support_multi_pkt_send_wqe & MLX5_ALLOW_MPW) + mctx->vendor_cap_flags |= MLX5_VENDOR_CAP_FLAGS_MPW_ALLOWED; + + if (resp.support_multi_pkt_send_wqe & MLX5_SUPPORT_EMPW) + mctx->vendor_cap_flags |= MLX5_VENDOR_CAP_FLAGS_ENHANCED_MPW; mctx->cqe_comp_caps = resp.cqe_comp_caps;