From patchwork Mon Jan 9 07:58:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 121718 X-Patchwork-Delegate: thomas@monjalon.net 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 5D5514237B; Mon, 9 Jan 2023 08:59:39 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D699342D2D; Mon, 9 Jan 2023 08:59:13 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2050.outbound.protection.outlook.com [40.107.243.50]) by mails.dpdk.org (Postfix) with ESMTP id 3134B42D26 for ; Mon, 9 Jan 2023 08:59:12 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XUwFKRhFR6gedqlnb2OsWW3VH7Z0RWPN5m4qRizn/nZqsonZ2ctoxWwXkphUxzspbHdosx+Iy/6xVrEue2uBedJfKp3cm11AuNJg4IDv2ri2P1s+WYX8J6rAsv7KJPkMdRgP7/BUsvk7NjdTCkRHyGn+etyPrI6yxBthCd1dAbiq8dsPfWKSO61Z7+tpfyK/6DxuP3kkO2yggSTQg2C2ZxACoXlS+3IOy4DFVkMee6btO99ZDPypxRO6tcM2GHeVai4wizVqFmThrSC5jOjIAE/4wTrPalUc2zBscDnAofJZL0m9Kg6anEJJfddY7J3uEXj6wnq6NdetsM0Cdq+v3A== 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=fYpi6BWLrFsDgWkY6lKaLDv7fGKnVaMTwGHIzv+uXvY=; b=Hi+9bSYxi2a9GHknzratEAR8SHCQXyE5qCoCtEND386gdX0a+Me8TcHMKUh8Q5PROsDDHhARFca8eiUs0HczJKT3odOYgwmcFxZqjK1qfJHq9Zh2mOS2BHeazSVUbih3YHzXeDzz4D+/CwK11pi9ddQEDx9XUkNJbIVf2qAsg5KG+Y7EDFDlVZsYjUnyMnQEx26LSBA12hnSW9ixdB7SwOyt1d7jnJqnLfjpWL9rzj1EnsST/8hOVpALsraKu01vAer1jhZSIWZgbJKONCRacSQ/4Y1Sm7gkjFXZlE8q2oZVUkqsonxdKX2OXK/u7UXmjLIaWfm5r730vuDxkBBjvg== 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=fYpi6BWLrFsDgWkY6lKaLDv7fGKnVaMTwGHIzv+uXvY=; b=JW7sNaF50/Inp40Aw4T7zQNMrFhem4tJ4qkX8XK0ZOxrUcMDRPJYM/h2k13ELOknQFJ6SnEBTHFVgSiIgQwdMgJ7qa0MT4aA0/sLYO8CCDsXg5XYqcEel4zKm80kz/QApXhIA8RTbFgFEMAvLzjj3QMfVjrLXnYsG6oh7cw/Fvc7BiCQyTuEd5A2JW/XjxalA4SIJa6JEit9pfwQ1h7U7mdPrsZUJQpuV1f9Rg1rGDTBcO3Fgz0c7UTTXsXo4MQs00hUoct+tGYqZ3pYnGk+Xy08TQT5pNybjoSot+pmY9aLWyU4iN9nZ1QbtizIImVwAC+8yQuqaKttLJEEqHqpIw== Received: from MW4PR04CA0213.namprd04.prod.outlook.com (2603:10b6:303:87::8) by DS0PR12MB8343.namprd12.prod.outlook.com (2603:10b6:8:fd::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18; Mon, 9 Jan 2023 07:59:10 +0000 Received: from CO1NAM11FT067.eop-nam11.prod.protection.outlook.com (2603:10b6:303:87:cafe::d1) by MW4PR04CA0213.outlook.office365.com (2603:10b6:303:87::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18 via Frontend Transport; Mon, 9 Jan 2023 07:59:10 +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 CO1NAM11FT067.mail.protection.outlook.com (10.13.174.212) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.18 via Frontend Transport; Mon, 9 Jan 2023 07:59:10 +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; Sun, 8 Jan 2023 23:58:57 -0800 Received: from rnnvmail202.nvidia.com (10.129.68.7) 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; Sun, 8 Jan 2023 23:58:57 -0800 Received: from nvidia.com (10.127.8.13) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36 via Frontend Transport; Sun, 8 Jan 2023 23:58:56 -0800 From: Michael Baum To: CC: Matan Azrad , Akhil Goyal , "Thomas Monjalon" Subject: [PATCH 5/7] compress/mlx5: add xform validate function Date: Mon, 9 Jan 2023 09:58:36 +0200 Message-ID: <20230109075838.2508039-6-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230109075838.2508039-1-michaelba@nvidia.com> References: <20230109075838.2508039-1-michaelba@nvidia.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT067:EE_|DS0PR12MB8343:EE_ X-MS-Office365-Filtering-Correlation-Id: fc3575a7-63f2-454f-417e-08daf217643f 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: RGuw3mY+b+vsMIdhMH2LNuTTIqh+qClZyYRsS5Q5J1b0Hi/sZAFKGXzZltmAKV6yqeiBIGQSau12Wwx29f+y8f4YyuOlpNd9djhCdam8qeI5I3Z0Pt0FBwgFPqBdpbfox7Wyqh3jKXFVO/u0TMqmOiexBNmxYQDtibhnUT+Er6/35tjurbcFrJfAZG/Ra1pBT6o+vExAkWRQ5KT22GB2vDofL/2+J6seqcnHNCG2p9JAbcjRmxK0mPgcUJVau/W3iv8xIFjlcYAfmOsHSNpy/aquiNusvR5zd7w8r1B82O5s6/wUrHOagjWmKH6K1C7Q1meqtPhwIuhUt1slXydzksVqNbd4VEPOTXA6ZLBYK7eg067YnBizPvC0WKQz/33j6rAGgibVPWyu0ZEMyaegDK34IZz2vPAAuqxhbqcb8w6zYvYTsm9R1PycBuNdAI19Kdc8Py4XX6+OXIQNMZU16+z47ACvt6SCu55tLZJtTtTbG1GqJy1PN/0kxIyuhweCdmY32V1gaainzv4krSetsIrE/yQZ8esY1vC/8xqRS7HuYuhCqEjLH3DpEDMKxAK3Gk0/yU94Gtqq3AkOgDEURgESHXgXyL5AfjWKBxxMDCjSzsKXNb31AzuZrVKUh3rvSIAyut9E7yMwSSSqY405u4iMlksSUzxiP2E3UZgROvQeHYXm2U66EruCYzDcp15y 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:(13230022)(4636009)(346002)(376002)(136003)(396003)(39860400002)(451199015)(40470700004)(46966006)(36840700001)(40460700003)(426003)(41300700001)(47076005)(2616005)(54906003)(316002)(336012)(36756003)(6916009)(1076003)(70206006)(4326008)(70586007)(8676002)(86362001)(82310400005)(8936002)(36860700001)(356005)(7636003)(82740400003)(5660300002)(83380400001)(40480700001)(55016003)(2906002)(6666004)(6286002)(26005)(186003)(478600001)(7696005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2023 07:59:10.4820 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fc3575a7-63f2-454f-417e-08daf217643f 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: CO1NAM11FT067.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8343 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 | 55 +++++++++++++-------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/drivers/compress/mlx5/mlx5_compress.c b/drivers/compress/mlx5/mlx5_compress.c index f03a50b9ee..48d08335db 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_decompress_qp_en || attr->mmo_compress_qp_en || + attr->mmo_dma_qp_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; } @@ -305,10 +294,11 @@ 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) { + !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_decomp_qp && !priv->mmo_decomp_sq) { + } else if (!attr->mmo_decompress_qp_en && + !attr->mmo_decompress_sq_en) { DRV_LOG(ERR, "Not enough capabilities to support decompress operation, maybe old FW/OFED version?"); return -ENOTSUP; } @@ -321,7 +311,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) @@ -746,12 +751,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->mmo_decompress_qp_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->gga_comp_opaq_new_version) crc32_opaq_offset = offsetof(union mlx5_gga_compress_opaque, v2.crc32);