From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E5DB445B36; Mon, 14 Oct 2024 11:37:17 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 76B2D402D9; Mon, 14 Oct 2024 11:37:06 +0200 (CEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2085.outbound.protection.outlook.com [40.107.20.85]) by mails.dpdk.org (Postfix) with ESMTP id 9B3DE402D9 for ; Mon, 14 Oct 2024 11:37:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xu3eQfAtblR+MjdvY8uYh2BPd74n0oxKYUMMrlY30zkJzbO96NA25SQ7I6JFpYgi6Dos4HGrB9XXJgYW+wU3qC576d9JRzKCJ97wtLXbaILXmKw0dpkcCH2xKpGfE08SISJo68vg0+gAgqebrqI1B5N2ITODq2MkB2wKb9rhejnG539+USyLOhR6dSNUH8DOj8hSwc3zU9/wj2fltsUluBf5yIJCG7va35J0RlgrIG5FaB8LLwvOdU4s43XLIWR40jkKIW2NgvlG8ONrkU1b88sq4sYf+PIodcN5ivZl8VBCWev2NNo1ttovieEubIGAPY/klZwVHl/FFxCn2WjF5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=iJyUFimzSb2exaTZQyRaTjpSD6pJXXKA5vVCTHmgTv4=; b=FGr5HVhUjzxA9MFmCOqy9GbeYVw05navMUZ5plbff7JWPG1BjuNLEEH3bnfbNk2AYb3N5gKhdnYNhmVuu9CH7j94q0pmO/nYjj22ZDcyJscGLi5FlZZXL5i6wtRkB8Zp0e9WqBPQSmEY5KpLKeccBQm+DD4AYO/8E0850QV8PmZ/8sPZ9y1iaTAuuc18O6HJ6Uj2ptlCqBF31+UvIfkW8bxLNDtvj9MgFNO+W13WUOZFHPkWAOl9Db1poQuKKoDY7H9FIianuV1bx4NcW7vw57WuttHAnmDyUpJvLyYWCC9zQ6vx+bjMelZuGR3Q4R51Ye7oqP7k0kEYWkqurmw3fA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iJyUFimzSb2exaTZQyRaTjpSD6pJXXKA5vVCTHmgTv4=; b=D2juFv4aTzodLjP/zNlA0k7Hle+PwZoI3IGqlwtIjNO77XBuAiNeyXJ5sYRhMv+KU8VOG8O0M6M3rIKwR64XlsPxFgTYxXZJmt9vBhW2hBFlCwd3Aej8+S8r2rNmfY6rXf6NBodg31aAH96gl6QmAjvvyAFKND4+sV0JAlJdCygV3U+DXgQp1gMgz4O8t4sFphMRmu4sj8TKr9p6vH1Zbe+0Fj4lOcpAX+mIx/q0iuwN9JUDDVd+z1IH0HFZJ4QOFZKmGdTHvJewjvBzXQCgJYX2EEYt34SpCqDLSnGSVlJlfaJ5yHH05qqIfjuai/qb0n0qQYPQKEUvMUBXMOAhJQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) by PA1PR04MB10580.eurprd04.prod.outlook.com (2603:10a6:102:482::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Mon, 14 Oct 2024 09:37:00 +0000 Received: from AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::2e32:1a4a:7d29:195]) by AS8PR04MB8198.eurprd04.prod.outlook.com ([fe80::2e32:1a4a:7d29:195%4]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024 09:37:00 +0000 From: Gagandeep Singh To: dev@dpdk.org, Hemant Agrawal , Sachin Saxena Cc: Jun Yang Subject: [v6 03/15] bus/fslmc: enhance the qbman dq storage logic Date: Mon, 14 Oct 2024 15:06:27 +0530 Message-Id: <20241014093639.553467-4-g.singh@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241014093639.553467-1-g.singh@nxp.com> References: <20241008105810.1454133-2-g.singh@nxp.com> <20241014093639.553467-1-g.singh@nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SI2P153CA0033.APCP153.PROD.OUTLOOK.COM (2603:1096:4:190::21) To AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8198:EE_|PA1PR04MB10580:EE_ X-MS-Office365-Filtering-Correlation-Id: d079c9d5-57d7-48ff-42d3-08dcec33c0bc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ai+I5pn4D63AxyaKWdeuFcWS5WnsG8DJEJWsYfCGKPMCY3E1xXu2pI+myFiB?= =?us-ascii?Q?cQqKhPLw++JFgbUA6BbODDaJC/JWf57tng+BE4FkxltttGou8k0/zkPNoAZO?= =?us-ascii?Q?G9IahRgbvzN2E/PZIw3fB4vWqWbPAleIds6FNiHaV+lUm4ZlGAEIZYLv01bO?= =?us-ascii?Q?+nAlvTfVlAuEvZiLdAW0H8+xIfv5if7xClpgcPgn7deOrIEklcZpSfScflRD?= =?us-ascii?Q?tj1lHtJ7Q90YPHKAz2vqsCzu251NinrbyWATt0E5DEQIYUqHbznSrWLBd+wn?= =?us-ascii?Q?JsvOqI+/racUxeA8iCw2Hp6m4OzUgsUxxSLttXQF1Ad++HGZgY4xkDUPZFD3?= =?us-ascii?Q?A6WAoJORdtBGSWdobiFoYaLt8y/CIigOTc1iw0Ceq4HN5frL7YGe1pBtCUwB?= =?us-ascii?Q?Qr9oaRU/+HKKcuKFhpJYVOugoGVfOhRpAoydnxIjT2dt9JjwW/lHYvhzyik9?= =?us-ascii?Q?5ZiA/LcvbRF0BW0ak9P8rTF0Phc/SBbi5AmJVler7GqUSkBBOrOf/5saoUYp?= =?us-ascii?Q?ui6NR2WT3VdjGxG3iXSfPjDQOtmG+0m5wW5JS5xIfuQza8K+mE+AryxcCrLQ?= =?us-ascii?Q?5OszPFCnjUJ8eZ4vUoKgZBi2deVdT8i8vsimcl8zxn6MmdpKKdsxA+u8ZUPq?= =?us-ascii?Q?NMbeaj1sC9LPmVJhHzNIOsdiMZ/9RR4ryINWelm7a2jrAIywX5bN5H1iYKm6?= =?us-ascii?Q?BfoDMM5/j4Dd8OsQoGyeUAexcIHZUBcIw1JQy6eksQQYVuKnhxD9pirCyXcW?= =?us-ascii?Q?L82LMU0/MD/MI6+ewjyyp/6GAXlvELRsXBRsSSdQb4N5Kp5VBfJ1ft4PrmXY?= =?us-ascii?Q?ke0MXTDT8sYm6/+1QQ7G+Qup8VmW3SOdwgdSzqs9g4UaZCTbtZszZFKZ1TBM?= =?us-ascii?Q?OvFZVyhfx+7QLx7x2Seae2hnUHVtaR2nd+p7QacmWs6NzSK02TdKyPebPGU5?= =?us-ascii?Q?+brYi451vrPrBBgwOFtiz5QF14iDCSwyzEDTZYr/Xxvw/skYWKtH+ZYHrnIV?= =?us-ascii?Q?moU7U3JOJhoBymCIcyTZGV5Qskjj+dY011YD6jwjkjOXyZjCOGNHWV/yWorx?= =?us-ascii?Q?xxlM71Op9EtO0EnaVQq45iasAZe4wuwS+nBxqS/QgIwyI5tb1k+Lkk22Qyuw?= =?us-ascii?Q?f18hO2kB7ZafK9ljuaPiU9oiUz3oX0vAflac4rymsCe9LCRmrMJIFLGHK5Jh?= =?us-ascii?Q?WydXjsubW7H8wb+OUD2QThjkCXNV+f5hVtyl9Hy9tfsDEu0yPnPWzAS1757D?= =?us-ascii?Q?RUFjtZV17bItxfNoY5ZyENk7oT2y9pTq/4Py0wau9pNadWQTaxYC801Ergkt?= =?us-ascii?Q?0yU1JCHYzXliMfwtiqBXdBoOGOWR9CRinEJiF/so0JnsEw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CXNYHO6baluMU1I+ZjLxKBZaC1zHDMT+jTxkehmjt0vIgj9JdZiPLF/YYaAW?= =?us-ascii?Q?MyP74JVy7oMNyWT2YdwEVYnaZ64BJ6lnfQhW/q9CajQBTR6fnbBDAKpDxKZ8?= =?us-ascii?Q?dK5WSagcb+v63NcZdXHxtvkdzsgDfgWBoykzrKYTW1g/3L0KQCG0tmed4xu4?= =?us-ascii?Q?eij4ZByaVmt0iS0WdLsjlx4nMMCWlRA+7r3BJAlLA8NuCb1D3AHJxMw8yQA6?= =?us-ascii?Q?s8cGlXCqVWSQcnMVYy2mQu7IvwH6+N8M0HP9gwolaF9KivtPUkCEqB1jNoku?= =?us-ascii?Q?zQHGFSGzvh7Dg/Y1/1vhMG9hVhh4ez7ewH3XOxEsOS2YH3J4zdCqyEWBLSnx?= =?us-ascii?Q?QnMaF1QQ3FMbsDi5Rn5BYvRe2rRUSkZChcqgfqn8KoDe6nnVd7PmFxbBiBob?= =?us-ascii?Q?PS8kmT9Cfo3OwPaaJa2fvfV0cHYqPm5PhJhEk3QtqC3udMGw3yC9jPeQFFjE?= =?us-ascii?Q?P4RrBqWXSQQBwEQR18osfHlVbGPnk/KYxDcj3jvtGpubDpxunlwLJ+R4EnlD?= =?us-ascii?Q?TRhumCbAz0KwrIjLAnzEatt28uk+VO5f6BmIHh/hOR2hl1KYch9vCwxBktYe?= =?us-ascii?Q?TlvfGcEYuYpWwEbESF99swCF1Dv0zR6VQpevor+hqNsBYof13q5+zY3GPyKN?= =?us-ascii?Q?7aRyYPivoMH1GJAJpQWlNZddOdvNpG02C2TUxgGr4YrovuN0AGYBPW7VZ/um?= =?us-ascii?Q?5StMP1TL7rTEwEcMH1pw+/gxx5hR5KJLmHiU8kpTYFI6zeA5UYnMHdhdUmh4?= =?us-ascii?Q?38j2uHYK8DNz69fWsJjb7wBVhzGSlUIvieF+oxrvQjkPgjx8GNpGj5da5SFM?= =?us-ascii?Q?eBW0hWbZmp/jrSSN2FsNDHaiPgNzEWWaFSA3jebkjZr204lBemUVE9lahmjS?= =?us-ascii?Q?pRHvwEu0uzq6SsgKI3c5fIYYRXM7fb8iiWyoDIiy/8AuLUfhjV6WQz2gQqs+?= =?us-ascii?Q?TRew8u4ap0mgdFum+DVplFLlKZHN3MmqSfX5wOrDJ7k2CSjx9GGknBzcmg8U?= =?us-ascii?Q?JpQxp6pmrnWNQGfzDCVz2DK5Jq1yG3su5J3UhDubHC43h7EuS4bZj0m/lY8M?= =?us-ascii?Q?yJY4lvVBKzUmjR19q2kIDJsDdPYuy5FEOeOwRqoIMWF4csH4ttOMwEX/NBJx?= =?us-ascii?Q?eCMmAjuDyQg0fjsBMpXfJZAJWYx/fWpO9jZQY2asT34a0LHcSve2nkYy3hek?= =?us-ascii?Q?mY72zLwVSVL1d26iSrZD8RZZRKVBPb+CPUm1NYp01XWQIVbJwBbA+iqa/Ld2?= =?us-ascii?Q?7bh4Nuw4sDpJ6oeXiF0KzlupE0PMzTdsWt5+Q4xHbPMlOBRYhwXSSuxZA+O4?= =?us-ascii?Q?KOQRZ48OJy9+nFEoOaaQvJiRDwmCB2lJTPR8EVaX3dA06VYVzsY/lXrwREJm?= =?us-ascii?Q?QlwavBSr25EF+sHUa8KQSU3yJIRdEQaZEdx6DbWmtHMhaBvrFoSTgpKv4fv8?= =?us-ascii?Q?qLQoJZJwytGh8LnbaFgFwDw6kD5T0cjSfm3qM5GKGBbvrNGToxpvZKD05zcu?= =?us-ascii?Q?OSNj4uohYEmkiYrwbfVrwadalOpl+oQHZ//fTEODbjJOsjV4svA/B2kUaRD2?= =?us-ascii?Q?3ZtxuLPGS3YOOhyUO70=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d079c9d5-57d7-48ff-42d3-08dcec33c0bc X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 09:37:00.2791 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KLCorwucZGlzk8lR2jiUC4dnt8CbK1Mvrc1J7MDi7LsJLmYcTNuakz5z5GUFsejP X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10580 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 From: Jun Yang Multiple DQ storages are used among multiple cores, the single dq storage of first union is leak if multiple storages are allocated. It does not make sense to keep the single dq storage of union, remove it and reuse the first dq storage of multiple storages for this case. Signed-off-by: Jun Yang --- drivers/bus/fslmc/portal/dpaa2_hw_dpci.c | 25 ++----- drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 7 +- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 38 +++++++++- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 23 ++---- drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c | 4 +- drivers/dma/dpaa2/dpaa2_qdma.c | 41 ++--------- drivers/net/dpaa2/dpaa2_ethdev.c | 81 ++++++++------------- drivers/net/dpaa2/dpaa2_rxtx.c | 19 +++-- drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c | 4 +- 9 files changed, 102 insertions(+), 140 deletions(-) diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c index 7e858a113f..160126f6d6 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c @@ -81,22 +81,10 @@ rte_dpaa2_create_dpci_device(int vdev_fd __rte_unused, } /* Allocate DQ storage for the DPCI Rx queues */ - rxq = &(dpci_node->rx_queue[i]); - rxq->q_storage = rte_malloc("dq_storage", - sizeof(struct queue_storage_info_t), - RTE_CACHE_LINE_SIZE); - if (!rxq->q_storage) { - DPAA2_BUS_ERR("q_storage allocation failed"); - ret = -ENOMEM; + rxq = &dpci_node->rx_queue[i]; + ret = dpaa2_queue_storage_alloc(rxq, 1); + if (ret) goto err; - } - - memset(rxq->q_storage, 0, sizeof(struct queue_storage_info_t)); - ret = dpaa2_alloc_dq_storage(rxq->q_storage); - if (ret) { - DPAA2_BUS_ERR("dpaa2_alloc_dq_storage failed"); - goto err; - } } /* Enable the device */ @@ -141,12 +129,9 @@ rte_dpaa2_create_dpci_device(int vdev_fd __rte_unused, err: for (i = 0; i < DPAA2_DPCI_MAX_QUEUES; i++) { - struct dpaa2_queue *rxq = &(dpci_node->rx_queue[i]); + struct dpaa2_queue *rxq = &dpci_node->rx_queue[i]; - if (rxq->q_storage) { - dpaa2_free_dq_storage(rxq->q_storage); - rte_free(rxq->q_storage); - } + dpaa2_queue_storage_free(rxq, 1); } rte_free(dpci_node); diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c index 4aec7b2cd8..a8afc772fd 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c +++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c @@ -574,6 +574,7 @@ dpaa2_free_dq_storage(struct queue_storage_info_t *q_storage) for (i = 0; i < NUM_DQS_PER_QUEUE; i++) { rte_free(q_storage->dq_storage[i]); + q_storage->dq_storage[i] = NULL; } } @@ -583,7 +584,7 @@ dpaa2_alloc_dq_storage(struct queue_storage_info_t *q_storage) int i = 0; for (i = 0; i < NUM_DQS_PER_QUEUE; i++) { - q_storage->dq_storage[i] = rte_malloc(NULL, + q_storage->dq_storage[i] = rte_zmalloc(NULL, dpaa2_dqrr_size * sizeof(struct qbman_result), RTE_CACHE_LINE_SIZE); if (!q_storage->dq_storage[i]) @@ -591,8 +592,10 @@ dpaa2_alloc_dq_storage(struct queue_storage_info_t *q_storage) } return 0; fail: - while (--i >= 0) + while (--i >= 0) { rte_free(q_storage->dq_storage[i]); + q_storage->dq_storage[i] = NULL; + } return -1; } diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h index 4c30e6db18..0e53ab9d8f 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2016-2021 NXP + * Copyright 2016-2024 NXP * */ @@ -165,7 +165,9 @@ struct __rte_cache_aligned dpaa2_queue { uint64_t tx_pkts; uint64_t err_pkts; union { - struct queue_storage_info_t *q_storage; + /**Ingress*/ + struct queue_storage_info_t *q_storage[RTE_MAX_LCORE]; + /**Egress*/ struct qbman_result *cscn; }; struct rte_event ev; @@ -187,6 +189,38 @@ struct swp_active_dqs { uint64_t reserved[7]; }; +#define dpaa2_queue_storage_alloc(q, num) \ +({ \ + int ret = 0, i; \ + \ + for (i = 0; i < (num); i++) { \ + (q)->q_storage[i] = rte_zmalloc(NULL, \ + sizeof(struct queue_storage_info_t), \ + RTE_CACHE_LINE_SIZE); \ + if (!(q)->q_storage[i]) { \ + ret = -ENOBUFS; \ + break; \ + } \ + ret = dpaa2_alloc_dq_storage((q)->q_storage[i]); \ + if (ret) \ + break; \ + } \ + ret; \ +}) + +#define dpaa2_queue_storage_free(q, num) \ +({ \ + int i; \ + \ + for (i = 0; i < (num); i++) { \ + if ((q)->q_storage[i]) { \ + dpaa2_free_dq_storage((q)->q_storage[i]); \ + rte_free((q)->q_storage[i]); \ + (q)->q_storage[i] = NULL; \ + } \ + } \ +}) + #define NUM_MAX_SWP 64 extern struct swp_active_dqs rte_global_active_dqs_list[NUM_MAX_SWP]; diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index a1e8dffe4a..bd3ae9d9e3 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -1910,7 +1910,7 @@ dpaa2_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops, } } swp = DPAA2_PER_LCORE_PORTAL; - dq_storage = dpaa2_qp->rx_vq.q_storage->dq_storage[0]; + dq_storage = dpaa2_qp->rx_vq.q_storage[0]->dq_storage[0]; qbman_pull_desc_clear(&pulldesc); qbman_pull_desc_set_numframes(&pulldesc, @@ -2001,10 +2001,7 @@ dpaa2_sec_queue_pair_release(struct rte_cryptodev *dev, uint16_t queue_pair_id) PMD_INIT_FUNC_TRACE(); - if (qp->rx_vq.q_storage) { - dpaa2_free_dq_storage(qp->rx_vq.q_storage); - rte_free(qp->rx_vq.q_storage); - } + dpaa2_queue_storage_free(&qp->rx_vq, 1); rte_mempool_free(qp->fle_pool); rte_free(qp); @@ -2055,18 +2052,10 @@ dpaa2_sec_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id, qp->rx_vq.crypto_data = dev->data; qp->tx_vq.crypto_data = dev->data; - qp->rx_vq.q_storage = rte_malloc("sec dq storage", - sizeof(struct queue_storage_info_t), - RTE_CACHE_LINE_SIZE); - if (!qp->rx_vq.q_storage) { - DPAA2_SEC_ERR("malloc failed for q_storage"); - return -ENOMEM; - } - memset(qp->rx_vq.q_storage, 0, sizeof(struct queue_storage_info_t)); - - if (dpaa2_alloc_dq_storage(qp->rx_vq.q_storage)) { - DPAA2_SEC_ERR("Unable to allocate dequeue storage"); - return -ENOMEM; + retcode = dpaa2_queue_storage_alloc((&qp->rx_vq), 1); + if (retcode) { + dpaa2_queue_storage_free((&qp->rx_vq), 1); + return retcode; } dev->data->queue_pairs[qp_id] = qp; diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c index 883584a6e2..fb0408f8ad 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2021-2022 NXP + * Copyright 2021-2022, 2024 NXP */ #include @@ -853,7 +853,7 @@ dpaa2_sec_raw_dequeue_burst(void *qp_data, uint8_t *drv_ctx, } } swp = DPAA2_PER_LCORE_PORTAL; - dq_storage = dpaa2_qp->rx_vq.q_storage->dq_storage[0]; + dq_storage = dpaa2_qp->rx_vq.q_storage[0]->dq_storage[0]; qbman_pull_desc_clear(&pulldesc); qbman_pull_desc_set_numframes(&pulldesc, diff --git a/drivers/dma/dpaa2/dpaa2_qdma.c b/drivers/dma/dpaa2/dpaa2_qdma.c index e364cc8f3d..ee110741b7 100644 --- a/drivers/dma/dpaa2/dpaa2_qdma.c +++ b/drivers/dma/dpaa2/dpaa2_qdma.c @@ -854,7 +854,7 @@ dpaa2_qdma_dequeue(void *dev_private, dpaa2_dqrr_size : nb_cpls; rxq = &(dpdmai_dev->rx_queue[qdma_vq->vq_id]); fqid = rxq->fqid; - q_storage = rxq->q_storage; + q_storage = rxq->q_storage[0]; if (unlikely(!q_storage->active_dqs)) { q_storage->toggle = 0; @@ -1062,13 +1062,7 @@ dpaa2_qdma_configure(struct rte_dma_dev *dev, qdma_dev->vqs[i].ring_cntx_idx = NULL; } rxq = &dpdmai_dev->rx_queue[i]; - if (rxq->q_storage) { - DPAA2_QDMA_DEBUG("%s rxq[%d] re-configure", - dev->data->dev_name, i); - dpaa2_free_dq_storage(rxq->q_storage); - rte_free(rxq->q_storage); - rxq->q_storage = NULL; - } + dpaa2_queue_storage_free(rxq, 1); } rte_free(qdma_dev->vqs); qdma_dev->vqs = NULL; @@ -1124,24 +1118,9 @@ dpaa2_qdma_configure(struct rte_dma_dev *dev, qdma_dev->vqs[i].vq_id = i; rxq = &dpdmai_dev->rx_queue[i]; /* Allocate DQ storage for the DPDMAI Rx queues */ - rxq->q_storage = rte_zmalloc(NULL, - sizeof(struct queue_storage_info_t), - RTE_CACHE_LINE_SIZE); - if (!rxq->q_storage) { - DPAA2_QDMA_ERR("%s Q[%d] storage alloc failed", - dev->data->dev_name, i); - ret = -ENOMEM; - goto alloc_failed; - } - - memset(rxq->q_storage, 0, sizeof(struct queue_storage_info_t)); - ret = dpaa2_alloc_dq_storage(rxq->q_storage); - if (ret) { - DPAA2_QDMA_ERR("%s Q[%d] dq storage alloc failed", - dev->data->dev_name, i); - ret = -ENOMEM; + ret = dpaa2_queue_storage_alloc(rxq, 1); + if (ret) goto alloc_failed; - } } qdma_dev->num_vqs = dev_conf->nb_vchans; @@ -1152,11 +1131,7 @@ dpaa2_qdma_configure(struct rte_dma_dev *dev, alloc_failed: for (i = 0; i < dev_conf->nb_vchans; i++) { rxq = &dpdmai_dev->rx_queue[i]; - if (rxq->q_storage) { - dpaa2_free_dq_storage(rxq->q_storage); - rte_free(rxq->q_storage); - rxq->q_storage = NULL; - } + dpaa2_queue_storage_free(rxq, 1); } rte_free(qdma_dev->vqs); @@ -1350,11 +1325,7 @@ dpaa2_qdma_close(struct rte_dma_dev *dev) /* Free RXQ storages */ for (i = 0; i < qdma_dev->num_vqs; i++) { rxq = &dpdmai_dev->rx_queue[i]; - if (rxq->q_storage) { - dpaa2_free_dq_storage(rxq->q_storage); - rte_free(rxq->q_storage); - rxq->q_storage = NULL; - } + dpaa2_queue_storage_free(rxq, 1); } if (qdma_dev->vqs) { diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 7b3e587a8d..93b88acef8 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -1,7 +1,7 @@ /* * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2016-2021 NXP + * Copyright 2016-2024 NXP * */ @@ -366,7 +366,7 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev) uint8_t num_rxqueue_per_tc; struct dpaa2_queue *mc_q, *mcq; uint32_t tot_queues; - int i; + int i, ret = 0; struct dpaa2_queue *dpaa2_q; PMD_INIT_FUNC_TRACE(); @@ -386,16 +386,10 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev) for (i = 0; i < priv->nb_rx_queues; i++) { mc_q->eth_data = dev->data; priv->rx_vq[i] = mc_q++; - dpaa2_q = (struct dpaa2_queue *)priv->rx_vq[i]; - dpaa2_q->q_storage = rte_malloc("dq_storage", - sizeof(struct queue_storage_info_t), - RTE_CACHE_LINE_SIZE); - if (!dpaa2_q->q_storage) - goto fail; - - memset(dpaa2_q->q_storage, 0, - sizeof(struct queue_storage_info_t)); - if (dpaa2_alloc_dq_storage(dpaa2_q->q_storage)) + dpaa2_q = priv->rx_vq[i]; + ret = dpaa2_queue_storage_alloc(dpaa2_q, + RTE_MAX_LCORE); + if (ret) goto fail; } @@ -405,19 +399,11 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev) if (!priv->rx_err_vq) goto fail; - dpaa2_q = (struct dpaa2_queue *)priv->rx_err_vq; - dpaa2_q->q_storage = rte_malloc("err_dq_storage", - sizeof(struct queue_storage_info_t) * - RTE_MAX_LCORE, - RTE_CACHE_LINE_SIZE); - if (!dpaa2_q->q_storage) + dpaa2_q = priv->rx_err_vq; + ret = dpaa2_queue_storage_alloc(dpaa2_q, + RTE_MAX_LCORE); + if (ret) goto fail; - - memset(dpaa2_q->q_storage, 0, - sizeof(struct queue_storage_info_t)); - for (i = 0; i < RTE_MAX_LCORE; i++) - if (dpaa2_alloc_dq_storage(&dpaa2_q->q_storage[i])) - goto fail; } for (i = 0; i < priv->nb_tx_queues; i++) { @@ -438,24 +424,17 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev) mc_q->tc_index = i; mc_q->flow_id = 0; priv->tx_conf_vq[i] = mc_q++; - dpaa2_q = (struct dpaa2_queue *)priv->tx_conf_vq[i]; - dpaa2_q->q_storage = - rte_malloc("dq_storage", - sizeof(struct queue_storage_info_t), - RTE_CACHE_LINE_SIZE); - if (!dpaa2_q->q_storage) - goto fail_tx_conf; - - memset(dpaa2_q->q_storage, 0, - sizeof(struct queue_storage_info_t)); - if (dpaa2_alloc_dq_storage(dpaa2_q->q_storage)) + dpaa2_q = priv->tx_conf_vq[i]; + ret = dpaa2_queue_storage_alloc(dpaa2_q, + RTE_MAX_LCORE); + if (ret) goto fail_tx_conf; } } vq_id = 0; for (dist_idx = 0; dist_idx < priv->nb_rx_queues; dist_idx++) { - mcq = (struct dpaa2_queue *)priv->rx_vq[vq_id]; + mcq = priv->rx_vq[vq_id]; mcq->tc_index = dist_idx / num_rxqueue_per_tc; mcq->flow_id = dist_idx % num_rxqueue_per_tc; vq_id++; @@ -465,15 +444,15 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev) fail_tx_conf: i -= 1; while (i >= 0) { - dpaa2_q = (struct dpaa2_queue *)priv->tx_conf_vq[i]; - rte_free(dpaa2_q->q_storage); + dpaa2_q = priv->tx_conf_vq[i]; + dpaa2_queue_storage_free(dpaa2_q, RTE_MAX_LCORE); priv->tx_conf_vq[i--] = NULL; } i = priv->nb_tx_queues; fail_tx: i -= 1; while (i >= 0) { - dpaa2_q = (struct dpaa2_queue *)priv->tx_vq[i]; + dpaa2_q = priv->tx_vq[i]; rte_free(dpaa2_q->cscn); priv->tx_vq[i--] = NULL; } @@ -482,17 +461,14 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev) i -= 1; mc_q = priv->rx_vq[0]; while (i >= 0) { - dpaa2_q = (struct dpaa2_queue *)priv->rx_vq[i]; - dpaa2_free_dq_storage(dpaa2_q->q_storage); - rte_free(dpaa2_q->q_storage); + dpaa2_q = priv->rx_vq[i]; + dpaa2_queue_storage_free(dpaa2_q, RTE_MAX_LCORE); priv->rx_vq[i--] = NULL; } if (dpaa2_enable_err_queue) { - dpaa2_q = (struct dpaa2_queue *)priv->rx_err_vq; - if (dpaa2_q->q_storage) - dpaa2_free_dq_storage(dpaa2_q->q_storage); - rte_free(dpaa2_q->q_storage); + dpaa2_q = priv->rx_err_vq; + dpaa2_queue_storage_free(dpaa2_q, RTE_MAX_LCORE); } rte_free(mc_q); @@ -512,20 +488,21 @@ dpaa2_free_rx_tx_queues(struct rte_eth_dev *dev) if (priv->rx_vq[0]) { /* cleaning up queue storage */ for (i = 0; i < priv->nb_rx_queues; i++) { - dpaa2_q = (struct dpaa2_queue *)priv->rx_vq[i]; - rte_free(dpaa2_q->q_storage); + dpaa2_q = priv->rx_vq[i]; + dpaa2_queue_storage_free(dpaa2_q, + RTE_MAX_LCORE); } /* cleanup tx queue cscn */ for (i = 0; i < priv->nb_tx_queues; i++) { - dpaa2_q = (struct dpaa2_queue *)priv->tx_vq[i]; + dpaa2_q = priv->tx_vq[i]; rte_free(dpaa2_q->cscn); } if (priv->flags & DPAA2_TX_CONF_ENABLE) { /* cleanup tx conf queue storage */ for (i = 0; i < priv->nb_tx_queues; i++) { - dpaa2_q = (struct dpaa2_queue *) - priv->tx_conf_vq[i]; - rte_free(dpaa2_q->q_storage); + dpaa2_q = priv->tx_conf_vq[i]; + dpaa2_queue_storage_free(dpaa2_q, + RTE_MAX_LCORE); } } /*free memory for all queues (RX+TX) */ diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c index 92e9dd40dc..376291af04 100644 --- a/drivers/net/dpaa2/dpaa2_rxtx.c +++ b/drivers/net/dpaa2/dpaa2_rxtx.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2016-2021 NXP + * Copyright 2016-2024 NXP * */ @@ -647,7 +647,7 @@ dump_err_pkts(struct dpaa2_queue *dpaa2_q) } swp = DPAA2_PER_LCORE_PORTAL; - dq_storage = dpaa2_q->q_storage[lcore_id].dq_storage[0]; + dq_storage = dpaa2_q->q_storage[lcore_id]->dq_storage[0]; qbman_pull_desc_clear(&pulldesc); qbman_pull_desc_set_fq(&pulldesc, fqid); qbman_pull_desc_set_storage(&pulldesc, dq_storage, @@ -716,7 +716,7 @@ uint16_t dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) { /* Function receive frames for a given device and VQ*/ - struct dpaa2_queue *dpaa2_q = (struct dpaa2_queue *)queue; + struct dpaa2_queue *dpaa2_q = queue; struct qbman_result *dq_storage, *dq_storage1 = NULL; uint32_t fqid = dpaa2_q->fqid; int ret, num_rx = 0, pull_size; @@ -724,10 +724,12 @@ dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) struct qbman_swp *swp; const struct qbman_fd *fd; struct qbman_pull_desc pulldesc; - struct queue_storage_info_t *q_storage = dpaa2_q->q_storage; + struct queue_storage_info_t *q_storage; struct rte_eth_dev_data *eth_data = dpaa2_q->eth_data; struct dpaa2_dev_priv *priv = eth_data->dev_private; + q_storage = dpaa2_q->q_storage[rte_lcore_id()]; + if (unlikely(dpaa2_enable_err_queue)) dump_err_pkts(priv->rx_err_vq); @@ -958,7 +960,7 @@ uint16_t dpaa2_dev_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) { /* Function receive frames for a given device and VQ */ - struct dpaa2_queue *dpaa2_q = (struct dpaa2_queue *)queue; + struct dpaa2_queue *dpaa2_q = queue; struct qbman_result *dq_storage; uint32_t fqid = dpaa2_q->fqid; int ret, num_rx = 0, next_pull = nb_pkts, num_pulled; @@ -984,7 +986,7 @@ dpaa2_dev_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) swp = DPAA2_PER_LCORE_PORTAL; do { - dq_storage = dpaa2_q->q_storage->dq_storage[0]; + dq_storage = dpaa2_q->q_storage[0]->dq_storage[0]; qbman_pull_desc_clear(&pulldesc); qbman_pull_desc_set_fq(&pulldesc, fqid); qbman_pull_desc_set_storage(&pulldesc, dq_storage, @@ -1115,7 +1117,7 @@ uint16_t dpaa2_dev_tx_conf(void *queue) swp = DPAA2_PER_LCORE_PORTAL; do { - dq_storage = dpaa2_q->q_storage->dq_storage[0]; + dq_storage = dpaa2_q->q_storage[0]->dq_storage[0]; qbman_pull_desc_clear(&pulldesc); qbman_pull_desc_set_fq(&pulldesc, fqid); qbman_pull_desc_set_storage(&pulldesc, dq_storage, @@ -1954,12 +1956,13 @@ dpaa2_dev_loopback_rx(void *queue, struct qbman_fd *fd[DPAA2_LX2_DQRR_RING_SIZE]; struct qbman_pull_desc pulldesc; struct qbman_eq_desc eqdesc; - struct queue_storage_info_t *q_storage = dpaa2_q->q_storage; + struct queue_storage_info_t *q_storage; struct rte_eth_dev_data *eth_data = dpaa2_q->eth_data; struct dpaa2_dev_priv *priv = eth_data->dev_private; struct dpaa2_queue *tx_q = priv->tx_vq[0]; /* todo - currently we are using 1st TX queue only for loopback*/ + q_storage = dpaa2_q->q_storage[rte_lcore_id()]; if (unlikely(!DPAA2_PER_LCORE_ETHRX_DPIO)) { ret = dpaa2_affine_qbman_ethrx_swp(); if (ret) { diff --git a/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c b/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c index de8c024abb..34a3c4f6af 100644 --- a/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c +++ b/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2018-2019 NXP + * Copyright 2018-2019, 2024 NXP */ #include @@ -142,7 +142,7 @@ dpaa2_cmdif_dequeue_bufs(struct rte_rawdev *dev, cmdif_rcv_cnxt = (struct rte_dpaa2_cmdif_context *)(context); rxq = &(cidev->rx_queue[cmdif_rcv_cnxt->priority]); - dq_storage = rxq->q_storage->dq_storage[0]; + dq_storage = rxq->q_storage[0]->dq_storage[0]; qbman_pull_desc_clear(&pulldesc); qbman_pull_desc_set_fq(&pulldesc, rxq->fqid); -- 2.25.1