From patchwork Thu Feb 2 16:25:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 122978 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 3D15241BAE; Thu, 2 Feb 2023 17:26:54 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5F19642FD8; Thu, 2 Feb 2023 17:26:19 +0100 (CET) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2058.outbound.protection.outlook.com [40.107.220.58]) by mails.dpdk.org (Postfix) with ESMTP id E466542DBF for ; Thu, 2 Feb 2023 17:26:17 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iMJElqsMozvHHSRndcwmRczEMTZUkRyOK7JJP9HsUYfN6CZpbvfIoUVeS2E1Q+anfdpsarhiFJf7RWrk4ABpcZnDKMVUbK4NeDjQ2WISs8Lsfcpfjm2gm6XQV//UBKvhe4H96b5VIhTdZU2mWMpUxPblhn/yxR+OWsVCxvOdRap1yj+W+hGCGSdlzIwwcLKHkIY+I4u76bCBrZCclKe9ygwrx49N/TIK16WDorrJjo5e6GP5LgZrnRgAkFrSg18V1duB0f1beJWHYA/qSmPMRtVKstHwXXOyuqUyAthOhDGZoJpUP6oxgqtl6UCEEo5xcwThQB4qRz97ObZMbyAkTw== 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=cRBXWnelK+ScKCyI0xLPXy1HZ42bZ53tEtE+Z2WpDek=; b=CHTvJH23P2D+UZuXB71JZ1aVbWvB40eRXbuzNR2aYW2oJRM8WjsT9H6RHFAT2yellOEW55QQRz/FlcOqvRHegW9qS1pQo8+WmuFmRnn718tKn/egqTUNNWbdxMGFipeHCa2mO0E0cXGOFnCoQvqt1AgMXXoR59CIacKGf7wHx8qYmMOFuYP6Ak3I1reMQ3Kx41trIFijTtt4BWO8HCf7tgrH6Zdiq+WfoexZzq0nEJa1OIkTnHsrLuALrf3s8oj3G52h3NaOmAMBFUQf1dLapFdTFzXEkerzU70aBf3oJGbgpEWj1GXfn+Prmy3KX+vPvRXuWhbfDwjChTSJv2ajFw== 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=cRBXWnelK+ScKCyI0xLPXy1HZ42bZ53tEtE+Z2WpDek=; b=Nb/dizjzrzSaLxBSKFrhAIDwG1hvEU2xf7f84UJDM9HmjWKzclJp4PadXCz4lhoX0vKhYoXa1GRSlVyVxy5gZuHE/gDhbAlpfVoVAYVsiYqlN7LpqiIUoRITnTyyokDaBM0fYBUjvh9ZTV+s5qWwolFF2JHf/qaqJGKkZJLgVhvWVaA8e0e8G6HyhU9s1xFNL4YF+Oc+HHlJoAXlYHoyqVsM4yDUnuTD1L9fSOumqs1P+EBMKwzHoWBu5AZDCP3bArv+YILlIGLHeYdvISMQFlQsmWxm/APD76e7jgvR8xUISDWJz7o4wzdtphcY2TfQkv/CC+t/syBh8pIfJjFSjg== Received: from DM6PR11CA0041.namprd11.prod.outlook.com (2603:10b6:5:14c::18) by MW3PR12MB4379.namprd12.prod.outlook.com (2603:10b6:303:5e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.25; Thu, 2 Feb 2023 16:26:08 +0000 Received: from DM6NAM11FT113.eop-nam11.prod.protection.outlook.com (2603:10b6:5:14c:cafe::3c) by DM6PR11CA0041.outlook.office365.com (2603:10b6:5:14c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.25 via Frontend Transport; Thu, 2 Feb 2023 16:26:08 +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 DM6NAM11FT113.mail.protection.outlook.com (10.13.173.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.28 via Frontend Transport; Thu, 2 Feb 2023 16:26:08 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Thu, 2 Feb 2023 08:25:56 -0800 Received: from rnnvmail205.nvidia.com (10.129.68.10) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Thu, 2 Feb 2023 08:25:56 -0800 Received: from nvidia.com (10.127.8.13) by mail.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36 via Frontend Transport; Thu, 2 Feb 2023 08:25:55 -0800 From: Michael Baum To: CC: Matan Azrad , Akhil Goyal , "Thomas Monjalon" Subject: [PATCH v2 6/8] compress/mlx5: add xform validate function Date: Thu, 2 Feb 2023 18:25:35 +0200 Message-ID: <20230202162537.1067595-7-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230202162537.1067595-1-michaelba@nvidia.com> References: <20230109075838.2508039-1-michaelba@nvidia.com> <20230202162537.1067595-1-michaelba@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT113:EE_|MW3PR12MB4379:EE_ X-MS-Office365-Filtering-Correlation-Id: dbefb4f3-7f10-4dac-146c-08db053a30ae 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: lqEhfr1kTt+3aDwDr6VzbPJ8CHsnTBqFMBhv+fGPEEAzrYcO4zc7vcInd7ivXrpx7h2G/Dz/mRByX+UVqkU1mjH8N+KLYQGGCjmULKLjLyeFEi8vBEbiB01WSazuJJVx85TuUZHWd1W/nNsMNkUXVpDhqAudx+9WKfKNfLJd+FXsLfh1Inadh/l0ZcLE9CcnuPJsSGn8Gol1T0gvt0/ODtRlQ8TwbKjrQCfxRlVd1UGMIWHdW2kYR0Y9JSK/AL476MPn9ruCQkVvJ2bDZOBF086OAaIHReo34rPXKXjNCERrlcBFkjGAZiAXKNNHBdh9Mc80KyqNrjvFPMZtZO5cfpE170K6ECuMgqbG1DWz+S6FRLme0zjwQpgVo0H13WfOluJRzuAp3ojCN1WKiFgL5/V68X9L6ZSagyk3sEHOhIlk33+kzYsNsoPNzY7LcAHndk3g39UgUcw+WTYaCjymyZRVyFthw0av04pcthxdMVKmEV18ib6xsXgmKr1j0yhCj9R3wiDoNfmA8od0eEJpCle2+nZpG3YNfkfTjudUXEMFe9/62y2Xph6KdDkZ6oKSw2BDLg7cbEw6VCqo27Kw8ta7PWUqJfzVI3fGxfoxDqKv+j0X6pFmlCNa+6YDe32DsyxnASflrScfDrNnAEtTIFQH9832TDLgio/k7zGMqDoVtrXhfbx9uxO7rJDVO7sH 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)(39860400002)(136003)(376002)(396003)(346002)(451199018)(40470700004)(36840700001)(46966006)(6916009)(70206006)(7636003)(82310400005)(356005)(70586007)(4326008)(55016003)(41300700001)(5660300002)(316002)(8676002)(8936002)(86362001)(54906003)(82740400003)(36756003)(40480700001)(478600001)(2906002)(40460700003)(426003)(47076005)(7696005)(83380400001)(36860700001)(336012)(6666004)(1076003)(26005)(2616005)(186003)(6286002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2023 16:26:08.4607 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dbefb4f3-7f10-4dac-146c-08db053a30ae 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: DM6NAM11FT113.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4379 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 Separate the xform validations from create function into new function. The new function checks caps directly from HCA attr structure, so all capabilities in priv structure were removed. Signed-off-by: Michael Baum --- drivers/compress/mlx5/mlx5_compress.c | 75 +++++++++++++++------------ 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/drivers/compress/mlx5/mlx5_compress.c b/drivers/compress/mlx5/mlx5_compress.c index d54e49db97..7841f57b9c 100644 --- a/drivers/compress/mlx5/mlx5_compress.c +++ b/drivers/compress/mlx5/mlx5_compress.c @@ -45,13 +45,6 @@ struct mlx5_compress_priv { struct rte_compressdev_config dev_config; LIST_HEAD(xform_list, mlx5_compress_xform) xform_list; rte_spinlock_t xform_sl; - /* HCA caps */ - uint32_t mmo_decomp_sq:1; - uint32_t mmo_decomp_qp:1; - uint32_t mmo_comp_sq:1; - uint32_t mmo_comp_qp:1; - uint32_t mmo_dma_sq:1; - uint32_t mmo_dma_qp:1; uint32_t log_block_sz; uint32_t crc32_opaq_offs; }; @@ -178,6 +171,7 @@ mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, uint32_t max_inflight_ops, int socket_id) { struct mlx5_compress_priv *priv = dev->data->dev_private; + struct mlx5_hca_attr *attr = &priv->cdev->config.hca_attr; struct mlx5_compress_qp *qp; struct mlx5_devx_cq_attr cq_attr = { .uar_page_id = mlx5_os_get_devx_uar_page_id(priv->uar.obj), @@ -238,12 +232,11 @@ mlx5_compress_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, goto err; } qp_attr.cqn = qp->cq.cq->id; - qp_attr.ts_format = - mlx5_ts_format_conv(priv->cdev->config.hca_attr.qp_ts_format); + qp_attr.ts_format = mlx5_ts_format_conv(attr->qp_ts_format); qp_attr.num_of_receive_wqes = 0; qp_attr.num_of_send_wqbbs = RTE_BIT32(log_ops_n); - qp_attr.mmo = priv->mmo_decomp_qp || priv->mmo_comp_qp || - priv->mmo_dma_qp; + qp_attr.mmo = attr->mmo_compress_qp_en || attr->mmo_dma_qp_en || + attr->decomp_deflate_v1_en || attr->decomp_deflate_v2_en; ret = mlx5_devx_qp_create(priv->cdev->ctx, &qp->qp, qp_attr.num_of_send_wqbbs * MLX5_WQE_SIZE, &qp_attr, socket_id); @@ -276,21 +269,17 @@ mlx5_compress_xform_free(struct rte_compressdev *dev, void *xform) } static int -mlx5_compress_xform_create(struct rte_compressdev *dev, - const struct rte_comp_xform *xform, - void **private_xform) +mlx5_compress_xform_validate(const struct rte_comp_xform *xform, + const struct mlx5_hca_attr *attr) { - struct mlx5_compress_priv *priv = dev->data->dev_private; - struct mlx5_compress_xform *xfrm; - uint32_t size; - switch (xform->type) { case RTE_COMP_COMPRESS: if (xform->compress.algo == RTE_COMP_ALGO_NULL && - !priv->mmo_dma_qp && !priv->mmo_dma_sq) { + !attr->mmo_dma_qp_en && !attr->mmo_dma_sq_en) { DRV_LOG(ERR, "Not enough capabilities to support DMA operation, maybe old FW/OFED version?"); return -ENOTSUP; - } else if (!priv->mmo_comp_qp && !priv->mmo_comp_sq) { + } else if (!attr->mmo_compress_qp_en && + !attr->mmo_compress_sq_en) { DRV_LOG(ERR, "Not enough capabilities to support compress operation, maybe old FW/OFED version?"); return -ENOTSUP; } @@ -304,12 +293,24 @@ mlx5_compress_xform_create(struct rte_compressdev *dev, } break; case RTE_COMP_DECOMPRESS: - if (xform->decompress.algo == RTE_COMP_ALGO_NULL && - !priv->mmo_dma_qp && !priv->mmo_dma_sq) { - DRV_LOG(ERR, "Not enough capabilities to support DMA operation, maybe old FW/OFED version?"); - return -ENOTSUP; - } else if (!priv->mmo_decomp_qp && !priv->mmo_decomp_sq) { - DRV_LOG(ERR, "Not enough capabilities to support decompress operation, maybe old FW/OFED version?"); + switch (xform->decompress.algo) { + case RTE_COMP_ALGO_NULL: + if (attr->mmo_dma_qp_en && !attr->mmo_dma_sq_en) { + DRV_LOG(ERR, "Not enough capabilities to support DMA operation, maybe old FW/OFED version?"); + return -ENOTSUP; + } + break; + case RTE_COMP_ALGO_DEFLATE: + if (!attr->decomp_deflate_v1_en && + !attr->decomp_deflate_v2_en && + !attr->mmo_decompress_sq_en) { + DRV_LOG(ERR, "Not enough capabilities to support decompress DEFLATE algorithm, maybe old FW/OFED version?"); + return -ENOTSUP; + } + break; + default: + DRV_LOG(ERR, "Algorithm %u is not supported.", + xform->decompress.algo); return -ENOTSUP; } if (xform->decompress.hash_algo != RTE_COMP_HASH_ALGO_NONE) { @@ -321,7 +322,22 @@ mlx5_compress_xform_create(struct rte_compressdev *dev, DRV_LOG(ERR, "Xform type should be compress/decompress"); return -ENOTSUP; } + return 0; +} + +static int +mlx5_compress_xform_create(struct rte_compressdev *dev, + const struct rte_comp_xform *xform, + void **private_xform) +{ + struct mlx5_compress_priv *priv = dev->data->dev_private; + struct mlx5_compress_xform *xfrm; + uint32_t size; + int ret; + ret = mlx5_compress_xform_validate(xform, &priv->cdev->config.hca_attr); + if (ret < 0) + return ret; xfrm = rte_zmalloc_socket(__func__, sizeof(*xfrm), 0, priv->dev_config.socket_id); if (xfrm == NULL) @@ -747,13 +763,6 @@ mlx5_compress_dev_probe(struct mlx5_common_device *cdev, compressdev->feature_flags = RTE_COMPDEV_FF_HW_ACCELERATED; 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->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);