From patchwork Tue Feb 21 07:07:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 124276 X-Patchwork-Delegate: gakhil@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D0A9241CFA; Tue, 21 Feb 2023 08:08:42 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0F581431A2; Tue, 21 Feb 2023 08:08:30 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2068.outbound.protection.outlook.com [40.107.93.68]) by mails.dpdk.org (Postfix) with ESMTP id E75CF4319E for ; Tue, 21 Feb 2023 08:08:26 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jKPpy+ws6i+m6GLGKdis6vwAMbYp1S+qrE+BToogGR6moujH1fgdvWtIJok22MrVwQT+ErJt3bIRbQoYduAxhFROhB/fiIrLlDDiEw+ufZBcWWMGVew90Vr/jvauSvx/K+aki4C97J7JVKmFpgsPLQXlEvEBlqamOMCMERaUBofYtH6ybovwH8z93PfaCMk1LNLneZlZ2qiWinx6lD/XTC5/zZFPMxEOm846d6xaAFybreYfH/mmGjCp3PrAgiheTkvis2Tc3GYsnH8WwX19GSQ5Z4ZK355b6dnTQ7WcC97MI/+K1GlHmDdgmwOo24ExNUCDc1Ij8PpRChA3dribvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZvUWwn52B7t2aMcOqGtmuUKMO8iNQyDmF8+WcANv9yo=; b=hGV93J28cjYthSkur47yXY7RceuClEWzq0isHak9wQjierOM6A3lD+YqKZkXvEE/rfGg0hzbPfkFpWKL0/zCPxZQ9vCwecWeDiSlym+KFs03N7PIwYYZrxTlNE3r0/LF/QJ3leTkSsgebDW+A9tgoGZXygLb/ODskBpZE28bUAXHVWYLajBeVscqtDJEZqyWN2rsVCv7pJpLL6Bkt0GR1ndJ3AyUqFiDzintSYw1DNUHhu6Msdhf11xOfsEBuBsxBArYhuHTquVEfMK+ACW0oWQ/MZlq2snz76EXBDWRQw9x6c03PzpRYVhd+9C+HfRb6EUJfbK9r3BIpjKFjJmhEw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZvUWwn52B7t2aMcOqGtmuUKMO8iNQyDmF8+WcANv9yo=; b=awMegB6d6O5vuZJdBwYShLh615T+2LNvVy5RCn3iIl461IqKmnKrkFqulTe2+O7/iz+fmcBqprqnxY40Pcw6lTeRsuGFb9c9KBTKO306nqFz+zxpofvXhSHiurX2KaPWXqYJFrzIRVvkD1M1a/DcUGBKIi/AZmEscfXfm3m1MYu1/V2adwSufwXO6mLyzgGDJM2Omev/9Q4Z3AOFL6kcF+yJTN5m8FfF09jfQpemsW3YgjRdzfVU6z2YJQo/B6lBpjoE76TGJWTUjHIiqyB3l7+lJUpxfEWsqXdqomlFH1CFKqzvaXNkMEOjjxU9qNuRtcW3dQdnPlvNJCrQKiFAzQ== Received: from BN6PR17CA0043.namprd17.prod.outlook.com (2603:10b6:405:75::32) by CH3PR12MB8547.namprd12.prod.outlook.com (2603:10b6:610:164::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.19; Tue, 21 Feb 2023 07:08:25 +0000 Received: from BN8NAM11FT010.eop-nam11.prod.protection.outlook.com (2603:10b6:405:75:cafe::8) by BN6PR17CA0043.outlook.office365.com (2603:10b6:405:75::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.21 via Frontend Transport; Tue, 21 Feb 2023 07:08:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by BN8NAM11FT010.mail.protection.outlook.com (10.13.177.53) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.20 via Frontend Transport; Tue, 21 Feb 2023 07:08:23 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Mon, 20 Feb 2023 23:08:10 -0800 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Mon, 20 Feb 2023 23:08:10 -0800 Received: from nvidia.com (10.127.8.13) by mail.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36 via Frontend Transport; Mon, 20 Feb 2023 23:08:08 -0800 From: Michael Baum To: CC: Matan Azrad , Akhil Goyal , "Thomas Monjalon" Subject: [PATCH v3 4/8] compress/mlx5: support new metadata layout added in BF3 Date: Tue, 21 Feb 2023 09:07:52 +0200 Message-ID: <20230221070756.3070819-5-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230221070756.3070819-1-michaelba@nvidia.com> References: <20230202162537.1067595-1-michaelba@nvidia.com> <20230221070756.3070819-1-michaelba@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT010:EE_|CH3PR12MB8547:EE_ X-MS-Office365-Filtering-Correlation-Id: 9f3affb5-2e3c-42a1-36de-08db13da6ca4 X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QLdCLQNn9y6uM8+FkCtL5L3O9/MVtjRdlJtm8qiONALXxjeUpUlTfZlZj69EMnrDv9ZeGuSiCzMETRtc6XdCbbdm28U3ttaDj7DBoBOtuy2CubAmlVX45YmASGI098hTJs6YmLAbuJ+5Z7DQc3Nn03p9Cr9q1g431CagOomz9kAnlxqePkmblq//w13J7GePE73sa91DRfAvCslERWD0bFn3dCmS7itMiFfUpSKsll1m1bWB0YW14k1O4g/Dyj/mWU9He4PLiW2bZHB7LTZfhYsiju/7uhRzK4C2VWLZjND7n62Xw84vgBW+VdfGhPYT1WLqTSgR5+V/Y+xlH4PxcvLaxOHzhoziejRgK7C65xg0/SR7A7mz2GZD9iff/obZQDJQj/NZWu+ikjyTEaOcHkMnb3Qudji5Vb86TEAO0h9wuMKXz3ydULLkTRRPmFzRxb5BWTjP0jtC3/jOIOKiOT526ZZy6DgDXyk1bMZtm7lLQp0YGmcfrbZ2jemJv5p3TeJ4LxDYZGmrUiGM+CdUWVCTdL0F57CnpMZT9WV5k4g3fWYWW857DxFxcYNkQOnqJSqwcwUp3f+BW9jBxRWpGHM53zl0/RbPV8fgvSOJDXz1VSmYbHHL/Uz2qg2aU5LwssLgIDses4sPtSSDgMixutIM2sE60GLCBiSHAL+bqeLqb2Vk2akOmMR0YRSIENN/oDNZG9f+UT8ThFOSxNVj+w== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230025)(4636009)(346002)(136003)(396003)(39860400002)(376002)(451199018)(36840700001)(40470700004)(46966006)(356005)(36860700001)(82740400003)(7636003)(86362001)(36756003)(2906002)(6916009)(8936002)(70206006)(4326008)(41300700001)(70586007)(5660300002)(82310400005)(40460700003)(478600001)(2616005)(426003)(40480700001)(336012)(55016003)(6666004)(83380400001)(47076005)(54906003)(6286002)(26005)(1076003)(186003)(7696005)(316002)(8676002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2023 07:08:23.6432 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9f3affb5-2e3c-42a1-36de-08db13da6ca4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT010.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8547 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Commit [1] add support in Bluefield-3, but Bluefield-3 has different GGA opaque structure than Bluefield-2. This patch updates the PRM structure to include both versions, and culculate the relevant offset for each version in control path. Commit [1] 559014f232b4 ("compress/mlx5: add Bluefield-3 device ID") Signed-off-by: Michael Baum Acked-by: Matan Azrad --- drivers/common/mlx5/mlx5_devx_cmds.c | 6 ++-- drivers/common/mlx5/mlx5_devx_cmds.h | 3 +- drivers/common/mlx5/mlx5_prm.h | 40 +++++++++++++++--------- drivers/compress/mlx5/mlx5_compress.c | 45 +++++++++++++++++---------- 4 files changed, 61 insertions(+), 33 deletions(-) diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c index fb670950ef..b801b05872 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.c +++ b/drivers/common/mlx5/mlx5_devx_cmds.c @@ -987,8 +987,10 @@ mlx5_devx_cmd_query_hca_attr(void *ctx, attr->mmo_dma_qp_en = MLX5_GET(cmd_hca_cap, hcattr, dma_mmo_qp); attr->mmo_compress_qp_en = MLX5_GET(cmd_hca_cap, hcattr, compress_mmo_qp); - attr->mmo_decompress_qp_en = MLX5_GET(cmd_hca_cap, hcattr, - decompress_mmo_qp); + attr->decomp_deflate_v1_en = MLX5_GET(cmd_hca_cap, hcattr, + decompress_deflate_v1); + attr->decomp_deflate_v2_en = MLX5_GET(cmd_hca_cap, hcattr, + decompress_deflate_v2); attr->compress_min_block_size = MLX5_GET(cmd_hca_cap, hcattr, compress_min_block_size); attr->log_max_mmo_dma = MLX5_GET(cmd_hca_cap, hcattr, log_dma_mmo_size); diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h index 6b5a6b8667..045ff404e9 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.h +++ b/drivers/common/mlx5/mlx5_devx_cmds.h @@ -263,7 +263,8 @@ struct mlx5_hca_attr { uint32_t mmo_decompress_sq_en:1; uint32_t mmo_dma_qp_en:1; uint32_t mmo_compress_qp_en:1; - uint32_t mmo_decompress_qp_en:1; + uint32_t decomp_deflate_v1_en:1; + uint32_t decomp_deflate_v2_en:1; uint32_t mmo_regex_qp_en:1; uint32_t mmo_regex_sq_en:1; uint32_t compress_min_block_size:4; diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index 613cc6face..b33c55c257 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -613,17 +613,27 @@ struct mlx5_gga_wqe { struct mlx5_wqe_dseg scatter; } __rte_packed; -struct mlx5_gga_compress_opaque { - uint32_t syndrom; - uint32_t reserved0; - uint32_t scattered_length; - uint32_t gathered_length; - uint64_t scatter_crc; - uint64_t gather_crc; - uint32_t crc32; - uint32_t adler32; - uint8_t reserved1[216]; -} __rte_packed; +union mlx5_gga_compress_opaque { + struct { + uint32_t syndrome; + uint32_t reserved0; + uint32_t scattered_length; + union { + struct { + uint32_t reserved1[5]; + uint32_t crc32; + uint32_t adler32; + } v1 __rte_packed; + struct { + uint32_t crc32; + uint32_t adler32; + uint32_t crc32c; + uint32_t xxh32; + } v2 __rte_packed; + }; + } __rte_packed; + uint32_t data[64]; +}; struct mlx5_ifc_regexp_mmo_control_bits { uint8_t reserved_at_31[0x2]; @@ -1467,7 +1477,7 @@ struct mlx5_ifc_cmd_hca_cap_bits { u8 log_max_bsf_list_size[0x6]; u8 umr_extended_translation_offset[0x1]; u8 null_mkey[0x1]; - u8 log_max_klm_list_size[0x6]; + u8 log_maxklm_list_size[0x6]; u8 non_wire_sq[0x1]; u8 reserved_at_121[0x9]; u8 log_max_ra_req_dc[0x6]; @@ -1756,8 +1766,10 @@ struct mlx5_ifc_cmd_hca_cap_bits { u8 dma_mmo_qp[0x1]; u8 regexp_mmo_qp[0x1]; u8 compress_mmo_qp[0x1]; - u8 decompress_mmo_qp[0x1]; - u8 reserved_at_74c[0x14]; + u8 decompress_deflate_v1[0x1]; + u8 reserved_at_74c[0x4]; + u8 decompress_deflate_v2[0x1]; + u8 reserved_at_751[0xf]; u8 reserved_at_760[0x3]; u8 log_max_num_header_modify_argument[0x5]; u8 log_header_modify_argument_granularity_offset[0x4]; diff --git a/drivers/compress/mlx5/mlx5_compress.c b/drivers/compress/mlx5/mlx5_compress.c index 6882bcf6d1..93721d6047 100644 --- a/drivers/compress/mlx5/mlx5_compress.c +++ b/drivers/compress/mlx5/mlx5_compress.c @@ -55,6 +55,7 @@ struct mlx5_compress_priv { uint32_t mmo_dma_sq:1; uint32_t mmo_dma_qp:1; uint32_t log_block_sz; + uint32_t crc32_opaq_offs; }; struct mlx5_compress_qp { @@ -157,7 +158,7 @@ mlx5_compress_init_qp(struct mlx5_compress_qp *qp) { volatile struct mlx5_gga_wqe *restrict wqe = (volatile struct mlx5_gga_wqe *)qp->qp.wqes; - volatile struct mlx5_gga_compress_opaque *opaq = qp->opaque_mr.addr; + volatile union mlx5_gga_compress_opaque *opaq = qp->opaque_mr.addr; const uint32_t sq_ds = rte_cpu_to_be_32((qp->qp.qp->id << 8) | 4u); const uint32_t flags = RTE_BE32(MLX5_COMP_ALWAYS << MLX5_COMP_MODE_OFFSET); @@ -211,8 +212,8 @@ mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, goto err; } opaq_buf = rte_calloc(__func__, (size_t)1 << log_ops_n, - sizeof(struct mlx5_gga_compress_opaque), - sizeof(struct mlx5_gga_compress_opaque)); + sizeof(union mlx5_gga_compress_opaque), + sizeof(union mlx5_gga_compress_opaque)); if (opaq_buf == NULL) { DRV_LOG(ERR, "Failed to allocate opaque memory."); rte_errno = ENOMEM; @@ -225,7 +226,7 @@ mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, qp->ops = (struct rte_comp_op **)RTE_ALIGN((uintptr_t)(qp + 1), RTE_CACHE_LINE_SIZE); if (mlx5_common_verbs_reg_mr(priv->cdev->pd, opaq_buf, qp->entries_n * - sizeof(struct mlx5_gga_compress_opaque), + sizeof(union mlx5_gga_compress_opaque), &qp->opaque_mr) != 0) { rte_free(opaq_buf); DRV_LOG(ERR, "Failed to register opaque MR."); @@ -544,7 +545,7 @@ mlx5_compress_dump_err_objs(volatile uint32_t *cqe, volatile uint32_t *wqe, DRV_LOG(ERR, "%08X %08X %08X %08X", wqe[i], wqe[i + 1], wqe[i + 2], wqe[i + 3]); DRV_LOG(ERR, "\nError opaq:"); - for (i = 0; i < sizeof(struct mlx5_gga_compress_opaque) >> 2; i += 4) + for (i = 0; i < sizeof(union mlx5_gga_compress_opaque) >> 2; i += 4) DRV_LOG(ERR, "%08X %08X %08X %08X", opaq[i], opaq[i + 1], opaq[i + 2], opaq[i + 3]); } @@ -558,7 +559,7 @@ mlx5_compress_cqe_err_handle(struct mlx5_compress_qp *qp, &qp->cq.cqes[idx]; volatile struct mlx5_gga_wqe *wqes = (volatile struct mlx5_gga_wqe *) qp->qp.wqes; - volatile struct mlx5_gga_compress_opaque *opaq = qp->opaque_mr.addr; + volatile union mlx5_gga_compress_opaque *opaq = qp->opaque_mr.addr; volatile uint32_t *synd_word = RTE_PTR_ADD(cqe, MLX5_ERROR_CQE_SYNDROME_OFFSET); switch (*synd_word) { @@ -575,7 +576,7 @@ mlx5_compress_cqe_err_handle(struct mlx5_compress_qp *qp, op->consumed = 0; op->produced = 0; op->output_chksum = 0; - op->debug_status = rte_be_to_cpu_32(opaq[idx].syndrom) | + op->debug_status = rte_be_to_cpu_32(opaq[idx].syndrome) | ((uint64_t)rte_be_to_cpu_32(cqe->syndrome) << 32); mlx5_compress_dump_err_objs((volatile uint32_t *)cqe, (volatile uint32_t *)&wqes[idx], @@ -590,13 +591,14 @@ mlx5_compress_dequeue_burst(void *queue_pair, struct rte_comp_op **ops, struct mlx5_compress_qp *qp = queue_pair; volatile struct mlx5_compress_xform *restrict xform; volatile struct mlx5_cqe *restrict cqe; - volatile struct mlx5_gga_compress_opaque *opaq = qp->opaque_mr.addr; + volatile union mlx5_gga_compress_opaque *opaq = qp->opaque_mr.addr; struct rte_comp_op *restrict op; const unsigned int cq_size = qp->entries_n; const unsigned int mask = cq_size - 1; uint32_t idx; uint32_t next_idx = qp->ci & mask; const uint16_t max = RTE_MIN((uint16_t)(qp->pi - qp->ci), nb_ops); + uint32_t crc32_idx = qp->priv->crc32_opaq_offs; uint16_t i = 0; int ret; @@ -629,17 +631,17 @@ mlx5_compress_dequeue_burst(void *queue_pair, struct rte_comp_op **ops, switch (xform->csum_type) { case RTE_COMP_CHECKSUM_CRC32: op->output_chksum = (uint64_t)rte_be_to_cpu_32 - (opaq[idx].crc32); + (opaq[idx].data[crc32_idx]); break; case RTE_COMP_CHECKSUM_ADLER32: op->output_chksum = (uint64_t)rte_be_to_cpu_32 - (opaq[idx].adler32); + (opaq[idx].data[crc32_idx + 1]); break; case RTE_COMP_CHECKSUM_CRC32_ADLER32: op->output_chksum = (uint64_t)rte_be_to_cpu_32 - (opaq[idx].crc32) | + (opaq[idx].data[crc32_idx]) | ((uint64_t)rte_be_to_cpu_32 - (opaq[idx].adler32) << 32); + (opaq[idx].data[crc32_idx + 1]) << 32); break; default: break; @@ -717,15 +719,17 @@ mlx5_compress_dev_probe(struct mlx5_common_device *cdev, .socket_id = cdev->dev->numa_node, }; const char *ibdev_name = mlx5_os_get_ctx_device_name(cdev->ctx); + uint32_t crc32_opaq_offset; if (rte_eal_process_type() != RTE_PROC_PRIMARY) { DRV_LOG(ERR, "Non-primary process type is not supported."); rte_errno = ENOTSUP; return -rte_errno; } - if (!attr->mmo_decompress_qp_en && !attr->mmo_decompress_sq_en - && !attr->mmo_compress_qp_en && !attr->mmo_compress_sq_en - && !attr->mmo_dma_qp_en && !attr->mmo_dma_sq_en) { + if (!attr->decomp_deflate_v1_en && !attr->decomp_deflate_v2_en && + !attr->mmo_decompress_sq_en && !attr->mmo_compress_qp_en && + !attr->mmo_compress_sq_en && !attr->mmo_dma_qp_en && + !attr->mmo_dma_sq_en) { DRV_LOG(ERR, "Not enough capabilities to support compress operations, maybe old FW/OFED version?"); rte_errno = ENOTSUP; return -ENOTSUP; @@ -746,11 +750,20 @@ mlx5_compress_dev_probe(struct mlx5_common_device *cdev, priv = compressdev->data->dev_private; priv->log_block_sz = devarg_prms.log_block_sz; priv->mmo_decomp_sq = attr->mmo_decompress_sq_en; - priv->mmo_decomp_qp = attr->mmo_decompress_qp_en; + priv->mmo_decomp_qp = + attr->decomp_deflate_v1_en | attr->decomp_deflate_v2_en; priv->mmo_comp_sq = attr->mmo_compress_sq_en; priv->mmo_comp_qp = attr->mmo_compress_qp_en; priv->mmo_dma_sq = attr->mmo_dma_sq_en; priv->mmo_dma_qp = attr->mmo_dma_qp_en; + if (attr->decomp_deflate_v2_en) + crc32_opaq_offset = offsetof(union mlx5_gga_compress_opaque, + v2.crc32); + else + crc32_opaq_offset = offsetof(union mlx5_gga_compress_opaque, + v1.crc32); + MLX5_ASSERT((crc32_opaq_offset % 4) == 0); + priv->crc32_opaq_offs = crc32_opaq_offset / 4; priv->cdev = cdev; priv->compressdev = compressdev; priv->min_block_size = attr->compress_min_block_size;