From nobody Wed Nov 22 01:52:03 2023 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 4SZkkq44z2z51WB5; Wed, 22 Nov 2023 01:52:03 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4SZkkq1ymtz3HZP; Wed, 22 Nov 2023 01:52:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1700617923; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lxv5bl/g6F/0n8Mov7ljJWp6B+9HHI0rIi5A7JMikoI=; b=m6sL7PtjghLBl/dq1MVFScrJdkLVw94c4zzV/GnG8pFIJQZ5VUORKBSR2Ssz23X08gJwU0 oOf9yOV/uF8/qVxfLa9jJBvKfv5KsayFcdpIeYP5zT7TN9YbdEjqkrAQ5uz3NyMcgmLb1p t2bkhAatu3xfSu5dtgxoxanWW2N/2smNyN73Pw7waaw9wl9zCtQdZs3mfQZG6+53fxUdzP En2NGSR3DHjjS2m8XUSwSAUXL5Sy5nRGjpRvOnRrJaFY6sXfLWQba6caayD1xSU+LHpMPV fcGEPejXjQaUn1OZw9PBCyYyS9t708PK4MBsl7+s9MXTvlqpJD2LQhjurSVrmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1700617923; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lxv5bl/g6F/0n8Mov7ljJWp6B+9HHI0rIi5A7JMikoI=; b=Fo4lJND/aV6Sb1rGKQiAzNC8wdjc8cYXg94L/XpL9exkRABF5kAhWSYICJCSQXOSOsVHKM Hj9u6ARto/GwGE+IdshHpRQQN4RnaH8G2iZETf+cVk4pD4Y092ExD8AyKhe9DyaySwwYtq 2s9UP06pUAYb0rjYc0z61ApoFRB2Oh8fy3JPUuz5uDHA7FjPAU5QvWXBH8StxsjV+ldA8v dy8l/eyEkOUVBKz+aQLDzBSo3ntHObHMp3zqygEeq3FaG+nh7CQrjZe7s4rXF2VYlh82Fn p8CgiAoxbCqRD87xfjSp5Npq+1eeo32e5zQDEBAvFwt2URwCSwG8/MC8v6Ykdw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1700617923; a=rsa-sha256; cv=none; b=ZcH+UtyTn4+jOGLcf5OgxgTLylom0o/d3+cgYJpW+mJurGjkRQRekNDPVOmS8+vMMIKgO0 vytp6IfY8rN91hxnAyz01mlL3iUa6sxnvMHGc9woXTo1r7nbkGm5kCXMM6gw3JfNxN4fSv /OtythHMIdUFA5Pzqgcd1Uq00TP6bjgaCZ520BuBmUdMoR9U6+zecdnGNwahUW3IEsCquk f24o+usqzsmmh1huBPsm0wzEHvGaEoXrn54hd0iwMPNUm7fzRWzmu03Dwoh0wIa2DjfKXV 26ms9lr0jvemdEUAOAV1aw6RGZgnosd16MrF9rPjPKvHSe6FKCRdi0Ce1Zl9kQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4SZkkq0rmQz10Dr; Wed, 22 Nov 2023 01:52:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3AM1q3bG080982; Wed, 22 Nov 2023 01:52:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3AM1q3qu080979; Wed, 22 Nov 2023 01:52:03 GMT (envelope-from git) Date: Wed, 22 Nov 2023 01:52:03 GMT Message-Id: <202311220152.3AM1q3qu080979@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 588203bfbdc4 - stable/14 - mlx5: Introduce new destination type TABLE_TYPE 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org 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/stable/14 X-Git-Reftype: branch X-Git-Commit: 588203bfbdc46073dc8b4515d31a6a9efe3d9a3c Auto-Submitted: auto-generated The branch stable/14 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=588203bfbdc46073dc8b4515d31a6a9efe3d9a3c commit 588203bfbdc46073dc8b4515d31a6a9efe3d9a3c Author: Patrisious Haddad AuthorDate: 2023-04-04 06:01:24 +0000 Commit: Konstantin Belousov CommitDate: 2023-11-22 01:40:28 +0000 mlx5: Introduce new destination type TABLE_TYPE (cherry picked from commit 7b959396ca6fae5635260131eedb9bc19f2726a3) --- sys/dev/mlx5/device.h | 4 +++ sys/dev/mlx5/mlx5_core/mlx5_main.c | 43 +++++++++++++++++++++++++++++ sys/dev/mlx5/mlx5_ifc.h | 55 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 100 insertions(+), 2 deletions(-) diff --git a/sys/dev/mlx5/device.h b/sys/dev/mlx5/device.h index 11afc68efdf2..4b7cf8686794 100644 --- a/sys/dev/mlx5/device.h +++ b/sys/dev/mlx5/device.h @@ -993,6 +993,7 @@ enum mlx5_cap_type { MLX5_CAP_DEC, MLX5_CAP_TLS, MLX5_CAP_DEV_EVENT = 0x14, + MLX5_CAP_GENERAL_2 = 0x20, /* NUM OF CAP Types */ MLX5_CAP_NUM }; @@ -1031,6 +1032,9 @@ enum mlx5_mcam_feature_groups { #define MLX5_CAP_GEN_MAX(mdev, cap) \ MLX5_GET(cmd_hca_cap, mdev->hca_caps_max[MLX5_CAP_GENERAL], cap) +#define MLX5_CAP_GEN_2(mdev, cap) \ + MLX5_GET(cmd_hca_cap_2, mdev->hca_caps_cur[MLX5_CAP_GENERAL_2], cap) + #define MLX5_CAP_ETH(mdev, cap) \ MLX5_GET(per_protocol_networking_offload_caps,\ mdev->hca_caps_cur[MLX5_CAP_ETHERNET_OFFLOADS], cap) diff --git a/sys/dev/mlx5/mlx5_core/mlx5_main.c b/sys/dev/mlx5/mlx5_core/mlx5_main.c index df38a41a8be0..efaf726e19e5 100644 --- a/sys/dev/mlx5/mlx5_core/mlx5_main.c +++ b/sys/dev/mlx5/mlx5_core/mlx5_main.c @@ -559,6 +559,43 @@ static int handle_hca_cap_atomic(struct mlx5_core_dev *dev) return err; } +static int handle_hca_cap_2(struct mlx5_core_dev *dev) +{ + void *set_ctx; + void *set_hca_cap; + int set_sz = MLX5_ST_SZ_BYTES(set_hca_cap_in); + int err; + + if (MLX5_CAP_GEN_MAX(dev, hca_cap_2)) { + err = mlx5_core_get_caps(dev, MLX5_CAP_GENERAL_2); + if (err) + return err; + } else { + return 0; + } + + /* To be added if sw_vhca support was added */ + /*if (!MLX5_CAP_GEN_2_MAX(dev, sw_vhca_id_valid) || + !(dev->priv.sw_vhca_id > 0)) + return 0;*/ + + set_ctx = kzalloc(set_sz, GFP_KERNEL); + if (!set_ctx) + return -ENOMEM; + + MLX5_SET(set_hca_cap_in, set_ctx, op_mod, + MLX5_CAP_GENERAL_2 << 1); + set_hca_cap = MLX5_ADDR_OF(set_hca_cap_in, set_ctx, capability); + memcpy(set_hca_cap, dev->hca_caps_cur[MLX5_CAP_GENERAL_2], + MLX5_ST_SZ_BYTES(cmd_hca_cap_2)); + //MLX5_SET(cmd_hca_cap_2, set_hca_cap, sw_vhca_id_valid, 1); + + err = set_caps(dev, set_ctx, set_sz); + + kfree(set_ctx); + return err; +} + static int set_hca_ctrl(struct mlx5_core_dev *dev) { struct mlx5_reg_host_endianess he_in; @@ -1139,6 +1176,12 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, struct mlx5_priv *priv, goto reclaim_boot_pages; } + err = handle_hca_cap_2(dev); + if (err) { + mlx5_core_err(dev, "handle_hca_cap_2 failed\n"); + goto reclaim_boot_pages; + } + err = mlx5_satisfy_startup_pages(dev, 0); if (err) { mlx5_core_err(dev, "failed to allocate init pages\n"); diff --git a/sys/dev/mlx5/mlx5_ifc.h b/sys/dev/mlx5/mlx5_ifc.h index 7e76112cbec9..a10cb60dbfdd 100644 --- a/sys/dev/mlx5/mlx5_ifc.h +++ b/sys/dev/mlx5/mlx5_ifc.h @@ -302,6 +302,11 @@ enum { MLX5_CMD_OP_GENERAL_END = 0xd00, }; +enum { + MLX5_FT_NIC_RX_2_NIC_RX_RDMA = BIT(0), + MLX5_FT_NIC_TX_RDMA_2_NIC_TX = BIT(1), +}; + enum { MLX5_ICMD_CMDS_OPCODE_ICMD_OPCODE_QUERY_FW_INFO = 0x8007, MLX5_ICMD_CMDS_OPCODE_ICMD_QUERY_CAPABILITY = 0x8400, @@ -524,7 +529,9 @@ struct mlx5_ifc_dest_format_struct_bits { u8 destination_type[0x8]; u8 destination_id[0x18]; - u8 reserved_0[0x20]; + u8 reserved_0[0x8]; + u8 destination_table_type[0x8]; + u8 reserved_at_1[0x10]; }; struct mlx5_ifc_ipv4_layout_bits { @@ -1144,7 +1151,12 @@ enum { }; struct mlx5_ifc_cmd_hca_cap_bits { - u8 reserved_0[0x80]; + u8 reserved_0[0x20]; + + u8 hca_cap_2[0x1]; + u8 reserved_at_21[0x1f]; + + u8 reserved_at_40[0x40]; u8 log_max_srq_sz[0x8]; u8 log_max_qp_sz[0x8]; @@ -1439,10 +1451,48 @@ struct mlx5_ifc_cmd_hca_cap_bits { u8 reserved_at_7c0[0x40]; }; +struct mlx5_ifc_cmd_hca_cap_2_bits { + u8 reserved_at_0[0x80]; + + u8 migratable[0x1]; + u8 reserved_at_81[0x1f]; + + u8 max_reformat_insert_size[0x8]; + u8 max_reformat_insert_offset[0x8]; + u8 max_reformat_remove_size[0x8]; + u8 max_reformat_remove_offset[0x8]; + + u8 reserved_at_c0[0x8]; + u8 migration_multi_load[0x1]; + u8 migration_tracking_state[0x1]; + u8 reserved_at_ca[0x16]; + + u8 reserved_at_e0[0xc0]; + + u8 flow_table_type_2_type[0x8]; + u8 reserved_at_1a8[0x3]; + u8 log_min_mkey_entity_size[0x5]; + u8 reserved_at_1b0[0x10]; + + u8 reserved_at_1c0[0x60]; + + u8 reserved_at_220[0x1]; + u8 sw_vhca_id_valid[0x1]; + u8 sw_vhca_id[0xe]; + u8 reserved_at_230[0x10]; + + u8 reserved_at_240[0xb]; + u8 ts_cqe_metadata_size2wqe_counter[0x5]; + u8 reserved_at_250[0x10]; + + u8 reserved_at_260[0x5a0]; +}; + enum mlx5_flow_destination_type { MLX5_FLOW_DESTINATION_TYPE_VPORT = 0x0, MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE = 0x1, MLX5_FLOW_DESTINATION_TYPE_TIR = 0x2, + MLX5_FLOW_DESTINATION_TYPE_TABLE_TYPE = 0xA, }; union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits { @@ -2937,6 +2987,7 @@ struct mlx5_ifc_hca_vport_context_bits { union mlx5_ifc_hca_cap_union_bits { struct mlx5_ifc_cmd_hca_cap_bits cmd_hca_cap; + struct mlx5_ifc_cmd_hca_cap_2_bits cmd_hca_cap_2; struct mlx5_ifc_odp_cap_bits odp_cap; struct mlx5_ifc_atomic_caps_bits atomic_caps; struct mlx5_ifc_roce_cap_bits roce_cap;