From nobody Wed Sep 16 14:13:03 2026 X-Original-To: dev-commits-src-all@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 4hlLSw13BZz6rWqv for ; Wed, 16 Sep 2026 14:13:04 +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 4hlLSv4Swsz3ML6 for ; Wed, 16 Sep 2026 14:13:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789567983; 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=ooJGeu3lHu3znJT5iPgbJuV759Yjkp0V6a/XLUlySI0=; b=ry1vuMMsDwaNVuT4jK5uPAF8bgYFxDb2fYJFSubXC1dNJ5WhG2zj9O4xecH60oi4D5ZfGj 6XwUrfdUxgKq0RXhPY1ayInL1a/WZGTLhvcy6Q4wGe6JmArlrdO7hfeCwhYUnvFyknqQFS JJM5P3i9gu4xY3DGGSSzhB0tmxKXrT7pA46FOjWAj0nQsQ9QT/cgJtVdhULc+nM1HtT4NR y0OKkpfIUnJ85kIwE8N55NbPmTsRObtwXtUUQCG7c61ro2GO5/1dsVS9gcT+bFQVSYNc4R aFqIhrL2oqKsCd2nZnFxgjl2NpSJpC3/i7jEKBACk+xReJfsWishhFjuvc2Ruw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1789567983; b=TY4Num/94nmI1m7i1DDt+iVVR4rN37R7VAgFmF0xMjHA++yuaySpU4wwuIptIRvn+zLOTd Z9/SRsHEqtfKeQ10K6T+HoAT2tAqEPWlmZ+m2249X8H6fbF13DNmMY4uKR+kXSHUjz774L wAAI3gIR6lW1CjeeEGKGoArRvFuMk/VsSLLYhjB2cMUzBhDJEq7uF/w4x8cgebXOlo9KVp lt/MU/esQqe6bmrQ88IAeQr3BehWVSLeUcxbG+LWREtHgyFX2K6bUqPXKgzLaM8A8xZd07 nCQkRZDFB+hrEfNQnuDiO5tSBiDvshF5AiMJWoGRqp6gtSBlhcG0bTki6T/BFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789567983; 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=ooJGeu3lHu3znJT5iPgbJuV759Yjkp0V6a/XLUlySI0=; b=qErAh57m+iT7D3yeq6KCQRyixq+d3eBJzuDWjra9cajn9cfvg7CQMqhXn+PC+8DJja3W7R yF8KP6q4lyM4AelmbyV95FPCxjFl1AXzLyixv9xTNXZeS5EaqtcJ3Bf8Ny51acrsPXt+uV lnxGf7eyUwlnty3Gw2itqvY0KQhaybN/iF5z4JEIYao/Fu/zbDOQlAY5vOOxWg2N7YaQxg lR0uALH4/JiiJcg6btBAvKxOIdt6HuMUjFeFz/XF1maX5MhYJd9M6jc9+e5h9HBFHJS5uD FJTvLhe1UNCqGzCtI7TiJPk7wrMTo49/V4LuH4TeH78JRcWvFcsgTEgDFKq5wA== 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 4hlLSv3QPVzqHF for ; Wed, 16 Sep 2026 14:13:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 36160 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 16 Sep 2026 14:13:03 +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: ebfe0400185f - main - IB/mlx5: Expose software parsing for Raw Ethernet QP List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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: ebfe0400185fdcd7a512333afa7cb54d2d6ba6f6 Auto-Submitted: auto-generated Date: Wed, 16 Sep 2026 14:13:03 +0000 Message-Id: <6aaaa3ef.36160.36ce8d85@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=ebfe0400185fdcd7a512333afa7cb54d2d6ba6f6 commit ebfe0400185fdcd7a512333afa7cb54d2d6ba6f6 Author: Vag Singh AuthorDate: 2025-08-14 06:33:23 +0000 Commit: Konstantin Belousov CommitDate: 2026-09-16 14:12:08 +0000 IB/mlx5: Expose software parsing for Raw Ethernet QP [PATCH 17/31] FreeBSD OFED support for DPDK MLX5 PMD Software parsing (SWP) is a feature that can be used to instruct the device to stop using its internal parser and to parse packets on the transmit path according to offsets set for each packets. Through this feature, the device allows the handling of checksum and LSO by the hardware according to the location of IP and TCP/UDP headers. Enable SW parsing on Raw Ethernet send queue by default if firmware supports it and report these capabilities to user space. Differential revision: https://reviews.freebsd.org/D32191 MFC after: 1 month --- sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c | 21 +++++++++++++++++++++ sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c | 3 +++ sys/ofed/include/uapi/rdma/mlx5-abi.h | 17 +++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c index 019780c2ed02..960bc8985700 100644 --- a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c +++ b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c @@ -883,6 +883,27 @@ static int mlx5_ib_query_device(struct ib_device *ibdev, if (field_avail(typeof(resp), reserved, uhw->outlen)) resp.response_length += sizeof(resp.reserved); + if (field_avail(typeof(resp), sw_parsing_caps, + uhw->outlen)) { + resp.response_length += sizeof(resp.sw_parsing_caps); + if (MLX5_CAP_ETH(mdev, swp)) { + resp.sw_parsing_caps.sw_parsing_offloads |= + MLX5_IB_SW_PARSING; + + if (MLX5_CAP_ETH(mdev, swp_csum)) + resp.sw_parsing_caps.sw_parsing_offloads |= + MLX5_IB_SW_PARSING_CSUM; + + if (MLX5_CAP_ETH(mdev, swp_lso)) + resp.sw_parsing_caps.sw_parsing_offloads |= + MLX5_IB_SW_PARSING_LSO; + + if (resp.sw_parsing_caps.sw_parsing_offloads) + resp.sw_parsing_caps.supported_qpts = + BIT(IB_QPT_RAW_PACKET); + } + } + if (uhw->outlen) { err = ib_copy_to_udata(uhw, &resp, resp.response_length); diff --git a/sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c b/sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c index afa4ca5456d8..10f06e710ead 100644 --- a/sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c +++ b/sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c @@ -1120,6 +1120,9 @@ static int create_raw_packet_qp_sq(struct mlx5_ib_dev *dev, MLX5_SET(sqc, sqc, cqn, MLX5_GET(qpc, qpc, cqn_snd)); MLX5_SET(sqc, sqc, tis_lst_sz, 1); MLX5_SET(sqc, sqc, tis_num_0, sq->tisn); + if (MLX5_CAP_GEN(dev->mdev, eth_net_offloads) && + MLX5_CAP_ETH(dev->mdev, swp)) + MLX5_SET(sqc, sqc, allow_swp, 1); wq = MLX5_ADDR_OF(sqc, sqc, wq); MLX5_SET(wq, wq, wq_type, MLX5_WQ_TYPE_CYCLIC); diff --git a/sys/ofed/include/uapi/rdma/mlx5-abi.h b/sys/ofed/include/uapi/rdma/mlx5-abi.h index f755bcd793b3..2e474f5c2d76 100644 --- a/sys/ofed/include/uapi/rdma/mlx5-abi.h +++ b/sys/ofed/include/uapi/rdma/mlx5-abi.h @@ -168,6 +168,22 @@ struct mlx5_ib_cqe_comp_caps { __u32 supported_format; /* enum mlx5_ib_cqe_comp_res_format */ }; +enum mlx5_ib_sw_parsing_offloads { + MLX5_IB_SW_PARSING = 1 << 0, + MLX5_IB_SW_PARSING_CSUM = 1 << 1, + MLX5_IB_SW_PARSING_LSO = 1 << 2, +}; + +struct mlx5_ib_sw_parsing_caps { + __u32 sw_parsing_offloads; /* enum mlx5_ib_sw_parsing_offloads */ + + /* Corresponding bit will be set if qp type from + * 'enum ib_qp_type' is supported, e.g. + * supported_qpts |= 1 << IB_QPT_RAW_PACKET + */ + __u32 supported_qpts; +}; + struct mlx5_ib_query_device_resp { __u32 comp_mask; @@ -178,6 +194,7 @@ struct mlx5_ib_query_device_resp { struct mlx5_packet_pacing_caps packet_pacing_caps; __u32 mlx5_ib_support_multi_pkt_send_wqes; __u32 reserved; + struct mlx5_ib_sw_parsing_caps sw_parsing_caps; }; enum mlx5_ib_create_cq_flags {