From patchwork Tue Oct 1 11:03:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144811 X-Patchwork-Delegate: ferruh.yigit@amd.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 D723645A79; Tue, 1 Oct 2024 13:03:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 587E84060F; Tue, 1 Oct 2024 13:03:45 +0200 (CEST) Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010045.outbound.protection.outlook.com [52.101.69.45]) by mails.dpdk.org (Postfix) with ESMTP id 632FE402DA; Tue, 1 Oct 2024 13:03:44 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CD66RHxhzMGxWf5PeWgkBeYC5EVHJTPDTQQ17j75rysuAj2eu4A29lmuHXVfQC1x6hfrDagmlYoIkvYspnBjf2Vh2seGzIazPdsg7Qi0lsZaOpAARAEqDmNVlYTUHXkrwQssNS+Sr83VN161L8c8cDv8nZCm4lx4v3t1wjK1f9cmoLKmwoCmdHsrNg7L96/mn9f15wvczZlrdSyuSRjXVfqPsi7FH3FMYqV1hqQ9A7U1/BtW40RxhIXeaShEbCekgSN+uiCjdmsQCYaIm5FqzeB3r/rc/l7NFsdhep5bAweCOkfsQvBnPKCMXrtSY79buFZ8l3jQIi8uHvjfrAwo5Q== 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=VQTBFf6iffqhdrfBDCMQV7dbsStZ0GSTY+9yhr9iFJw=; b=Pr4NxV/sVEeC3gcbVGWl8YGEimcfm+lrYK5/XVMfQ8r7zKfdTdH4PBJx4LXFzIAoi+GUZvdJDJ37EBaunkKtXqb7/ZXX7sepbcfEd4blNgBG8X6i+W168WUh6DE6sqvRvIeB2mW2iEEORhOLGu9grF2bNc8SB1TfB+IwGEi3ImDYaiPGH6vqCGvJ917ZWBhoxNsjzzCOqUotH643iGAukAVtMhO9rthIU6B2CDkq7tqaSwFnSdPdgVMujY6JhRaQ8/R9GJk/aLZ//1Zhy6GCl2hHepF5sB2BNOvqG5FkMF7EQOX2WumdyEjMSO74qjttNuzBhFl5ch4ayDf7Rj+nLA== 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=VQTBFf6iffqhdrfBDCMQV7dbsStZ0GSTY+9yhr9iFJw=; b=DQviz7YSWMGChH548FBoaVZLmyoquaLf1oEXEG3IzfqgUps+AneJ9yTCg8yPT0WwKvi5kQE/k8Mk9VN9iGDP4QT/mr0CoA2ds4pPYqTPU57DYuhIfJLwagXupaEK892R0OswyKI8frJzr8Hzmaip0LNVk3WvoiRSM5mRWt4fRLVxNCTJWJMwyWyaVn0PmXSbsnAUsCadEo7v6nF9Ozg9LSGuzRdoRIOz3/A5+5uzbZvqJMjAETMKYt7SQZZk3QtEfFDICh0Bgaihe7A6azLdnc1zrwYkv6VwPd/ow1trRvurWIFP9K0h8xhs/aBnJE9GHx9sMn20MW2Kvqgp0c6VXQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by DBBPR04MB7724.eurprd04.prod.outlook.com (2603:10a6:10:209::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.27; Tue, 1 Oct 2024 11:03:43 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:43 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Gagandeep Singh , stable@dpdk.org Subject: [PATCH v5 01/18] bus/dpaa: fix PFDRs leaks due to FQRNIs Date: Tue, 1 Oct 2024 16:33:08 +0530 Message-Id: <20241001110325.4173762-2-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|DBBPR04MB7724:EE_ X-MS-Office365-Filtering-Correlation-Id: c1c1c9eb-9ec4-4044-2071-08dce208b693 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|52116014|376014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: X2Pn29lb18mf3CtHrFKnOj3+HL63SOATTTfYqkFY1ZWOx6UnesNIRPUqZXIFJN60/j0SgGj98eOLJCCy8wbO3sQ3FSPWa9ZO4mu+QE7usx6wU3E1gqZ46zuadhi3WYkG7ycHtIso1fL4N+duWxsCHvx3kPGdQ5Hy3BFNKRzUOSsvhwUTu5OhYk8ZPWvFRk79HNYpmdjTJSA1xmuvur1RrMMk1VgvnT2EojXD/ucfG/Rbo+sDr0+iJ5dN0NgGIgRSakp3M2RVdRZRCe3T/3VVNPkwJtaWayqoO0pJ3wLC+1eyYAqUrMHtdQ9oYWZTGzSfV17e2DclWBdnV9bXD2ibcV+Fv0Ms/HrVw8pykgoBabNSABoSduJ3JZXgfdYr0kC1iNseGDcNwy/5lL7BtYsooIPpPj3fzwJYEDt4lf6bNakNTJgNqYGWGBPlopchXPmAsc8HSDkQR3kLEbDKdTJ7cr0zVQBpq/ra02NQFocd7KR3/2ND1T0AxP+FXrBFIpKIFGR19xKoFQ9uQJ8Y1EJn1hm2o3zZ8jtiS7r/OSJ4At9YtIPliy0pwuiCsS56bqgWuMuuhy85l8x6eLyjGqlxgEZLL9t7x9SVfIot8WuSULseHUw2WER79xa6tet3U2Llv3YdKCGJ0GZgaPNZH8W/EIGK0ySSGg33Zamz1ZWhqe0bXMknXn+nJZIeojTRhOJCMQ65GdVowBcYdaXE9UIkTdIZtaf7ClF/CJZ7AydOiaFRymNYJbOXeQKhZSFnQ751Rpwg2/57ID1C2f/7az1xLh7NchOkQ5r89TTjTcdxlbik4WR6eFy2q0P75P9pyE4SkbvmC+XRnBnODho1CODkxt38ktzDJR7fbh6Q1O/KrXsK6z6YDi/mv0sW6sY8o73Oo2qU6ZedJE4QTmMOXSXmgGaERunjXw1n1Ye14jXv0nu0yWCEkq7c15jwBD0tc0/XmGAUG8OWzT0Vu2qQqFMCjTJ0ztaWEZena3/OJuMAQSjWXUEv+DHIiXbbWxPLB5MBU8TEVGCt3c/FgTzlmAVeyo0oPFRZv5ix5yxSnUduPG6cF4LODk3G3V5RosBx3HEYLvsMshc8XSw6DaR7g2rPs5XTbe8NktVHWl0wLT9Xcd7NUqwXW/s9mRRkLATghHz3xKsGqRh6gPCLPMyURfO2KP/Ajzyx1GJNZACqaHqasdekGEkWsMbNCc+GDWT1YAjTGULJx1evXqdIGWg6WPVoeC2lkfTi15C8aoi92S+6Kv8sJqtcEK+m1M8eO6mF6Qq282k1N4M0zcDZrHYT5BqX6IsiA4Su59olwkgieq1yRG5EBWBLHk7RcTp4vJQT2MhQb1sBzv9JpEUU6fSvNQuiJw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(52116014)(376014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iMUEqhSLg/CIYoQq4GDikDYkMsRKsoDc1QrxFvOfNF+Fz9kFo9uhviI+IVCwkUOWnJSIiLIajAQxNDMIGSMWVsgfUrbDB3w/Sihg6UVcNn6IV12YxRqjBtLNIndWNZXYeBs0YUuQ6eXBIolaL2bEj6Fn6n9qJT0hj0C732CODbmTOlm4Et/YEkNRMzvNc4chrXuWH2abV69IJ58wR/YfmEAMRQfbzW5nwRTZWsvcREY6vVHB3b5JsncmsQu+LwDukfdgZi5eNqnjfuWAy2yLecvtxcdlf7Q8MxbgS0x3GBfxR2RhnnLf5/X390Ndd17jfEKWl/ucCFe9US+OQ2cGMr5LpaN/X98gVw3wVFVWhRIWdFfWWf5a/HaVNx7sw1VBJVwC/Cz6G9uNICz6unXzutHC1biSWfdZ4ICzqywh2mG30o9dZovXUyVIv2foX6gy3bVwaNTey97lYvDCTPpcJx15vo2YLNueodXye8stKKf4M5jocx5m8K6xpRwnV58e9xUchp9u+QerT6QrrzNkjdSQIRz568yKFGbPHhmkZpfBUxKFkTcbyM24f4hf155yUh5oBrUjgEQjIdQAMuAgDKg4Wi1WRHM5cb0tw1rMwWiJOqI98cHp3z+yCvk6K91WgWwBjhEyZPwfdjjca8G619Z4K5ZR6/21YCbauppGF77hEdJNL1ovdjrRYtOL/3jt2LcQ4c8HsdWukmPWjNnhlzHsLYrCSJIvd2yt9phifDnJvwruSRfV+lsBwIXRpXFzG+ovnMtCuSzU/EL7EZPvChOdfpe6mO+HYD9spT2vBuGOh7L/fsXWcioxOWXKzq1VDDZOIUZ23zuWW7969kluTobOd5OHxrw0fBh7xIdaaBhqqI4660QzjeQAlgTp9XOXYiB/iiVYpdTHwgmLj5NJTzchZ4nY0h3yVJNS0/fPXqnu8k9+jXMEn05c//lKAfuN46C2x0viSFQuKYQo9+ed+h/vsbWlWSEXfDvb8jrYcMR1Fu983KDWGo4qMSI1oQYwCnv/24m39BYFoLBvtCLf5TE8j6w5kkcvRKRjf2ix3yx4OlbiMJ89OPwwDPIKtBzZcmIWmOEhZCUZfOhknER5TJiCAh+TONW4oCwO0J+zBjrb6yJh8bkZXwq/aDOZ/kqdVtuNXpNWoP01kSIIZqkzNpDHduIOYESyHMoL3/psF1d+lKnToj6RqBpgFI96xhX2ptnbQ5xP2vM37EuhsOZZcJDvZ8D5Fo5J2gWOj8LQ+RyJqcc/8OE0zHLSOGhUExt+sYvG/rlaaz+tWIfn+Gn0HBrFec8AYThlvSEFt3EO6P7LB0taAeUZgb8P3RMBfMdTaESaCgOn+eX4NA42dOHN1bgf53L1vje+cj2/CrrkmiWkjFLyjg0os83Lswvx/odsByy4E7ziZ/orI6uDXAqCvs3toMylrBMlueqVkg3hpOqqaBWv4t4y7xMo+/QF74Jc/+GaZthfhuPrIqvneSng+FdiFvsgjErKNuOqUmVAYAP4zGuh+iRWSRCQiQbG51G8YScAE4mTXtJvPcQTRzrf7BZxMm8uWdWRfitfvgjUu9b/NMxdg/cMG0zsXQY4PWebiJ0V2Ta8ZhMX/noNFb6b3w== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1c1c9eb-9ec4-4044-2071-08dce208b693 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:43.1796 (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: F/2XN2VaHRsQJplGbxCqA33cU0s7MHKzayPUvNTZ9QlAqfK6jBiaigvpmMXg8o9zuA6lh4ViqSFGyM6QlDB29A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7724 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: Gagandeep Singh When a Retire FQ command is executed on a FQ in the Tentatively Scheduled or Parked states, in that case FQ is retired immediately and a FQRNI (Frame Queue Retirement Notification Immediate) message is generated. Software must read this message from MR and consume it to free the memory used by it. Although it is not mentioned about which memory to be used by FQRNIs in the RM but through experiments it is proven that it can use PFDRs. So if these messages are allowed to build up indefinitely then PFDR resources can become exhausted and cause enqueues to stall. Therefore software must consume these MR messages on a regular basis to avoid depleting the available PFDR resources. This is the PFDRs leak issue which user can experienace while using the DPDK crypto driver and creating and destroying the sessions multiple times. On a session destroy, DPDK calls the qman_retire_fq() for each FQ used by the session, but it does not handle the FQRNIs generated and allowed them to build up indefinitely in MR. This patch fixes this issue by consuming the FQRNIs received from MR immediately after FQ retire by calling drain_mr_fqrni(). Please note that this drain_mr_fqrni() only look for FQRNI type messages to consume. If there are other type of messages like FQRN, FQRL, FQPN, ERN etc. also coming on MR then those messages need to be handled separately. Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines") Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh --- drivers/bus/dpaa/base/qbman/qman.c | 46 ++++++++++++++++-------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c index 301057723e..9c90ee25a6 100644 --- a/drivers/bus/dpaa/base/qbman/qman.c +++ b/drivers/bus/dpaa/base/qbman/qman.c @@ -292,10 +292,32 @@ static inline void qman_stop_dequeues_ex(struct qman_portal *p) qm_dqrr_set_maxfill(&p->p, 0); } +static inline void qm_mr_pvb_update(struct qm_portal *portal) +{ + register struct qm_mr *mr = &portal->mr; + const struct qm_mr_entry *res = qm_cl(mr->ring, mr->pi); + +#ifdef RTE_LIBRTE_DPAA_HWDEBUG + DPAA_ASSERT(mr->pmode == qm_mr_pvb); +#endif + /* when accessing 'verb', use __raw_readb() to ensure that compiler + * inlining doesn't try to optimise out "excess reads". + */ + if ((__raw_readb(&res->ern.verb) & QM_MR_VERB_VBIT) == mr->vbit) { + mr->pi = (mr->pi + 1) & (QM_MR_SIZE - 1); + if (!mr->pi) + mr->vbit ^= QM_MR_VERB_VBIT; + mr->fill++; + res = MR_INC(res); + } + dcbit_ro(res); +} + static int drain_mr_fqrni(struct qm_portal *p) { const struct qm_mr_entry *msg; loop: + qm_mr_pvb_update(p); msg = qm_mr_current(p); if (!msg) { /* @@ -317,6 +339,7 @@ static int drain_mr_fqrni(struct qm_portal *p) do { now = mfatb(); } while ((then + 10000) > now); + qm_mr_pvb_update(p); msg = qm_mr_current(p); if (!msg) return 0; @@ -479,27 +502,6 @@ static inline int qm_mr_init(struct qm_portal *portal, return 0; } -static inline void qm_mr_pvb_update(struct qm_portal *portal) -{ - register struct qm_mr *mr = &portal->mr; - const struct qm_mr_entry *res = qm_cl(mr->ring, mr->pi); - -#ifdef RTE_LIBRTE_DPAA_HWDEBUG - DPAA_ASSERT(mr->pmode == qm_mr_pvb); -#endif - /* when accessing 'verb', use __raw_readb() to ensure that compiler - * inlining doesn't try to optimise out "excess reads". - */ - if ((__raw_readb(&res->ern.verb) & QM_MR_VERB_VBIT) == mr->vbit) { - mr->pi = (mr->pi + 1) & (QM_MR_SIZE - 1); - if (!mr->pi) - mr->vbit ^= QM_MR_VERB_VBIT; - mr->fill++; - res = MR_INC(res); - } - dcbit_ro(res); -} - struct qman_portal * qman_init_portal(struct qman_portal *portal, const struct qm_portal_config *c, @@ -1794,6 +1796,8 @@ int qman_retire_fq(struct qman_fq *fq, u32 *flags) } out: FQUNLOCK(fq); + /* Draining FQRNIs, if any */ + drain_mr_fqrni(&p->p); return rval; } From patchwork Tue Oct 1 11:03:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144812 X-Patchwork-Delegate: ferruh.yigit@amd.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 F3B0045A79; Tue, 1 Oct 2024 13:03:58 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D5A77402DC; Tue, 1 Oct 2024 13:03:47 +0200 (CEST) Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010061.outbound.protection.outlook.com [52.101.69.61]) by mails.dpdk.org (Postfix) with ESMTP id 0B5994064A; Tue, 1 Oct 2024 13:03:46 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=O+y2lvPMMYk9ozV1ziSCnelZ0wlWjGmYqc1ey1cHlbTlFEagy2clx6Bl0ADwDOAbqWIhd5Xx0GYni804frEagIVj2bPY/pNWa+++RMo2+GSXkr4zPrAru5xMvl7h5eGc4FrNskrSb7M+NbhTqIemRcqHL5BVUYCw/10kdsw/G5FpLLU82LbAT5/mzGnDpdHZmU1Kob/Zsy/R+/CyWYE6leenp3OzH4yLlKJ1tEAYzUvuzyXmnSC01RCzHz7M+xd/odS359dcHAibnlvE2+QmkIU/urJOmKuSFn7HZMb2NsGec3zrrCyar65lqZHDEiMfDRRkkk7XnAOSxZhB98awTg== 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=R6q42HsQFrqqj18IvhDZnpZvE2lWAJfJ8Ciiv01ZGGU=; b=bmecgrq0aHLcJbJSC2Wrzb67OxPiiAbVnKdyjBh/hy/GQdD7tootYjNdO11FJmyK8jWXpXvn+JspJiAJIyvdWItDWRo6WliGv7g97kw23Sp96TLGuWagCxQGcTLWXVbR9PxFQvh458PvkzSCVFfbZla2ZFqhbeholAr5DIKTQSBW+h3Oi2JFo/iW9yF4B5Bf9yJ9JH7Jznw30YIji+U/alyMHKCgN+hFSnjpCq52Cj6duqYp8C3zcj1BllFD+i+Y30+pBTjjBSKnpQg1/wnaTEuEnRlPuBS0boGmzvthkLM0YFWz92qOpjEosmA/XWL4fEkhcvV9/6vbDRY7EybO3A== 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=R6q42HsQFrqqj18IvhDZnpZvE2lWAJfJ8Ciiv01ZGGU=; b=i1zHRq9xJyOD4gd+f0yK5eAT66hNXNvfV6xRkOg/sHNfe4iC7fup0AJPM5tdAA7fm+Tw95OnUrZ1sBgM7q64jpF3vNyGz01PQmy0VcD46Mj2/VmCT2DIoJvka2VlQMJUxe4bFtzOtbHxQyGbZoItfFvzXI0scsfJfyu1kwtc05axGq3qDb5Kg3A7DMYzUTE8JnLob/Xw7x48p5uKOVc7abYxrtGyZfXzmduglWWxDU5ZrbrYkPo5EhK3CiaRk9ZOT9krC7KKqIY7sQHAym3L8E78WwB0FwSjdn7ld7M181p4a5K+0jb7KOcKJUT5jk2Ao0eMSvSBB70ABcKkYMQ27Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by DBBPR04MB7724.eurprd04.prod.outlook.com (2603:10a6:10:209::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.27; Tue, 1 Oct 2024 11:03:45 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:45 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Rohit Raj , hemant.agrawal@nxp.com, stable@dpdk.org Subject: [PATCH v5 02/18] net/dpaa: fix typecasting ch ID to u32 Date: Tue, 1 Oct 2024 16:33:09 +0530 Message-Id: <20241001110325.4173762-3-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|DBBPR04MB7724:EE_ X-MS-Office365-Filtering-Correlation-Id: c468ff99-0d57-490b-1bbe-08dce208b79f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|52116014|376014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: 91+0/7ApYcq69BAOPGfh0So20uDvyuzQ5inrOjEVc08/Rw27dSCV1J2A83vAe2yTDZkyKNC6x/7XuZIvdvL7qedu6N5KlaBh+1lrqKU1on0wOVs7BvIAIdxhycEE6b1S5cQgxiCVakbXYrjQbJdIJJqRwXF+7Yel2k/myEB/o1NUcECI0Rqv5oxirV9nFLkDCDCRJmuhMel+UEfv7d+ABu43nQfSWpBiZnoctPLI7S6FQQNUz11dHF1oL53JokfURiV2HyHhTD9VN0b+ok1la36UMKuwoXmTQPvgInx5BqPEAtMygq/kDZckA45ZWRT4jWarKtGcP6AaApku8sQi9csNiTJ3IrGAsH+ZlSfzieLIWzv2BFqtmceXEMPJxHeV7H9yWE8rF+5c7fEhw8Mg4PUAB/sB7iKWUunI83Nqi+v8MhbfT5u2xiaB1ozq7PgMtBGWC2ARAV5GRxU8vWGV9kPYufyi0h8U0x4LimJDJk5h9CUTCjb/GgHy1uupLXma9h+1v7L7/d7m02b0Mzz1wkhcxeP//HvWmodFbwTg6zd9KPlQ5E4Cx3wkLfZnMqd57qcTPuirTUPYzLsWIi53JpV2RUwXJ8Ot6wXEb99uASJ3hRaC6J7pQmcpSF91TNFREfAnvblnpJIOT3PsJ8tRkv7mlykyr9U0CWz873dyG4/EkOgGI4oPXwIzm2rxrywA54ruzYWEzdL5IetX7/M2yGe2zWNa5iADJNoGz+Y72nlzl+KJEgM5Kz2N7ApAtRb4xkwmatpKVPWis1Mcewo1TYlWBCoSKU263pFxu6HThpTKETMknnCPaH4L99OoGmIQQ1zHnltGRtqTk5f1KqwMCqEMti9awasCSxS9iHIlmHZz6D7h1nCNB5TrWUJ7ZUlpeDkfgEM1I4BS6nTWUBDBX+zfVXqRb/I57Wvnm9BI5OisU7kuRyDP0279K9KD79pAflx/5qoIqVpItAofIZq3xbgQrCN3yegjCu7aUPRYskHsbhtXqBrFuHcWKkbZsHRnHHBXLRkZWdFazhKS/oQxedZ/aJCy5uBmaAr3ylfOJdkFvMlGvPppJmK86XXQ2M5X3q5vH0DNnxU6knQZcUv7hUDmCjd0P1ppFnrZcVRHK8VKL77xeIEaRURdbAoFsHgcok3ncx+N7F+6wjDCykKkCtyNnBoP2VK8mXKwu48mQxSVK25IdkkT6dcnXab+rCURKPJvL2bYltvKwbRztukbGeMswI/A2JN4Ju5aOm+swZFO6h003xKKs0Xa23IIIaew7XrvrKJ+KYdkNdPYBMtiaINvtZC0Js2z/nnaCofv+avNSZMwu/y/irkZ6i1An84w46/1tKf9qJfshpiD48/Eeg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(52116014)(376014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: C0J45F0VVfLkX4JM79McKtse+RLbyugXIvEERxKmBR8z1sFBZaXRpJ7Ioa2D6qFOcSTSk6QH0KLHjZ7QUwMtcWMd7HUoyCvefWAHNDHyy5shlfBJdg26CDvHCDGBU3kzfo6eoEIYPf3nXEi5bgihNY2qgSydjkAONsihvoclUp9eoWGp1KHOfrN/qM8dpdbnEcIC8KENpHco7Q/jf8CbZIo1sd3n9XHy/pXyFARZ7UYD3SA96a5MV2f9EFa3O2uSFyv0fYqGeenF64vS32Elq28dPlWBBgyR8ngAy+/uFRJFVuZKH30XSEUaA5c0BtK9N9ks/VN47pWWIzCmjiz2UZj5k3hmxP0lr9wsDyPIfmBe0jXs4LvNuO0VeZTO6iRn17nRNOz+oFzn5+k0503VyxIB2dL9BHD6v/z5hvVI9KwqcY2RMu2GvFbhaWo2SCzRFbqE5lqVe9IGmGPFd0WYNdm133PFBPpFlrZDhkoqeGCJbLQbfKOOdAxOHXPtS2R5y4gwPn8IlR/gN532UPaw0sZ7W0XzVI806lNvbibgF7NjbOF3dC3/YYrBS1/N65vlC1ucJ8LJdeGpcu2Ki4qfn55ZpRiAuGFYrs+WFEqxu6KpOagyNlPER4sKnbjwuahhafdpX9ll8Q4pJPAFG2J5JBlvRb2qUrd+mtn3DJpZOR/x9AoN5sDslq7+P8mt2LuXY+OIggJzDmhoiNa8fJb9COwQNntBAfmTLrJjW0aMEq0VSbwsrWyD+/u/N4lEsNBFB5wTx0RbGB0PYhckmG13IbsgbitFmS6LZ9hhLst9o5r58Vt3sySrVJ+tFsobog2R28dMRM26U5qhbSID63x8IzjKjf7c6/1ZeOkBmuvQCKQpt1QXKckUPtnRbyfxqqyUUWnJ+PDiMQX4EsCRSnK9/2qOjz9g2WabmaTxZeq+QhXJsNx19kldZcKxXd2LBaUyQ9DPft8dSDK99HrEvpJSC+h2ZIOcXblFCY2hZtLkoiqu64qKJHn6SOVjhr1FYyZIeNyM5s4AGQB2q0UOeVAeobf+xhZt0Zf9sM+WkhKFgP7NSj/3obA0IKrUtLEzeVhMHFoMzw80aLKjoVD/XTlmHxX+MH/ykzSIv6h5hK7C0Varmncp4NPV/6qurdyZX6LzAL+tlvDZriUWIMISV0tZmfUg+0qPqYwdleBqiN0+Qv591cVDe2lt1+ObTYfo2qSsLSlZ3ueLJ9qBAUhZvzf8FRtrMoeWAiJ4Jz+YujHUIL5IEhQAyWwWwqhpYNU4+uJNsJgzZRWBvGAK/iFqKL247yJO+mdeUMGUQPyRB54M8+eEoK2iX8odfobEbF/MDSwrF2YbuWwhQ/IUrlppBrP4XcQKbAGsXQCt/JRHtYyiz//rT9K+IHlAruIOENC4ZwxgSZPFkR5ISwmLlI/YgY+UxhMW/X1sP23Waj53SkTPDlMD0Fw2nNkCPekcHy7ArfpmX9LH3zQtt9o64OhXMkgVQqaEqfwB+tJwdg89Ruxt7ZCZfNYMbk8Mk6Gw8unZQclvLrDtpr17Eo2v+q7tCy+Yo11B6wnj7KnqfIJNR8L81uysWB4iLYdNGZBqDNk88sQMsF8IEeAjEvo5S6VpqA3tRg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c468ff99-0d57-490b-1bbe-08dce208b79f X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:44.9854 (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: o4HFWpvIop3IHA2czit1deHm9Elg3DLsuWAV8DO4WKshKC8VzRfZwhf4yFqmKuJGYBQG4IIR3DlUGc11L1kR4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7724 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: Rohit Raj Avoid typecasting ch_id to u32 and passing it to another API since it can corrupt other data. Instead, create new u32 variable and typecase it back to u16 after it gets updated by the API. Fixes: 0c504f6950b6 ("net/dpaa: support push mode") Cc: hemant.agrawal@nxp.com Cc: stable@dpdk.org Signed-off-by: Rohit Raj --- drivers/net/dpaa/dpaa_ethdev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 060b8c678f..1a2de5240f 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -972,7 +972,7 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, struct fman_if *fif = dev->process_private; struct qman_fq *rxq = &dpaa_intf->rx_queues[queue_idx]; struct qm_mcc_initfq opts = {0}; - u32 flags = 0; + u32 ch_id, flags = 0; int ret; u32 buffsz = rte_pktmbuf_data_room_size(mp) - RTE_PKTMBUF_HEADROOM; uint32_t max_rx_pktlen; @@ -1096,7 +1096,9 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, DPAA_IF_RX_CONTEXT_STASH; /*Create a channel and associate given queue with the channel*/ - qman_alloc_pool_range((u32 *)&rxq->ch_id, 1, 1, 0); + qman_alloc_pool_range(&ch_id, 1, 1, 0); + rxq->ch_id = (u16)ch_id; + opts.we_mask = opts.we_mask | QM_INITFQ_WE_DESTWQ; opts.fqd.dest.channel = rxq->ch_id; opts.fqd.dest.wq = DPAA_IF_RX_PRIORITY; From patchwork Tue Oct 1 11:03:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144813 X-Patchwork-Delegate: ferruh.yigit@amd.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 62CA345A79; Tue, 1 Oct 2024 13:04:13 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 325F540657; Tue, 1 Oct 2024 13:03:50 +0200 (CEST) Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010045.outbound.protection.outlook.com [52.101.69.45]) by mails.dpdk.org (Postfix) with ESMTP id 7EF7B4027C; Tue, 1 Oct 2024 13:03:47 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JL8J+JwbPmWRvLJ+jJETOSi1yY7mlN30hzcyJSr7sjlKiSeybZB+Lky4HJqA0ywoU4gw1NkeykNwfxHf/pnhOSo1Y4B9Ga/0PR7VXSWeyhQFlgT556eqyZR3q/oXfMqt6BiHv3bTapfqXdx7RhZ6ywMWYIXbhOvQ0YsPo7i0npvD6kZyCfkBSJ78VwG93xR89qse/66G1FoVj2A6UNokgKbRKnShNK4B5NSLJrukrEqymzHzXBftd7TIMi91RXuH1VvJUD6dcjO8yO+acPWC30lRvLRdcSDUarazSCX6ARlndNX45m/Wo2ae/TAZ00NO2H4has3LW1Se86NGGO7htg== 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=mHG/HdPGrGqhGeXVZaM45nATFaQaOD0h+yGd8ip7NTE=; b=YdggqEpUz1kg696ENbJAwjSBsdI1GddLVx7ag5SsblEQh31t9vWhbI7fLhUmjFNSL8+KizCCaa//r7So9/+I9vNz5fBUOpImZT9rvVQpVjEQvr/ut24/BwPELNSd8lyvEigdKSHDqB65TdSd+oqI+F/5Xkyab0ryoVYZ4CRVnKXNSWwE3+dF4yQED+cUpHwC8DMUnwGkQ4JhcN/RYShURrQl2H4R7IAln33CC97i+xeC3D0UJ4KbeA8Hy7EyVPFo+CFSkdL1I3b6JRriZELaJqXv9qYtUmyGqyLhpxqdXIVNTABIDTO2+VvNcEenCNjKCku7ik1OMEdMkqp9lJ1I6Q== 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=mHG/HdPGrGqhGeXVZaM45nATFaQaOD0h+yGd8ip7NTE=; b=OBg6bis6zSfV2TBdnxGo5yJlGsd8PM289vsbNrRms/ar512/cmnPX2FfOsaK3Nxeu39t+eTHNwH3eAo48LPm80f4POYekuqtqMup7ZIWz46Lpin8JR1OP9bTJjIXoDIonvV7M77rVhq2RGtmuO8+ltjgTpGrAGUJwjS/1Lcw87ejXdMVTSpk+QoJZlNlexnmmMAHvkCbZwLa5vz4S543IKZ0XtgHfBc2n/3Wm4jONRyGNVO84LbNfKY36Toktem9+zrwJWirmD8yYjq1pel/yJer0wYtZqBfc+Db/vBEt86BYxurKq6OXaLg9iI5k5PwDt66XX8Xg4/x/J6XLEKAoA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by DBBPR04MB7724.eurprd04.prod.outlook.com (2603:10a6:10:209::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.27; Tue, 1 Oct 2024 11:03:46 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:46 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, stable@dpdk.org Subject: [PATCH v5 03/18] bus/dpaa: fix VSP for 1G fm1-mac9 and 10 Date: Tue, 1 Oct 2024 16:33:10 +0530 Message-Id: <20241001110325.4173762-4-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|DBBPR04MB7724:EE_ X-MS-Office365-Filtering-Correlation-Id: 51624aef-cfcc-42c3-a79c-08dce208b876 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|52116014|376014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: F6J3GjgLyMnOBwsd7LEdWWY2KhrDjUvJYn6ebrbDdjtMxxS9tePdbGV1eVa8nMgwBcvFyMLoffZdgdkKsAbvIRhCD5UJ5zgdCmgiIZFf7tLNXObZ1nTz+/1p/2OJTscx9NhCG3nwm9l4Xlq/p1kDiRORnkX9QzvSoHlR/mZLJKx4A1GLezE/tr8+BnE21PQkfhShk9Jlw4i95tqaU1iegZ5SKomSHjE5WDVDiF3jnPGzs/0G0wnQKwxi1snNz8yXitMUEZxBHxcDda4AJ3tVA0PziWWMpAGDr25BmVhwbWyaZiKv5onpY+7UVD8GTTkW+6YHdAHtIwvo2XQwYHsPlNAYtpOsl89t9M/ETdAcRwZi9l/MPF5nITC7Nip39I5LtrBvKntoniSdSjJ4Pvmx/4W1XSPhkGRs1StZVyhuYYacu3Ucv9ZMtP6orLAKoOMn09rSaSizGQk7ymEkmyMkXcaPENbD8c1Xq55b3rUNSGdt7yMhNDMtjKTTKAh1Pu/nKfFzXOHtjjPDnT5yqIaMu+FYnALybGLbpM/lvaQoxyKQvfuf28Qqe3kOsl6m72wreV3ye4f0PSV+yZcPfMzu2LamqspNSgyExomSJXTYuZfjz5ZE8vp0L421LuAH7Rii/hlFWPueKjPUzS4ba0TzbJgVWKtL6YC3WNmXX+Tc50h5e5Qbwd+kSAu14zkXpbcnevpZt9i3LwidTGBP8BHMUbTrJOL/65liNOGbiUk+qHREaFKoqsXw5/TZft2/wohi5fz/YjxNuQuGmYNxkr6FX3zuE95xD355/QO/R4jfKSE8Iz9WWPNRyG51+mWvunPMASpYVSiUdQ1Y+KcWeyzKnkdiWvH5IVric+864q5z9vPLD67uTm9iO4WQ+C/Pcai21VxaIl4GYNdltNaiDkl5rfpuKbAuIlHtt8w9H+j85w8U2ISzdky7xAK8O2ReywwpElMdyHbJO28hm021Svz85X6J7P9J+L1F8VKayyVkFwHaO3JYYqNYrHtc3/GISJCp2znuwVeFwPINmdjRQvIMNQ/S7UrBlgWOG3EUB78S8L5ToI2kag+RDj+83scIyALZJ5LHcv8Hbo+05lO4NkmPck9Se0FaICbdkSHznR8FGMplFHlS6HSU61SgKmpgXCfKLUdm6EpRuzCFvaGLCgFfgj9I6C/VN2LZBV5EbAKbbJknkBU+/IvNQ7xT0Clm72QYeuuyrTWUsl1jlDOMRvkMao1sluqfXJNyoJxVBcb5E3aC5yRZE8gaXkcuWaNOYLFhyfZ+erBhrXs8WzKsWnA8KZHgllV2oHmuZs5C52Q4m1IDP4BbY6YpuGhUqWEQlxaMo9rSuuezBg7BAOQBqQGS2w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(52116014)(376014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cqr6pdJsyr8CkUl4QTkpUyTRvhojTd4jUeU7mPnQQTjyU8hucGjz/xsKKLCrNyvxIVME7+NW4VMbYWZQrS8hLrwnDJgi4MMbkW/O+55Q7aUn51kp70jZdLu/9P0/XOsNzoairSqjEH6WrrwdIErp+nbxSCcYT5h1wDUNwg7PcKJwzC7udQn28ryNgZD/yPYB0fdVvwtKVuu1OlAZpxTxzMFiu0e4SsSfx1mgS2RiZYiKsWdxqKi+aaAtpI2Nz1iXp5proojBKA/txq2S81somjTAstPLfpCBgcfzBE1UymcYpCr582oZIcdNqxBEKt74DONh5LcoXfDanObMMhHSVVBVdAxDMFy7FYOIgO1sYDHSo3cZJrll6HddB51dMkE+KCsyBTImRgXZ3jy9TFZ00NgmGvLOREWCUYDs+Ilq+YHd0NgCmBzSzyJGM9Q4Q2iIYG9GM9B+Krd0lgimRxwJztlLoMzuD/RYorlzosVlx12hnZgU37Os4JoPLsqOogCX8i7w2fDyik+mv9xq0HuwlVf8paBk7la2NXvbT5+TMA3+Gh7qQJHhBAUWKHKZbm9d/l8f82RNYJyromQimAP+4LG8GVuL9X1bZ/0VX7Wyu8DxjZVcPKA646ga+NmOkYwH5cHyr5bsfF+zJUqhytNZUvSapj3V6Enh8ruLbZ5TG+tX3Krx1M5gMxHxxU3h1ydtn8CA+WtQnx1VSpD6vYDTgyYYwoWxM8PElII7rU5+tLlzmGgQpEKjG4PYdXv0gYA6HGPIxw7APzP34Xhnxjsv8OBf6pwP8h/Ayp+0VYCM0D3GCXGfTUmLVVSaxPIZUE2NtESPQJ/QtJjMxtVuXHvS0Laaj6oV3OTaqRaijn6GB8AVYsBjchKhApku5WwTZl2un+E+rjm2Nz0LQMfMySP8QZCuJ4HWfkjaiKbz5OdINJiI+Tniw52v1lKHpYcaYlStTBfiWF1UDYpwR0Sp/KdgTfLqotXRkI0lgzsbnV5ho58OHwE1c8vzYKVT2rCTRa1EukzAyN1hM+CIffMspQ+ogYhp9GuEESsa+/Js7GVXDGsR0OSsOFe+w6hZmK8xRuRfSKvS9QNmtqKblfFEPIFLlFf8HAoZSwIPGUqjpNsL+x9t1KGjHtUEmDj2hsedZPodvRTWrE0gwaBehvmfTMA696Lt6+3GMEnaG2CI6P1MzJEjb7iKz25VH/JuOOvDQjXIl4wBZxX+mkyRn8DQehVzJdZJYMywBzYP5SUfNjGhw2FZoAd9TuMaCGpZNRqo7/DrdGNbo4sI9cGqwZyyrZpUgU90yG5CWjKg+9IfrHlnHuDm8WkSfVYWwFqeQ8VpVYVhKOliYdvKi7DnhtkAImMRDv/aDfa8JAjk7TT5S3S2nK9940b/wioX2WIRZ1ZAr+G5WWqyoTVptGNbauNn29a2E7w38LEM7LdDNYxjJmcOKKF4rt5CNujcPBS3TyYa7LkkBSDBkkQEwvWKxrms5coP2YcuuqP3nnqVsCzewto49Z9VjBM7ONPikW+aWql9caVD/vD+lWpDcH/hgFCDJLJTyv/IyVQEG2UmYFjD1QzNwq2iueWa1ZQKHr77ffQZjQ+3aOucWdIv5D5c76jlG6otRw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51624aef-cfcc-42c3-a79c-08dce208b876 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:46.3979 (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: FkNbL8lsQEia/28/0SCzYxX2UvwL6JOLDWqH/0L3QSdkM2vwlsGr2dmM3CN4zUR5qK0RV76uW1vw2kfW5ZFyOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7724 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 No need to classify interface separately for 1G and 10G Note that VSP or Virtual storage profile are DPAA equivalent for SRIOV config to logically divide a physical ports in virtual ports. Fixes: e0718bb2ca95 ("bus/dpaa: add virtual storage profile port init") Cc: stable@dpdk.org Signed-off-by: Hemant Agrawal --- drivers/bus/dpaa/base/fman/fman.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/drivers/bus/dpaa/base/fman/fman.c b/drivers/bus/dpaa/base/fman/fman.c index 41195eb0a7..beeb03dbf2 100644 --- a/drivers/bus/dpaa/base/fman/fman.c +++ b/drivers/bus/dpaa/base/fman/fman.c @@ -153,7 +153,7 @@ static void fman_if_vsp_init(struct __fman_if *__if) size_t lenp; const uint8_t mac_idx[] = {-1, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1}; - if (__if->__if.mac_type == fman_mac_1g) { + if (__if->__if.mac_idx <= 8) { for_each_compatible_node(dev, NULL, "fsl,fman-port-1g-rx-extended-args") { prop = of_get_property(dev, "cell-index", &lenp); @@ -176,7 +176,32 @@ static void fman_if_vsp_init(struct __fman_if *__if) } } } - } else if (__if->__if.mac_type == fman_mac_10g) { + + for_each_compatible_node(dev, NULL, + "fsl,fman-port-op-extended-args") { + prop = of_get_property(dev, "cell-index", &lenp); + + if (prop) { + cell_index = of_read_number(&prop[0], + lenp / sizeof(phandle)); + + if (cell_index == __if->__if.mac_idx) { + prop = of_get_property(dev, + "vsp-window", + &lenp); + + if (prop) { + __if->__if.num_profiles = + of_read_number(&prop[0], + 1); + __if->__if.base_profile_id = + of_read_number(&prop[1], + 1); + } + } + } + } + } else { for_each_compatible_node(dev, NULL, "fsl,fman-port-10g-rx-extended-args") { prop = of_get_property(dev, "cell-index", &lenp); From patchwork Tue Oct 1 11:03:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144814 X-Patchwork-Delegate: ferruh.yigit@amd.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 B6A7045A79; Tue, 1 Oct 2024 13:04:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A8C124067B; Tue, 1 Oct 2024 13:03:52 +0200 (CEST) Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11011045.outbound.protection.outlook.com [52.101.65.45]) by mails.dpdk.org (Postfix) with ESMTP id 5F9B64066D; Tue, 1 Oct 2024 13:03:49 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NsDP+eutv1h+rgqnX0thuMLUyULSiNLyZRK2ifMGVeOG5mJx73Kv0ZX2oKvdQeRdWt+eEsItWZNCgmlqF/hig5y1nSaezuWoZnLg97nKmvpUkumFvP1EvFOalWjQV/xeqrhhKWDTy3yLFJjDBuha/bcerg9hvx1q0IoA+oVnlHUKBdfEXXVKJzzhPYdyYMVQCXED4Fme4F5m3WmU5M43GIv2qv3ED2rnHNi8rr3W5WTavd26+KCzwx+/qjLxHuKQBOY2ZqorfHBnJatKrkO5dIRF2xcoq/xyYxmJH+AmKxFE0Ftl0D7YmPnatrklEUbyIOgpKumC9RWtHJY/fqpSwg== 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=5gzOlFqHHOKX2aDsrgYIZEEnx6dTdb6uJxfJzlHJT8I=; b=gSi0thiDvefhRMBYQlxvW3VGoULObe4vf7NbxRjDMlg9svH9NyxFG5SYtwdsDWSnf8XvWcHiXeJfNp4s+uFqXEarHj/Ro8PUSibhw10JEBtUBB3lt6yX6p4/IklslUqKJkXMdRczMlfOz/j8yf+ZS0uYv4hzoL53nL4LnSfdqxoFrv19WsmXo9wbAGC2aG8sRhtx66FD3NjcUhBT7Nm41wtvbhrpcgTClJLYPP+1YyWwk+EyIr1xxw8L6HSQxlTAmfqntSwOtUul2skLIHEhF/O93g+duCyYX4Gy0F+ypz/BAMJIHgIfXKmNItXLGTwUJ6HDH7WJVpM36pkHJ+EPWg== 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=5gzOlFqHHOKX2aDsrgYIZEEnx6dTdb6uJxfJzlHJT8I=; b=mRPxzpXuiXorsDKq0b3AcWa1oRsew2xKjD09+qgqs3AEZmTDDMSb29PlFo81146EteGIUWa4mLwrkNbPSURgFVdDJ+Cd3eGWNZ2gdhZfxkswI/+NgMwb5hDDC8r2Q+o6XgKMfxr+tn+sYyxI2opoEIceEgMa17kYNU+jzTs3hA53ciUnR6Cf53ACc6c6L6R5Y1kTBvCUTlyiAdz6qUum3Mb57G+LrP2GbpOZ4D3Ot4zUvIK+2Da5MC2epW799oIaDW0mYxgJbOefKG5KvZOaWIdG1aKdwjyEFwP11Mf9PzMgcviO4rJXZWllSZ9p/P3CovjmyuYzc1RcGjNJIvOdHw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:03:48 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:48 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, stable@dpdk.org Subject: [PATCH v5 04/18] bus/dpaa: fix the fman details status Date: Tue, 1 Oct 2024 16:33:11 +0530 Message-Id: <20241001110325.4173762-5-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: d539f92e-8fa4-4b89-6238-08dce208b94b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: Ht6BxphNx7+58ehjbMnBfTQhvz3a+pmshq+gG8xF9lit63cN0qo8mwoPPc/TiGXNGoStkxcAPO4IU1stpCRPd3HV8bAGV2ZaJN8yTyA69qjcoHSPiEs9UH/Ijs2IukHczoJofxvCNc/SHyu6cy19makcn7vF4uICiPn2861JD2epvfB/cRCP2m82HINKLHKHyXSL6V2Vhosoug1OMkqG54/TOd6ZZ05OP8XC9z4QE02WRxD+5Kj7TjLOFqcnlWpnPVxfYY+UR4KEIQ5piPwt1sA7NeoOJVsDHi9caZWF2JMC8yT2yL8jcpMF6l+CH5JeLhv34xqhrVNmAVhJ/wCUOfabbIknsdOkgvk3FAEZG7RYyGt+yg2UYFw72mpk0beH1Dq8noIH/BZN2rU1RfUcOw4+EyLPibhuNYzibmLuysdq0cKdICygUYUfYZYEnMPQn+0mebm4LdUeazfcXq+Xnx9vCaIsydTfxvomWx5FwC/DvWexxtT1cSYQq8F+Vb9heaS/0hQa8M6pvnMdV/is44JReMbG6qYqP6TDGVFHXj5qV6ymcsxwfoy/qGQuvI205KAOm3ey3f7GEwqlOOTLn4cGaStEAGKghAO68xlY9JHvz+7dWZDzEPlGUL6gbcvf0uWVLwl7DOaiR9UhxK/BsWgAwHoaIAwGJ/r4hfa6lrmIMuRwKnvEVCE9aywnrxvnT7bEMjHcfVv2qZA5HMz/SLiKa19Y4NxnGWHa+Pndsn3WbxMsqkYBacMlgT5iw/YpIWpkJr3BRUSSCJOYgReO8ZANcu3Lz+GRMnLcsWkY+gROOqDBN5aDfW/zgwFeb5eLz6MfMXf1SxoPNgSF4VxlitX8cspQwkOHdsQE4JF4KZBcDrunAIm2K5WC24U0UxTL9wLpwjBlbd+Oe9RxXirdf09wTKRHZEiSI2ece8FOYoydZXdpHgrb/PYyJQZEy1e4aHHFfaEk6TyvZ7JQNTJcbdWzDZK91xvAKk88X/xMfGj2jzNpfSBafRknHeXF1XsMJ4Nns4BJ5g8uA+q9ZgxBVdO36yzAcryYInEN6SZ2aQ19pFKXlsgiG6LBpnhnMgFQaH4GxewZj+0OMNLWzXG/I1DqegsBRTriJ9gFR0h2wNsMxyvzgSAvP2/Usr2zzxY8HqmPhghL943r7GbCiLe4VdSLiiT6LJ2F/0x4ptalcWpwyls3DDWUp0imWSe9gSv1yfTtcPY15BoL1yQfINb/I9xpi2fSv+DavabkTl3XlIwvVDKZp/rtjxIpwIi6zHwBZsE1T2SQHumO4MuM48Ko+qE+hW7vAoZg5JFnJ/eyapUA9Txo8RSa68h+EZ47fg0XpptvEmEM+V5gfsQEJxrtFg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fcvRGh7m+R3tqa7aUuc0tFwBqq08mITN4JQWMj+pJQaolKTh5odOlHNhi1l0QDJWmI3gWaRkbUsLGRMKB7LGjQOLUAxJ59QUsrdmoUw/muXKgkLcY1segCXfx4RiaBLh1VAeC/wRuwjbeA+NdItkgm/oF7DwdHSxYf88oWu5wH8dtRretwmJqAzh5AAXgIdAm5iuRsAy8jFxO52FnhWyo2WkdwCb5n3Ro2cnrYoNsCu+sS2AbE9Iw+VQz3i8/89wcjFtjpyKxJClknJzM+EfIGHI8KKB4BDgfTLK1/H1sqcbgEhekaZuNPS5GoF0hAkTE0f6p37bbFhBArefB/t02L5L4QRMNkosGfvRW+fsaR036hXm0Nh1aeARWwGw87SDfYj2syJPi/tlWHTCl383wnHs9v4oy43ogsBVi5d7AIyUDDqNra7YuK3Wb9kt6uuRJ4iGS6NUCpKGRb2DxVTEz9cxjzlN6DDnmW0r8wmsujZOWRbOKm5SFzV/gWYQBDTNPMGdtNHJTFEaN+G2pdyi4y6nVn88Ro4haB7sbmv0a3Zst/OHj/avkoaODRn1Y7cpxxXd46TFxqywv2WULEKdInopCRh2s9JpBIb8s53Rmf96x0C2GWYet3CXAqgi+7SGYF9XxAkITikM4tSr2ybQ27zzUctMdlH0HFspqm22WNw5zt5urWiMTnsZolHVA/bQBbHS7Hgwtsq4m7F1c9cthIzIesDR40tVtf1cZAMKKt0A1icMoBMSwcZlSxmMnqmxohZfPOnAS0FmP/5qjQtZpaEMgCDPLoH0EjO/9yTRWsS2cUxoHiSQc4m8Vnoyer8YlhkaX4tfLPJM4c/VzwRSh7kQEZVwcQWxKa5DEd2pw+sWLMBg3ZOqu75ZCgz18szUuD6Cw879/Q2CjjbhS0pGnUKFkqFW49WabpLN2kdoZmbY8fvCab0pMG7c1VASV7zGoUNGPeJRLjrExt93r2JvmfoV/Bzblo1PoypmHltJ3aaRpZcoTx3CQ9u2Zo6tb0AoH5/X0vZQfEJH94wkO/BpqUsVb8OlLUDnEJVj4lqKJ9ogIjO6JfB8sBQdA2gUrRRKVWRuvD4qAv2u2T7l71uHMCPvcBnIM8gVcYdkso6YzcZl5d1D0p+lGF1uFc6ApEIrCe3YCTJ5XYFLtzXu0Q6vvVjQJq8AHNgb5DMxWkPi7CaKgVdtBnUXueJEZjPjf0kmQ+neZ8/Zx4R/apZkQpmwzDehKklJMrU0dAq4V5ja3qWw61ZJ/IJz5h8A7TXwqpA7+axx+fncoO8VSM4Uj5rw6MR7cHtN8Ye/uRAXRVS1b0u2HOPc9sEwxEAMq2tZPni0HTBsn73nzVBhpxMcDVwMzjVY3cAlruGXcDir/KzOe2plZUvWwIMzn/6zWIHpGZ1Bk1CQi48L4XVMfffv3tXoNmRYRvICn799rF8s9n5n9j96asD6oWvhgYxIKOs9YEr4PSgex7v98h4thmza8hUwfUd8UB+3/cVUTJrepyMgUIp1RC0zP3d2zVFnGfQPIN09/zVc0GEWMn6nZKm9IrVHfcbguhQFIq1o+rIGuwZbBo4VbqWFWE3MPDFKvMJQ+lvOfDhKYE/nkY81CKrjt3Wd6w== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d539f92e-8fa4-4b89-6238-08dce208b94b X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:47.9434 (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: qGK9wpSw/5Ar55qhaCOmeWSklhqn0zfzxJppHQPn/0AE8W2/pvWyZnBH4hd+OWtGk3HD/Ew/cAle+XfYI1hHKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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 Fix the incorrect placing of brackets to calculate stats. This corrects the "(a | b) << 32" to "a | (b << 32)" Fixes: e62a3f4183f1 ("bus/dpaa: fix statistics reading") Cc: stable@dpdk.org Signed-off-by: Hemant Agrawal --- drivers/bus/dpaa/base/fman/fman_hw.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c index 24a99f7235..97e792806f 100644 --- a/drivers/bus/dpaa/base/fman/fman_hw.c +++ b/drivers/bus/dpaa/base/fman/fman_hw.c @@ -243,10 +243,11 @@ fman_if_stats_get_all(struct fman_if *p, uint64_t *value, int n) int i; uint64_t base_offset = offsetof(struct memac_regs, reoct_l); - for (i = 0; i < n; i++) - value[i] = (((u64)in_be32((char *)regs + base_offset + 8 * i) | - (u64)in_be32((char *)regs + base_offset + - 8 * i + 4)) << 32); + for (i = 0; i < n; i++) { + uint64_t a = in_be32((char *)regs + base_offset + 8 * i); + uint64_t b = in_be32((char *)regs + base_offset + 8 * i + 4); + value[i] = a | b << 32; + } } void From patchwork Tue Oct 1 11:03:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144815 X-Patchwork-Delegate: ferruh.yigit@amd.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 237BF45A79; Tue, 1 Oct 2024 13:04:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 011F04068E; Tue, 1 Oct 2024 13:03:54 +0200 (CEST) Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010060.outbound.protection.outlook.com [52.101.69.60]) by mails.dpdk.org (Postfix) with ESMTP id 0E39640656 for ; Tue, 1 Oct 2024 13:03:51 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=y7y+dr4Td144JddvDOuVZ45vBCbAVrRkXbXwF8uKE9KpLhrk7DFWpZ805jXm+GMfZ4GA0Ab/amo5rrSm4zY5lxA72mgLP3T6+ckhz79xCfsCL772T/+sZryfLGcyR/wIsUIFpzN0wqNHzsYEWG4Zr+rE7s//R21F2MbtYIGZnP710DhARTqrYqfkvGYSk4XO/0pkj+By9iSALSwfsU1/AP1+r6h0pe81yoI+zpGQkiUsE/V3zbb7c49CKhEQNfRw1m0gItfMysfhJiv2ZSOjO43UsM7sLgPxtxrvDz7ibbGHMbmEAAIOPyQFCR9Q2dGf/FDs1yw5TNT6KwNWXMDfmQ== 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=DCkwUhX0Onay0Q4xpiNrYdQS7RUc6RuxFQJUgQV1g7I=; b=hIedKWtP8PTQ2QE0W1MYDH5L3z5gqWus48VPFuXAGLJ2XZftx3Q2obC16ZAEjiPiiB46yJTwijq5LLP/3cOXEMqRWtazBG6vpcy0zcynEYe53kpikLH+CWTE1a4Tqh4W28S2xkzVu+1GjfXdzeMYBeB4fs+lJg/0sYRh4cTLXbz5QZH3SP6/cAWqDWJ6fOtdaRKoeIRgEMWdgHaZrKYKE62/jVSyCf7nGmsmhKC1lDqS73821gOvYUbK/T+Qfmslbgw+MkJ4o6Qsqq7+zTxrjABLj5xgTyI0ZDYcP4USzusIsQdhTmDXtGNLkOx+YdVBTZlmUD1MvgvNV2Mw+CgkuA== 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=DCkwUhX0Onay0Q4xpiNrYdQS7RUc6RuxFQJUgQV1g7I=; b=nbi5vmlSzTugjPNPO+a9GxMHvkHUZ8og6wrYqi0YKYVKAZBbOYnEfFfU40d3hUWf9zgffxG/kiLS5Fs83KZS7V3+17fhWqgkrOOVl5BX21sx/ofCz9ViWLNERbCVMZa1mZ6BVG3ykuwKuhnwAhgWFycMtwwfoBA/NMK1n/XIsJdbZ6FH/ydSRNEqQXO9LS/qaA3zZ2t5N5ycwxiaOr5Yw58QF7V1MFEWvShsbTUL4x/yvY619e3g1ewQNgdFts9tCrQs3ENqB4E/GHEylk468Xfre+GOQoNvfEBVmCH0UGBa1P7Wu+aqqQsAbb9LNnfJqkqs7jXY66wyTO8nfYzeow== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:03:49 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:49 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Gagandeep Singh Subject: [PATCH v5 05/18] bus/dpaa: add port buffer manager stats Date: Tue, 1 Oct 2024 16:33:12 +0530 Message-Id: <20241001110325.4173762-6-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 05667b11-6265-40cc-2b9b-08dce208ba40 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: Z6BRqvBsSbhUGgO4fHdOm5TLL906EEQchqrMRF/57rW4pi4B4R67LKJwVwKRy3e8PZ6ErGqSzSB+kqaSnI2FNwNDx1WNLpsQ44iO2fxWqOdRRW0ePJfguo+TE23NiDnl8Jms0ppiDJ0s9XCWQXlVwayEqUiQZ1IyUELmWbZusQMX3gmwHZVf+Jra6L2NeIXQa9r/QiVVGe0zWWXtG98Eg0K0h6gpb0hcirC7/xiBAotE92NEpwn2GAQ02W8doLE3Xhs8FXtdx8ycYT7qJoI6V8vatCMvtURfjuCFPCVRg8PrMQaMs1p+iHODQKWCE3/07y/zkRJV2c1acJXQpMSMm7v4f9xdlmdXVlAXBJXFtHRsjYxa/2m9mgYnWocwP8hfEVqt03QoTZxhTbOTLpq7kK2ng9E7pNkEvfR+nvojS/w/ZDdQvj0hP9MvvZLkG1TXghuoxxRMlGMagy9xuZBSU4oCo61uOGLVjGUJJsmFl7jss0Rc0D5vBKN62MgKmZSd9FsRS+U/3hoBJ38elfUl8vPVcIcu10c6QDcdJsAkutiNTS7v68hgnqcw+PaIgp9J3YxUg2b2jrU2jJjQveUu+0Q0+q0IwePpHBNlsb+dILkyTXVuBSm2ZiFG2AobRqOTsZhfpv/7F9TTTPPI9ZnpP9018O0Jgeg+CsCUsTvWyXpKu+Eqm3FB9gDVoc4qqiSe7Q+4Go+w72uejv2P4XqpkuxLWammcbeQaNITvwjX6lAHiMiTYAa99DwImFnTQEg1FxJg6CssBMDq3f+gZdX5KeUdnDo5hcT0TfVWseuICzUR8JZuDApp3Crb1wBIjqz5UT8dtnqetnnOdjRm+UeEkt6ly7p8WOO1QrNMaPtfi9oNEeOlpTx0E/gOYxPWJTPv4bK29aHWSaO1M0Xqgakkose8VTd+ISMYCNWndnMEd7noO9jN+UevAYnhKAaGdABIFS3DmUdSF5IfZU2774MbrrqaBdh6w9US1RGYZMepQEa7BtdjvWqPEZRtvF9Lz7+O6IcVf/lTfVzKXjZVqYrKXd79KvfP6zyDnI/Iyy8/XqTUlmTpUHpzw1q5Fv4iaGM+JC4mvzko8/492WkFrRZ0nrTAHxjCIEc2zydjffKbIRmsLIMlruIMJX6Cibqvb4zRGhXJCQvh+tbir7JUvxwNbif5PYhmHs9G3huMLNg4bj8h0lItrLC9bPOIk82Hbt9AqZTBddv6gcYvIv17/f+pvsOVf8qMRgY2ZXKupJFCG8CgDyKlBU8r2de+YZoUTE7l1QTBmSShHHHug/itIhI4lW5IgXBEAyLY5RYkynyM5/DrEs7mVXHTdhDymvdvuNPshgz+eDbKOQ5bsk8U3J1iEA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TWIbZ1QR2/PIWF/pHIds3T5tFjZ0tWY6Amdb2bnEGtz5FP8UeNAkkxuqdCiLeYUnSqW8cgxWiWG88MeTFEqLwi4fjs/RTlr3SctUwdjnuZS5AOCN2fiS/HeufSNUBPmhJQzzxXLzdfvDP3/6b9N0AOfZ3G1j369V7iXm6n4WPjrHYjr4/kkcvtn7bBn2O2S43avigxrjhbBcEhqFNVVdi7kpQ2gI3dSGMf4aTnX6egrDEr0T2XBZcuSIngp9a0beqP99ZVfvji9i8IoDJnWFBrZmpoIQkB5ShP56qHcgYFNmBnthDglLTyHO/gU2Llmh3Z7Q6KLOEpcHeP7Fc/8o0ukdVrwTxk+M7eRWo8GL9+B2lFttLcElP9VSolfoj9djj1Gc39lcL+StNHIfs0C4ykSoVvRx6BF8nku88wiO4I1We/dUupd3/BUkGMu3UfqSDGYqVkpilawCo6JClix3dAm1VXTN1LhEdbDf0gTJA6kGiEh5trcuv0VlpbY5J/5yLIeLkubkVYTFELOyDU8RKvNJ79YRkjS4fq541ahoBt7CT12gmdBaxUs6ykQ+gxuXgl9Pew3R0WfibuZu7dePVb3Qu6s300wH6E24sUJ6W8Mhd7+etjUBsY6RGzVd/k/QLJ97MU9gleEM2fwl/0JU/KeDyxC7NsemVq9CfOvF6NwnMyylrtifyYwuPyTrOtm0kwVK/XSJQG/tTCjOQgycAhazAjBfPKocS2uqJ81ImR8nI4AuIQbKfFf3t3welThllSalwAWRBj3rFlTkv38CJlUaH1ECPwRboY6hlfOOquWVKchz2D4+/JBW3oXP4mIn4IJHC3avi12shFW+9Yg+R4C9iJkALV8VyIpN0Lbh93iUAVBowWccSAbS6kMPpu+XV6RhWQhU6MZmiPtbOR7R4Ds93EKy7m8TBXjQLHHvvbqsYgGVmHfjQ/shPuQtUsk5E9T0FQgTDmjoVpcIRxGToWHNQQ2pwUI9Agj8BQEKFKEKbGo1xzXOiz10SadJCH0GR9L31eeX6ecWCyxx4YlUSSMpmbNTFnp8M1q01D2mO6hjji1+j42lmhzl6//vCaVQ4cjnWmt5WO8gbkqmXRd795BXBbl2tCxQfhDBPISCSZeEliniFSTpC+vix1n1rdrrbftBJg6Kug2mRBG1ka7M5I4fIG6vPA1MC4acPURa5MLXihztZOOKGK2g2tPOyZOgZl4LuiLS/GSho0WCXpUHguPHrc3RvmUO5e+fV6S7BuNMp+KtwkfVFzF4igaWpiYp1cjq7zfPNUbB+1OgGzR3bQPN9CihKdmg8I9j/EJqbUcAz0wCEe5Vw6WstaHKyOd81SgtiS+I661UyBJBUOkBtP1cPk8z1YSYxzsuogOZtfDn933tOGlIFHplKeNhDGKLeHE+ODgIcFCMyhybw12nJ8v6b+leiBkf5GWoHsZL8IGMg+eY2HP/eIz92CZeBtk309lBl1iKHzRJ7kok4lvPFoXQBMPu7NqfhxpH2to0i/RXEZEWjAoZgiy83lzKGMnovooS7iQgaFI6w3mIQuvC1dqpQi9PmFRFMOddOLfzKUJnZvlXu2Qn4weHd5EoehaILo1QHPi3MpB1dMLsQcmXUw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05667b11-6265-40cc-2b9b-08dce208ba40 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:49.6399 (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: 7QckwHVe58q1Vr/7bc91llsaGzAGyKWuJ8k6QQ8hEAMw6oOn6jYrWS1DKi+npVgy9nE5lkrsDtbANPY9mXOozw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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 Add BMI statistics and improving the existing extended statistics Signed-off-by: Hemant Agrawal Signed-off-by: Gagandeep Singh --- drivers/bus/dpaa/base/fman/fman_hw.c | 61 ++++++++++++++++++++++++++++ drivers/bus/dpaa/include/fman.h | 4 +- drivers/bus/dpaa/include/fsl_fman.h | 12 ++++++ drivers/bus/dpaa/version.map | 4 ++ drivers/net/dpaa/dpaa_ethdev.c | 46 ++++++++++++++++++--- drivers/net/dpaa/dpaa_ethdev.h | 12 ++++++ 6 files changed, 132 insertions(+), 7 deletions(-) diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c index 97e792806f..124c69edb4 100644 --- a/drivers/bus/dpaa/base/fman/fman_hw.c +++ b/drivers/bus/dpaa/base/fman/fman_hw.c @@ -267,6 +267,67 @@ fman_if_stats_reset(struct fman_if *p) ; } +void +fman_if_bmi_stats_enable(struct fman_if *p) +{ + struct __fman_if *m = container_of(p, struct __fman_if, __if); + struct rx_bmi_regs *regs = (struct rx_bmi_regs *)m->bmi_map; + uint32_t tmp; + + tmp = in_be32(®s->fmbm_rstc); + + tmp |= FMAN_BMI_COUNTERS_EN; + + out_be32(®s->fmbm_rstc, tmp); +} + +void +fman_if_bmi_stats_disable(struct fman_if *p) +{ + struct __fman_if *m = container_of(p, struct __fman_if, __if); + struct rx_bmi_regs *regs = (struct rx_bmi_regs *)m->bmi_map; + uint32_t tmp; + + tmp = in_be32(®s->fmbm_rstc); + + tmp &= ~FMAN_BMI_COUNTERS_EN; + + out_be32(®s->fmbm_rstc, tmp); +} + +void +fman_if_bmi_stats_get_all(struct fman_if *p, uint64_t *value) +{ + struct __fman_if *m = container_of(p, struct __fman_if, __if); + struct rx_bmi_regs *regs = (struct rx_bmi_regs *)m->bmi_map; + int i = 0; + + value[i++] = (u32)in_be32(®s->fmbm_rfrc); + value[i++] = (u32)in_be32(®s->fmbm_rfbc); + value[i++] = (u32)in_be32(®s->fmbm_rlfc); + value[i++] = (u32)in_be32(®s->fmbm_rffc); + value[i++] = (u32)in_be32(®s->fmbm_rfdc); + value[i++] = (u32)in_be32(®s->fmbm_rfldec); + value[i++] = (u32)in_be32(®s->fmbm_rodc); + value[i++] = (u32)in_be32(®s->fmbm_rbdc); +} + +void +fman_if_bmi_stats_reset(struct fman_if *p) +{ + struct __fman_if *m = container_of(p, struct __fman_if, __if); + struct rx_bmi_regs *regs = (struct rx_bmi_regs *)m->bmi_map; + + out_be32(®s->fmbm_rfrc, 0); + out_be32(®s->fmbm_rfbc, 0); + out_be32(®s->fmbm_rlfc, 0); + out_be32(®s->fmbm_rffc, 0); + out_be32(®s->fmbm_rfdc, 0); + out_be32(®s->fmbm_rfldec, 0); + out_be32(®s->fmbm_rodc, 0); + out_be32(®s->fmbm_rbdc, 0); +} + void fman_if_promiscuous_enable(struct fman_if *p) { diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h index 3a6dd555a7..60681068ea 100644 --- a/drivers/bus/dpaa/include/fman.h +++ b/drivers/bus/dpaa/include/fman.h @@ -56,6 +56,8 @@ #define FMAN_PORT_BMI_FIFO_UNITS 0x100 #define FMAN_PORT_IC_OFFSET_UNITS 0x10 +#define FMAN_BMI_COUNTERS_EN 0x80000000 + #define FMAN_ENABLE_BPOOL_DEPLETION 0xF00000F0 #define HASH_CTRL_MCAST_EN 0x00000100 @@ -260,7 +262,7 @@ struct rx_bmi_regs { /**< Buffer Manager pool Information-*/ uint32_t fmbm_acnt[FMAN_PORT_MAX_EXT_POOLS_NUM]; /**< Allocate Counter-*/ - uint32_t reserved0130[8]; + uint32_t reserved0120[16]; /**< 0x130/0x140 - 0x15F reserved -*/ uint32_t fmbm_rcgm[FMAN_PORT_CG_MAP_NUM]; /**< Congestion Group Map*/ diff --git a/drivers/bus/dpaa/include/fsl_fman.h b/drivers/bus/dpaa/include/fsl_fman.h index 20690f8329..5a9750ad0c 100644 --- a/drivers/bus/dpaa/include/fsl_fman.h +++ b/drivers/bus/dpaa/include/fsl_fman.h @@ -60,6 +60,18 @@ void fman_if_stats_reset(struct fman_if *p); __rte_internal void fman_if_stats_get_all(struct fman_if *p, uint64_t *value, int n); +__rte_internal +void fman_if_bmi_stats_enable(struct fman_if *p); + +__rte_internal +void fman_if_bmi_stats_disable(struct fman_if *p); + +__rte_internal +void fman_if_bmi_stats_get_all(struct fman_if *p, uint64_t *value); + +__rte_internal +void fman_if_bmi_stats_reset(struct fman_if *p); + /* Set ignore pause option for a specific interface */ void fman_if_set_rx_ignore_pause_frames(struct fman_if *p, bool enable); diff --git a/drivers/bus/dpaa/version.map b/drivers/bus/dpaa/version.map index 3f547f75cf..a17d57632e 100644 --- a/drivers/bus/dpaa/version.map +++ b/drivers/bus/dpaa/version.map @@ -24,6 +24,10 @@ INTERNAL { fman_dealloc_bufs_mask_hi; fman_dealloc_bufs_mask_lo; fman_if_add_mac_addr; + fman_if_bmi_stats_enable; + fman_if_bmi_stats_disable; + fman_if_bmi_stats_get_all; + fman_if_bmi_stats_reset; fman_if_clear_mac_addr; fman_if_disable_rx; fman_if_discard_rx_errors; diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 1a2de5240f..90b34e42f2 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -131,6 +131,22 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = { offsetof(struct dpaa_if_stats, tvlan)}, {"rx_undersized", offsetof(struct dpaa_if_stats, tund)}, + {"rx_frame_counter", + offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfrc)}, + {"rx_bad_frames_count", + offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfbc)}, + {"rx_large_frames_count", + offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rlfc)}, + {"rx_filter_frames_count", + offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rffc)}, + {"rx_frame_discrad_count", + offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfdc)}, + {"rx_frame_list_dma_err_count", + offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfldec)}, + {"rx_out_of_buffer_discard ", + offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rodc)}, + {"rx_buf_diallocate", + offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rbdc)}, }; static struct rte_dpaa_driver rte_dpaa_pmd; @@ -430,6 +446,7 @@ static void dpaa_interrupt_handler(void *param) static int dpaa_eth_dev_start(struct rte_eth_dev *dev) { struct dpaa_if *dpaa_intf = dev->data->dev_private; + struct fman_if *fif = dev->process_private; uint16_t i; PMD_INIT_FUNC_TRACE(); @@ -443,7 +460,9 @@ static int dpaa_eth_dev_start(struct rte_eth_dev *dev) else dev->tx_pkt_burst = dpaa_eth_queue_tx; - fman_if_enable_rx(dev->process_private); + fman_if_bmi_stats_enable(fif); + fman_if_bmi_stats_reset(fif); + fman_if_enable_rx(fif); for (i = 0; i < dev->data->nb_rx_queues; i++) dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED; @@ -461,8 +480,10 @@ static int dpaa_eth_dev_stop(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); dev->data->dev_started = 0; - if (!fif->is_shared_mac) + if (!fif->is_shared_mac) { + fman_if_bmi_stats_disable(fif); fman_if_disable_rx(fif); + } dev->tx_pkt_burst = dpaa_eth_tx_drop_all; for (i = 0; i < dev->data->nb_rx_queues; i++) @@ -769,6 +790,7 @@ static int dpaa_eth_stats_reset(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); fman_if_stats_reset(dev->process_private); + fman_if_bmi_stats_reset(dev->process_private); return 0; } @@ -777,8 +799,9 @@ static int dpaa_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, unsigned int n) { - unsigned int i = 0, num = RTE_DIM(dpaa_xstats_strings); + unsigned int i = 0, j, num = RTE_DIM(dpaa_xstats_strings); uint64_t values[sizeof(struct dpaa_if_stats) / 8]; + unsigned int bmi_count = sizeof(struct dpaa_if_rx_bmi_stats) / 4; if (n < num) return num; @@ -789,10 +812,16 @@ dpaa_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats, fman_if_stats_get_all(dev->process_private, values, sizeof(struct dpaa_if_stats) / 8); - for (i = 0; i < num; i++) { + for (i = 0; i < num - (bmi_count - 1); i++) { xstats[i].id = i; xstats[i].value = values[dpaa_xstats_strings[i].offset / 8]; } + fman_if_bmi_stats_get_all(dev->process_private, values); + for (j = 0; i < num; i++, j++) { + xstats[i].id = i; + xstats[i].value = values[j]; + } + return i; } @@ -819,8 +848,9 @@ static int dpaa_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids, uint64_t *values, unsigned int n) { - unsigned int i, stat_cnt = RTE_DIM(dpaa_xstats_strings); + unsigned int i, j, stat_cnt = RTE_DIM(dpaa_xstats_strings); uint64_t values_copy[sizeof(struct dpaa_if_stats) / 8]; + unsigned int bmi_count = sizeof(struct dpaa_if_rx_bmi_stats) / 4; if (!ids) { if (n < stat_cnt) @@ -832,10 +862,14 @@ dpaa_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids, fman_if_stats_get_all(dev->process_private, values_copy, sizeof(struct dpaa_if_stats) / 8); - for (i = 0; i < stat_cnt; i++) + for (i = 0; i < stat_cnt - (bmi_count - 1); i++) values[i] = values_copy[dpaa_xstats_strings[i].offset / 8]; + fman_if_bmi_stats_get_all(dev->process_private, values); + for (j = 0; i < stat_cnt; i++, j++) + values[i] = values_copy[j]; + return stat_cnt; } diff --git a/drivers/net/dpaa/dpaa_ethdev.h b/drivers/net/dpaa/dpaa_ethdev.h index b6c61b8b6b..261a5a3ca7 100644 --- a/drivers/net/dpaa/dpaa_ethdev.h +++ b/drivers/net/dpaa/dpaa_ethdev.h @@ -212,6 +212,18 @@ dpaa_rx_cb_atomic(void *event, const struct qm_dqrr_entry *dqrr, void **bufs); +struct dpaa_if_rx_bmi_stats { + uint32_t fmbm_rstc; /**< Rx Statistics Counters*/ + uint32_t fmbm_rfrc; /**< Rx Frame Counter*/ + uint32_t fmbm_rfbc; /**< Rx Bad Frames Counter*/ + uint32_t fmbm_rlfc; /**< Rx Large Frames Counter*/ + uint32_t fmbm_rffc; /**< Rx Filter Frames Counter*/ + uint32_t fmbm_rfdc; /**< Rx Frame Discard Counter*/ + uint32_t fmbm_rfldec; /**< Rx Frames List DMA Error Counter*/ + uint32_t fmbm_rodc; /**< Rx Out of Buffers Discard nntr*/ + uint32_t fmbm_rbdc; /**< Rx Buffers Deallocate Counter*/ +}; + /* PMD related logs */ extern int dpaa_logtype_pmd; #define RTE_LOGTYPE_DPAA_PMD dpaa_logtype_pmd From patchwork Tue Oct 1 11:03:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144816 X-Patchwork-Delegate: ferruh.yigit@amd.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 DC46445A79; Tue, 1 Oct 2024 13:04:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F30A1406B8; Tue, 1 Oct 2024 13:03:57 +0200 (CEST) Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010071.outbound.protection.outlook.com [52.101.69.71]) by mails.dpdk.org (Postfix) with ESMTP id 10E0F406B7 for ; Tue, 1 Oct 2024 13:03:56 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vWm1+fOp2Z9qCOccUZkz8jXZtCtxBUxzLqv9+QWUf9wnX9DwEPx1JtKcCsJg4BULf/eQbLYvqattNj1Z8dowtYCTiUcgyP8MpDb6SzEEFT5HGE6Obee5PvY2FDdIoqDHV58eXdg0TF6hyiSI8tN/wmgunGjPEuGCNbt9nH2BwECMZJAGYN/u2YATUbG/o/RHJaezpi8ykWwplN5DIJMknSi6jWkQ4Oa2Fr8YZr88LzVgW/ywcG2oc3dicj2Xr6JE/cVqjWNuf+6+YlM4kTiTbyumG9TGG8rMhdBobYGkbLBEYK1F3SAKqV/H7i87dfwXMVK/u5ObywDiBob0lebO/A== 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=FB0VLnXzze0ipCvIEtHrW8rtXJOggU+Dm65euZu/sPg=; b=R0FBE2jJNMRKkb+f2AgVeYx7Am/8bSHQL/RgJQanaEhMjOhufOU46L4BdCw50y7k5GJlpObq76PadfH2YaRUIP2A0hrT89INHeUyh4co/oepHH9Rv+WqhRk1qA4v3+EJjDlMfoqpaEzob80GEbdIFenfSXfitAX1x6okVMrzFYfQFe6q5yRXTR6QhHx1WbjK2p0hwkgNea3fkcfoo4kRgmYMqgEeLVbjbz+kuoXBmOLj9JYgX9qDgADUYUGqljxCzKdwO7yAGQiBBdNI+Dihr1lulQ3H0NGSlEa7SRpHi5AWu7ny101Ywy5/bOa/SLwrJbWYAgmr/YdUMSvnCuZayA== 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=FB0VLnXzze0ipCvIEtHrW8rtXJOggU+Dm65euZu/sPg=; b=LLtG2L5Rf0t4YjZcdHDpOdnwEri/pltUzYvHiV8u94fvTO4hIl4gXA3jnMy9jyeFOmFurPb2+49CM4vW+Pq7WPopbORso8XPnTU3q4OQsO0az7OejlAaMXh6Eqrq8hpsDXtSRhLWpF4zgCxzfiC3Qqu+R8ScnqNUaB4a6cOSbRY474SiS7DZlNm3slSfzs/f4WTtjVtxZN/9m5avqyiBzIYAQt5cUW91npH97COdiVlAF/aqkh2g5I8kXQl3AYul3TAFjXsl2s/iOTQpVOv4PLObc4IFA2kFclHVeb7vjNP4DOFpcv13Fi/3pcSpSyGaIzx9rNhUZ/8EKFEEWR+sdw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:03:51 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:51 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Vanshika Shukla Subject: [PATCH v5 06/18] net/dpaa: support Tx confirmation to enable PTP Date: Tue, 1 Oct 2024 16:33:13 +0530 Message-Id: <20241001110325.4173762-7-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 763feef2-5803-428f-5b14-08dce208bb3c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: LH/YNf1G0oGL5dMSfqF0dcx3JCgPGmN0VTJ9U7mlaZC3vKdqOxxvliZkC94Oj6oxt+AruR8BMk76oETB03/rDJm00G8+oPcz7bGhLXb4CPRbvnH/L8xDqJ9RZpHJ0TjmzQYP9vQLBb3SrEuX0BkmkhxOjJInhnPtK/L3DQu6BE4AcMA2QXNIwuFx+uePkMV9D7PyXEowLfhMhIRUobfCQVK/1e3tIxOBS+BEuQW11bEMqPtyhHp9a1mVcrcX+tJE0ljQWu2RL4D0mRXgYGCKeT+UUTsqbZiSNwjtgzlROlMkl2C7ea5nkQ/kSmMLdPOQQL7iud51u9JCl7jSetL5vV/cXeW8HPNzQT06UG43IYumgM3f1RS0Ge6ie2YrXy/eIZtYgldlVFvcNd1OcVHgIqsu244ih7e8yh7MOecH4Q9v4G2jIuWDUWJygT9pjv/zaYnCyU2HI7YORWxBnq9ae+mw3CGxhv6C7l1lsyQ9YPjtQT4BewhkNG8N/+CeBcnmUeBw1TPKwgh6yWKs9Y+DXGd+O9cMItSZdWCpB/cN1R/qxANWXQl+RBww8VnMdA9GEPKlDktWaZ9CnNOPMUqCcdP3kmeqzPPQXNL6rEnyaiu4UE8q2eV2p2v+eDsfgJ8tkv7v01GlN44t01w+TdZXMNNK1sdTg+EgUiC4/96PUf3y+p7AwgXgKDAuwKRYcudHJRS95kH+Ov3aR677zRrjugPJiX3SWmFTdO4T1Iq3MW+auDKR6KXDKls7TqK07XgSz3njLaNniXzuSJ87zFBZuutTkTC3MDeZTHLhdId9McKO7XWxhfv/hQaY4TiJUaSEViMzo83JZMCDO/Zwe1YPuMDh0zJtpDkR7MxG79zx8jSoyJKHccprZYYHWVQDLoa0dGwjiXAZbA3fYZvAGdDpXy0f5yS23Oac/Lw4fHTTgv6F9LSs/m8iFXv5iJsUvmoG+zw9rtZCmpvEdP2nWRMhgxVD9O1Ru/luwsjfW8AirHTH9Srp0rmogdLnlpi1iEWunKZjhYsqe90aXH9aoB9mskHIGC7vKT+vMSjScypNI5s7NwvBxYvvjPsKGsMiJ+m164SclZlWasv3FKQ8UTeAlPjv3yjciRl72sUlrsK0ZM0pe6iCHOJiCYAFQ1y4GDi71+sHYcfm2tmyz5Dp5uFK5d42tGbFV9O91nF7vBhel8PwxwkGcnKcD38Zm/eNcPHKBWwmBopyvd+3xCOHqgzqHxZCFeNjTDxCj7+ee+QP8+woL60ruRDRQb9+EL9EJpsX8dQSLLscQK72zp8NJ3VTpfVP+lCwcBUfbLDp7RiShS/uMSXPM3C8KRwSvrw9QhQiQxhknE+XuXG6tijjNfA9AQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: C8mxqCLvtj7AIsto55J1TVXctQPdsRKv41TqCar9M1hUniQ/rAwOBl2+DEFskd+VmWBk3Mu3yMOxSDtPShBVrSqkoDXzTmbIUwnqcMsGb70vCfrqmDNYmV7OTRccd6PTbmtu/EaR6Bg3BRe4kWDOCTA8cg61kCm2fcKVheCLY8rVvt66jAGFZXf1Di6Wzv02jGUPoKj+y3Se04/v8MtMNc4QddeEUPToq2rnJQUHunMT0MeYMxv3Mks7gUuFXOgoW5/I6YIlaYx7brpCqrWvS4x0PJC6Dc+VBicInC3EgR41zWQ7z5pfkGP82c2aG5eI/nv5+1aTjL4RJPI0pPVfj8hqOTk945AlomUyHXVVzOMe94QFTgbYWIS5hN0y8D4fTgLwzTyGRjk5A6SKbRWBYN9vxK+Il+ROJ2Wx6bQySDyE5CeMGdTQOT3D7gFmjonIIRqzPvVzAEgQQDFeh9jMV0eWVpBhdahu+08Z9bm73L0KDuOGaNlCOZD3dImg/EAVG2hHwYEqtCsfpt7bp0w2yeeb+za4MYIbaKdhwV2GOY9d4qtp8wyrZUkRkIPilaYBDwy85aY3+9i7VHzIlRSTi5FlCC5k5CrtiC6mt1Qp+2jiTp5C5PWj4oCR5o/SiOvfzQS+8B1RKVNdIr/qHCN2erylj9ejINAMf9k0noZBdRJuzyChsa5tOOuCm02Ta7KIfRnN9fZEnJ66ihqAsRMDTI7tAb2WL+zljMkCIRr/SoFMfeBCZCb7mCH3twwOpH8uF1ut8Ba8CDbHaGzgKWoHmzhksQeASc41IxGTzATS90arcUyvBXXzvMc8yrMRqO+Lbx3l2pOj/8TfrEjZddOM6fpVs/TKmxbNk3XQU6D4jY/nRa1cPlfw3AEyDNr00AsnprpvOksHVp5ATDWKF4Bv6+JCwoiynyRbCcgh62uUOl3713fsfRH7B00sZR7Ru7F87vAp1cxj22TfdhISSkoiq96IhFbZtZjrkDZ3564Q63t9gG6D0pGqvxIW5A70WW8Kf9eSaoK+iML43yV6TVs0eBQLLL86nK3njfij89HeTbtdkVQSex0+DunjVZ6ZpivbGsmzmjH2c5EFuQH5YSIBIVI80HI5tQa1mOEumZUtnAPoMOqCE5JNWxt1tsIVkT9oDeoAz2aFgcTcDIW5k6ChYzQtl9nch5YuE8wqTIljYHQ2iEcvkS4d0YBoqJN/x0/YGEDW+A45qX9GwYC90IGEVQC0YfUXDNQ4I3+oKpE6PUd33FIK3Etb+TVZAgoJdTYvNvK5U9uafQMaYAG19O6U0NPNyVy7aiuzJbzDaW2Ae/0BzPGIp7/RxBpshlW03HxpnjMzIV1jFwxG4lKNFsDnQAVqpeskqBC5Kr6OJ6snkLeda6Sa3sxiLjhHvmMPQ8umfSnwwbY5bBoDQ5l8jPdDhjA6Aee2pbT9tpU8k5x+SzxNw0DleeVBSQlicExALIy22/V3Ng+zwQ4PleYVK8dqqXIPg4tUNe/V0ITtUeVl4Kv4sjNKh6nO+bGNNS+Pk/YU4H0/zZvDGD5GEW+NiicLZ50amkZkVpT7ZInASmEs+ych46QZARtxUJ2TEIUmTInFoHdeUIJijzvDr242ZINxBg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 763feef2-5803-428f-5b14-08dce208bb3c X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:51.2414 (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: w4KTnbSy+w7rqqyQmWoUMHWx5sMIAdbihStTiiwM7owD6x6FKIPeT1u1Dv5/ZOjDq1Bl0GVfQkQL+GS18Wapgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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: Vanshika Shukla TX confirmation provides dedicated confirmation queues for transmitted packets. These queues are used by software to get the status and release transmitted packets buffers. This patch also changes the IEEE1588 support as devargs Signed-off-by: Vanshika Shukla Acked-by: Hemant Agrawal --- doc/guides/nics/dpaa.rst | 3 + drivers/net/dpaa/dpaa_ethdev.c | 124 ++++++++++++++++++++++++++------- drivers/net/dpaa/dpaa_ethdev.h | 4 +- drivers/net/dpaa/dpaa_rxtx.c | 49 +++++++++++++ drivers/net/dpaa/dpaa_rxtx.h | 2 + 5 files changed, 154 insertions(+), 28 deletions(-) diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst index e8402dff52..acf4daab02 100644 --- a/doc/guides/nics/dpaa.rst +++ b/doc/guides/nics/dpaa.rst @@ -264,6 +264,9 @@ for details. Done testpmd> +* Use dev arg option ``drv_ieee1588=1`` to enable ieee 1588 support at + driver level. e.g. ``dpaa:fm1-mac3,drv_ieee1588=1`` + FMAN Config ----------- diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 90b34e42f2..bba305cfb1 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * * Copyright 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2017-2020 NXP + * Copyright 2017-2020,2022-2024 NXP * */ /* System headers */ @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -50,6 +51,7 @@ #include #include +#define DRIVER_IEEE1588 "drv_ieee1588" #define CHECK_INTERVAL 100 /* 100ms */ #define MAX_REPEAT_TIME 90 /* 9s (90 * 100ms) in total */ @@ -83,6 +85,7 @@ static uint64_t dev_tx_offloads_nodis = static int is_global_init; static int fmc_q = 1; /* Indicates the use of static fmc for distribution */ static int default_q; /* use default queue - FMC is not executed*/ +int dpaa_ieee_1588; /* use to indicate if IEEE 1588 is enabled for the driver */ /* At present we only allow up to 4 push mode queues as default - as each of * this queue need dedicated portal and we are short of portals. */ @@ -1826,9 +1829,15 @@ static int dpaa_tx_queue_init(struct qman_fq *fq, opts.fqd.dest.wq = DPAA_IF_TX_PRIORITY; opts.fqd.fq_ctrl = QM_FQCTRL_PREFERINCACHE; opts.fqd.context_b = 0; - /* no tx-confirmation */ - opts.fqd.context_a.hi = 0x80000000 | fman_dealloc_bufs_mask_hi; - opts.fqd.context_a.lo = 0 | fman_dealloc_bufs_mask_lo; + if (dpaa_ieee_1588) { + opts.fqd.context_a.lo = 0; + opts.fqd.context_a.hi = fman_dealloc_bufs_mask_hi; + } else { + /* no tx-confirmation */ + opts.fqd.context_a.lo = fman_dealloc_bufs_mask_lo; + opts.fqd.context_a.hi = 0x80000000 | fman_dealloc_bufs_mask_hi; + } + if (fman_ip_rev >= FMAN_V3) { /* Set B0V bit in contextA to set ASPID to 0 */ opts.fqd.context_a.hi |= 0x04000000; @@ -1861,9 +1870,10 @@ static int dpaa_tx_queue_init(struct qman_fq *fq, return ret; } -#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER -/* Initialise a DEBUG FQ ([rt]x_error, rx_default). */ -static int dpaa_debug_queue_init(struct qman_fq *fq, uint32_t fqid) +/* Initialise a DEBUG FQ ([rt]x_error, rx_default) and DPAA TX CONFIRM queue + * to support PTP + */ +static int dpaa_def_queue_init(struct qman_fq *fq, uint32_t fqid) { struct qm_mcc_initfq opts = {0}; int ret; @@ -1872,15 +1882,15 @@ static int dpaa_debug_queue_init(struct qman_fq *fq, uint32_t fqid) ret = qman_reserve_fqid(fqid); if (ret) { - DPAA_PMD_ERR("Reserve debug fqid %d failed with ret: %d", + DPAA_PMD_ERR("Reserve fqid %d failed with ret: %d", fqid, ret); return -EINVAL; } /* "map" this Rx FQ to one of the interfaces Tx FQID */ - DPAA_PMD_DEBUG("Creating debug fq %p, fqid %d", fq, fqid); + DPAA_PMD_DEBUG("Creating fq %p, fqid %d", fq, fqid); ret = qman_create_fq(fqid, QMAN_FQ_FLAG_NO_ENQUEUE, fq); if (ret) { - DPAA_PMD_ERR("create debug fqid %d failed with ret: %d", + DPAA_PMD_ERR("create fqid %d failed with ret: %d", fqid, ret); return ret; } @@ -1888,11 +1898,10 @@ static int dpaa_debug_queue_init(struct qman_fq *fq, uint32_t fqid) opts.fqd.dest.wq = DPAA_IF_DEBUG_PRIORITY; ret = qman_init_fq(fq, 0, &opts); if (ret) - DPAA_PMD_ERR("init debug fqid %d failed with ret: %d", + DPAA_PMD_ERR("init fqid %d failed with ret: %d", fqid, ret); return ret; } -#endif /* Initialise a network interface */ static int @@ -1927,6 +1936,43 @@ dpaa_dev_init_secondary(struct rte_eth_dev *eth_dev) return 0; } +static int +check_devargs_handler(__rte_unused const char *key, const char *value, + __rte_unused void *opaque) +{ + if (strcmp(value, "1")) + return -1; + + return 0; +} + +static int +dpaa_get_devargs(struct rte_devargs *devargs, const char *key) +{ + struct rte_kvargs *kvlist; + + if (!devargs) + return 0; + + kvlist = rte_kvargs_parse(devargs->args, NULL); + if (!kvlist) + return 0; + + if (!rte_kvargs_count(kvlist, key)) { + rte_kvargs_free(kvlist); + return 0; + } + + if (rte_kvargs_process(kvlist, key, + check_devargs_handler, NULL) < 0) { + rte_kvargs_free(kvlist); + return 0; + } + rte_kvargs_free(kvlist); + + return 1; +} + /* Initialise a network interface */ static int dpaa_dev_init(struct rte_eth_dev *eth_dev) @@ -1944,6 +1990,7 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) uint32_t dev_rx_fqids[DPAA_MAX_NUM_PCD_QUEUES]; int8_t dev_vspids[DPAA_MAX_NUM_PCD_QUEUES]; int8_t vsp_id = -1; + struct rte_device *dev = eth_dev->device; PMD_INIT_FUNC_TRACE(); @@ -1960,6 +2007,9 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) dpaa_intf->ifid = dev_id; dpaa_intf->cfg = cfg; + if (dpaa_get_devargs(dev->devargs, DRIVER_IEEE1588)) + dpaa_ieee_1588 = 1; + memset((char *)dev_rx_fqids, 0, sizeof(uint32_t) * DPAA_MAX_NUM_PCD_QUEUES); @@ -2079,6 +2129,14 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) goto free_rx; } + dpaa_intf->tx_conf_queues = rte_zmalloc(NULL, sizeof(struct qman_fq) * + MAX_DPAA_CORES, MAX_CACHELINE); + if (!dpaa_intf->tx_conf_queues) { + DPAA_PMD_ERR("Failed to alloc mem for TX conf queues\n"); + ret = -ENOMEM; + goto free_rx; + } + /* If congestion control is enabled globally*/ if (td_tx_threshold) { dpaa_intf->cgr_tx = rte_zmalloc(NULL, @@ -2115,22 +2173,32 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) } dpaa_intf->nb_tx_queues = MAX_DPAA_CORES; -#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER - ret = dpaa_debug_queue_init(&dpaa_intf->debug_queues - [DPAA_DEBUG_FQ_RX_ERROR], fman_intf->fqid_rx_err); - if (ret) { - DPAA_PMD_ERR("DPAA RX ERROR queue init failed!"); - goto free_tx; - } - dpaa_intf->debug_queues[DPAA_DEBUG_FQ_RX_ERROR].dpaa_intf = dpaa_intf; - ret = dpaa_debug_queue_init(&dpaa_intf->debug_queues - [DPAA_DEBUG_FQ_TX_ERROR], fman_intf->fqid_tx_err); - if (ret) { - DPAA_PMD_ERR("DPAA TX ERROR queue init failed!"); - goto free_tx; - } - dpaa_intf->debug_queues[DPAA_DEBUG_FQ_TX_ERROR].dpaa_intf = dpaa_intf; +#if !defined(RTE_LIBRTE_DPAA_DEBUG_DRIVER) + if (dpaa_ieee_1588) #endif + { + ret = dpaa_def_queue_init(&dpaa_intf->debug_queues + [DPAA_DEBUG_FQ_RX_ERROR], fman_intf->fqid_rx_err); + if (ret) { + DPAA_PMD_ERR("DPAA RX ERROR queue init failed!"); + goto free_tx; + } + dpaa_intf->debug_queues[DPAA_DEBUG_FQ_RX_ERROR].dpaa_intf = dpaa_intf; + ret = dpaa_def_queue_init(&dpaa_intf->debug_queues + [DPAA_DEBUG_FQ_TX_ERROR], fman_intf->fqid_tx_err); + if (ret) { + DPAA_PMD_ERR("DPAA TX ERROR queue init failed!"); + goto free_tx; + } + dpaa_intf->debug_queues[DPAA_DEBUG_FQ_TX_ERROR].dpaa_intf = dpaa_intf; + ret = dpaa_def_queue_init(dpaa_intf->tx_conf_queues, + fman_intf->fqid_tx_confirm); + if (ret) { + DPAA_PMD_ERR("DPAA TX CONFIRM queue init failed!"); + goto free_tx; + } + dpaa_intf->tx_conf_queues->dpaa_intf = dpaa_intf; + } DPAA_PMD_DEBUG("All frame queues created"); @@ -2388,4 +2456,6 @@ static struct rte_dpaa_driver rte_dpaa_pmd = { }; RTE_PMD_REGISTER_DPAA(net_dpaa, rte_dpaa_pmd); +RTE_PMD_REGISTER_PARAM_STRING(net_dpaa, + DRIVER_IEEE1588 "="); RTE_LOG_REGISTER_DEFAULT(dpaa_logtype_pmd, NOTICE); diff --git a/drivers/net/dpaa/dpaa_ethdev.h b/drivers/net/dpaa/dpaa_ethdev.h index 261a5a3ca7..b427b29cb6 100644 --- a/drivers/net/dpaa/dpaa_ethdev.h +++ b/drivers/net/dpaa/dpaa_ethdev.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 2014-2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2017-2019 NXP + * Copyright 2017-2024 NXP * */ #ifndef __DPAA_ETHDEV_H__ @@ -112,6 +112,7 @@ #define FMC_FILE "/tmp/fmc.bin" extern struct rte_mempool *dpaa_tx_sg_pool; +extern int dpaa_ieee_1588; /* structure to free external and indirect * buffers. @@ -131,6 +132,7 @@ struct dpaa_if { struct qman_fq *rx_queues; struct qman_cgr *cgr_rx; struct qman_fq *tx_queues; + struct qman_fq *tx_conf_queues; struct qman_cgr *cgr_tx; struct qman_fq debug_queues[2]; uint16_t nb_rx_queues; diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index c2579d65ee..8593e20200 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -1082,6 +1082,9 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) uint32_t seqn, index, flags[DPAA_TX_BURST_SIZE] = {0}; struct dpaa_sw_buf_free buf_to_free[DPAA_MAX_SGS * DPAA_MAX_DEQUEUE_NUM_FRAMES]; uint32_t free_count = 0; + struct qman_fq *fq = q; + struct dpaa_if *dpaa_intf = fq->dpaa_intf; + struct qman_fq *fq_txconf = dpaa_intf->tx_conf_queues; if (unlikely(!DPAA_PER_LCORE_PORTAL)) { ret = rte_dpaa_portal_init((void *)0); @@ -1162,6 +1165,10 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) mbuf = temp_mbuf; realloc_mbuf = 0; } + + if (dpaa_ieee_1588) + fd_arr[loop].cmd |= DPAA_FD_CMD_FCO | qman_fq_fqid(fq_txconf); + indirect_buf: state = tx_on_dpaa_pool(mbuf, bp_info, &fd_arr[loop], @@ -1190,6 +1197,9 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) sent += frames_to_send; } + if (dpaa_ieee_1588) + dpaa_eth_tx_conf(fq_txconf); + DPAA_DP_LOG(DEBUG, "Transmitted %d buffers on queue: %p", sent, q); for (loop = 0; loop < free_count; loop++) { @@ -1200,6 +1210,45 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) return sent; } +void +dpaa_eth_tx_conf(void *q) +{ + struct qman_fq *fq = q; + struct qm_dqrr_entry *dq; + int num_tx_conf, ret, dq_num; + uint32_t vdqcr_flags = 0; + + if (unlikely(rte_dpaa_bpid_info == NULL && + rte_eal_process_type() == RTE_PROC_SECONDARY)) + rte_dpaa_bpid_info = fq->bp_array; + + if (unlikely(!DPAA_PER_LCORE_PORTAL)) { + ret = rte_dpaa_portal_init((void *)0); + if (ret) { + DPAA_PMD_ERR("Failure in affining portal"); + return; + } + } + + num_tx_conf = DPAA_MAX_DEQUEUE_NUM_FRAMES - 2; + + do { + dq_num = 0; + ret = qman_set_vdq(fq, num_tx_conf, vdqcr_flags); + if (ret) + return; + do { + dq = qman_dequeue(fq); + if (!dq) + continue; + dq_num++; + dpaa_display_frame_info(&dq->fd, fq->fqid, true); + qman_dqrr_consume(fq, dq); + dpaa_free_mbuf(&dq->fd); + } while (fq->flags & QMAN_FQ_STATE_VDQCR); + } while (dq_num == num_tx_conf); +} + uint16_t dpaa_eth_queue_tx_slow(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) { diff --git a/drivers/net/dpaa/dpaa_rxtx.h b/drivers/net/dpaa/dpaa_rxtx.h index b2d7c0f2a3..042602e087 100644 --- a/drivers/net/dpaa/dpaa_rxtx.h +++ b/drivers/net/dpaa/dpaa_rxtx.h @@ -281,6 +281,8 @@ uint16_t dpaa_eth_queue_tx_slow(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs); uint16_t dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs); +void dpaa_eth_tx_conf(void *q); + uint16_t dpaa_eth_tx_drop_all(void *q __rte_unused, struct rte_mbuf **bufs __rte_unused, uint16_t nb_bufs __rte_unused); From patchwork Tue Oct 1 11:03:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144817 X-Patchwork-Delegate: ferruh.yigit@amd.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 0A48745A79; Tue, 1 Oct 2024 13:04:46 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 42B1D406FF; Tue, 1 Oct 2024 13:03:59 +0200 (CEST) Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11011069.outbound.protection.outlook.com [52.101.65.69]) by mails.dpdk.org (Postfix) with ESMTP id 94CD2406B7 for ; Tue, 1 Oct 2024 13:03:57 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B+4MO4mzjBgkKdu3tG4/WhMBDDrasyPDQPWRUus7FwWjatJsDJG9pFoMDu+QWzXcGDJ54y9uLsvUleX28lGpJUuNmNFzrTb1PJdztpqD+6bvenmxNLS4JLKPat0kT1q6jxGOs3VFjTeuBuDswpaaAf6HRSjBQoKDDzumby9zqF93UTetfrvXDaaxzhyBsGvg+yi9V77/OMaSXGKNu1H5SEvBo6IO7DoV5OwNhZuWDhogx9Nx4eQaxKRen+h1/t2s8hVMk6XQOK5cFaSO2sq6P38e0bjvfKjTGw/yxub/jbEvzYCLfSZS1f9974g4IjE6yOzwEDSCtLYqR8s2F/zpzw== 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=SlQLyZcpxbmi7PhLTp9uOlXZwdXEk3VKjT/ip3yqASY=; b=PA9dYw4mopEUxLKWcpwCNaqBFPwSfDZcgHEUxbDvVkG6lo0oSNn1OvxyaCHtFwWkyOXFxq8sawZtb18i9/l51U8ZTtWV/Je67weBvDvfweSNJnpQPhhUc+ntdrMCp02yEpZdeEsTIufqXsYxajA8i9E798wVdGmKTVzfXuJV91YVlWuj4YVe1m/ypEhk8iCEBDhky2/FDlfNHog4k4LnoYq8XhnSUeGD+K8olbZh3jC7d6/0kU1R7zhlCle2LZ05TmaJ1IztG/tJNmvFmU12RnO94CmCbe86v2ZpB9CFWZJH92w/2Blq+QKQrrnSxS1uAos0avPrpMTaEeQEhdPHFA== 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=SlQLyZcpxbmi7PhLTp9uOlXZwdXEk3VKjT/ip3yqASY=; b=eoR9ywZanwXB5SQ5OI6vKy6HiLvqemJKixndDNIkM1Q508xA1scEh2qvhuF+5AUPnD5pscWo4JILSXY/3Yy9x0cl2gIoP+61wYlYd788VLPkY6KfwlCRm3QbQvkcDOUnzs3kIJ6XrBZvVjLwZId2ILave+iwCkj2FB5dLDOR3NEW0gP6m95zsOGnIHSKdnfgOiEArZqq0RU4X0zSraDBYK4Q2bpv6TnfmEZNupnui7JEJYZ1zgLxK5nvRxhsaLGJc0+Xi8/NI3+1am7OqCz2TQF38Q1AbyMbj8UF+Et04Ns8157lzEQ5SdRQ8VpF/M85pz3aSsaasACVw/orsbE2mg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:03:52 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:52 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Vanshika Shukla Subject: [PATCH v5 07/18] net/dpaa: add support to separate Tx conf queues Date: Tue, 1 Oct 2024 16:33:14 +0530 Message-Id: <20241001110325.4173762-8-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: ef83b4ff-f1ba-44e5-3577-08dce208bc33 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: PwlRq2x/EX+0N2G0L7KvUih5SYKoTSmsBB0YV/6Ka0qKhqdjMNYMq4NkbFpuaJd+jFBqjiuHketSa0xS00ZBEaNzA9zbuKaBFHS3X39eNf81pZLD6F1R5ywJ08rhPn8FRroikEw5XBq099mihok93LVjRqU7OX8uK6LaxIc6seGhGByiB6a9GQ2pr3x68ihRPuTAxZJCsbJlVAkm3ohz0xqzBdJ4Gxe8EPyCA23RHxWslJ9HvUYGzANkbMe9u9yZQHGLU1E9K+Cd0Z0vN3Ui0y77p1A8PBNzgw4symeuALreO27gt1iXDDGCV4sN9W+4vpUvpvZ/kvU5ayRHUZ4KSrxGoE1OK4wJ8tYh6b/iZIiy7ozmva4xBhVodpx/XNyUjnGtyTdytVNnSN+dpG2U2z4+fluO90ajL16+JUnAwqe8oA+vigslgRR5/Jfb9HKlvGv13hnXzMIY56F8VDAWeINp/WrnfjHeRi7dU6Wh3l3X4hdPxk75o/cf65NOifmEK1xT97YG5CYNnz2YKvkMAGDgEkxY1oTESUiK8U1VwmkC2xX4//tLC3hMlgobCeBa4R8rh4bLXb3yqrUTOU10DUy9/56g9tdf0SfHSXTtPknt1KfVcg4dZmTJJJv3vrrJ9c58wnLw4RtdyxGFRq0TMpHCyYoP9UkfVxgpIMiGtACYdfurCJH74fvyXW5F42QPaAdtsYzvQ7EDYK5q/ahX0+28ehyrJYl+NMiwgQ1zUoaZ1byReR3wOKFCeTDBKXM1QrUjK/g6tQF0sVl/IPurciAfrTZZKI73DHldrYc2wnKD11Vke1Ap8CtDwJ6L6QhXYXuhUEaMWMRk7rP+sffG/n0fnaJKhwiLjlyMfBNHd3PdlSrP8m4w6lPwM1Tjif6Rb5ezdoq3ihQgeybrN2YqYq1XqqP3fhjFH0o4i7ucsIzSGAb9UYGKu41Qy1kpjaCm3MvaiuM/gLBRnAFs4eTa52UjmAduKE+GmqLHTXG5695NlRBISELnCPB88huaFYOMr08m6jwiYOSz88xxX1MNwCTY0XBOvFNIUdaANutHiNFJyZrlBb5auxchHUsZeb9+Rb3TEN4Cpwd0euwx5nrnv98igjQ5kNI8iYodNP20vzXl/uEoZUiYgMuvNEOWzgm1zTT32WkngYwOuDRVg7P1grrfhyNRbpP5HL/cSrpc1scjUiJKBwP1XxZmCfTVcBlrvq/t1Tf1ZIxsRyW11hlMNeSsfaLJs5z5UUqZu/NMQcF4bS37VYTfnYFaa6yZ6sdXwKUIB/7YC+gEMv9xaCfFahooMzdo+eEA6jMblQMeZtLt1AXr+Ex5jdsk7hCZUzXqw5UfbBujtAz00fvjj91jsQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vHQDZg9EGB5IXybQ15fn9GuJ9poRs22r/mAyYQkDu0qG+IHEiPAii2W28Oac9qlmyIlPHwQPsR08WjcH+fEeNOW1ivayQkPQ3XV3Ojz5lF+KKkIK2wLAmEe9mc2ccA8yW3fxNVWWPkGCGmpkqopoq2I+2vKqq9fL+86LI6cC0df2TC6DzXsjGarPIQhSDuajlKJaQaiJlRPlS3s3sETYY36JaXNkLAKsjEec5h11zCXvXavczZCof0Pvy9gp3KOgJYJgaCy1M7WPu6ayrXho90kBZQ4YJ40KRdUru0WJ76+XNC6AeB7Pp2CwSBSnGyWZwmEn6Nun8e0X4H3FGeGcX7Gb3QXFCVIP4yrschx+58QAE+9mnCDKVu7BFXhFjNA8bwQ47F4gkE3DIzl0JiutYWs+4fpnxlu8Rkm3v74RSze0+5nRKWsPXZbJyMVVnAjYf1eWdu4lIz9493hw1T7W9Q4q+dbQZJPj4ecvzuluUrCVVNO91yXGMGLKJJej/+nUnClJm2mwbz3VOKMe+i5zFumDirZNdCAj4LdXq9oMPQvv1RBtdF743iB4eOS2JeOEMvhCXS0vOWc1n3DNfn/5/En7Isf5Giuo6we+Nqy7i+Yctqgc6wO0bnexo8Ht7XLNVe/ITBrTAPAuKiNzXqtRAqHbWDhQ/i/Zd+jJ6+Bhk/xItExuGWrEA40JUJn36N36qPLCKutjdyQ2dzAA1jb1eHO3xOYB7mbMD6MQFywh8MBnlSjQ4MKLFTUqfzCK4MiY9kfRClRopF4th9FW4ql92rjkut22lExPxLL+13yyLR6ffVvTwCSjcW5uUvrgEGLrWcPGV0PHHm2bFOEGDKysNPFg4vRxmFf8vLYzYN13wOrLEaTDKkHIaMJiKJOsCU8c0O8zk7owcynWcNArH2B1mmnI77VrQlj/kFNWQDW00sPltXZiZrV1eArmJrSFM8GYHqteEAWtpXtAKticTsiNfPiOKylDeRJT9bd4vyF/d9bOm+2u6HdOMDEcdQhzP98z37LoC/j+9GnF4XpC/OzQDBnJctWetrxvLciu+bPHYm5C9TAX+DEYr86rBoSkY20+6glOFZ9qyow4O6jZOhAt5BtIAtS9Zrl3gL3a4WScEET1wBG57B5GHWrzs/nfyDEpHcMYqY8i9rWER6elTjKyYtgVaD6rzWqwAs59FscQvx2TcnfwtzJBjqdvqAuvNkUmrpVY1V5GxKIAcP/3yczpRLLBVX9W1a1dJIPxwd1SE2TCe9NL/0jgZO3E0mbceAKVO+qNrlt/rR/L514PNIhN1fk3tKu2cN8lIroUfyAtvT2JWwnN677P07NczmHX6QON3DZWDMRoB2wUOJmS7lkMkHJKrDUDrSKZ4ri3lZEdLK+gL8xi8XSlu6fDBgFq48WLgcK9sXa5hvT4C3YXSoP3Zcyu021b75Px/tFFI9TLJdDscLIiklW0hKqYE0jzxeUQ3OCV9CBcb1MKAn3EzdaBwdT9gcoqr1mkD6Vr835KSdNAA/2B29mT21Jq5JqbAptRVpAmiosYkNzB0RedhOL4E69L6OcOWd8G9immAJsTxsdzJML+PIOKeBBB0k//6vwXyXZK01rDNfoF2ojFhbN1fw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef83b4ff-f1ba-44e5-3577-08dce208bc33 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:52.6485 (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: GTrAllpbEkUCrGAD1LNVspo6Ln7pVCrgT7SFYmhRvRs2D7j5cw/f0ZlrA0dXdgNVUBr0JrNiL+XwY+ntU98VmA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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: Vanshika Shukla This patch separates Tx confirmation queues for kernel and DPDK so as to support the VSP case. Signed-off-by: Vanshika Shukla Acked-by: Hemant Agrawal --- drivers/bus/dpaa/include/fsl_qman.h | 4 ++- drivers/net/dpaa/dpaa_ethdev.c | 45 +++++++++++++++++++++-------- drivers/net/dpaa/dpaa_rxtx.c | 3 +- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h index c0677976e8..db14dfb839 100644 --- a/drivers/bus/dpaa/include/fsl_qman.h +++ b/drivers/bus/dpaa/include/fsl_qman.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) * * Copyright 2008-2012 Freescale Semiconductor, Inc. - * Copyright 2019 NXP + * Copyright 2019-2022 NXP * */ @@ -1237,6 +1237,8 @@ struct qman_fq { /* DPDK Interface */ void *dpaa_intf; + /*to store tx_conf_queue corresponding to tx_queue*/ + struct qman_fq *tx_conf_queue; struct rte_event ev; /* affined portal in case of static queue */ diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index bba305cfb1..3ee3029729 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -1870,9 +1870,30 @@ static int dpaa_tx_queue_init(struct qman_fq *fq, return ret; } -/* Initialise a DEBUG FQ ([rt]x_error, rx_default) and DPAA TX CONFIRM queue - * to support PTP - */ +static int +dpaa_tx_conf_queue_init(struct qman_fq *fq) +{ + struct qm_mcc_initfq opts = {0}; + int ret; + + PMD_INIT_FUNC_TRACE(); + + ret = qman_create_fq(0, QMAN_FQ_FLAG_DYNAMIC_FQID, fq); + if (ret) { + DPAA_PMD_ERR("create Tx_conf failed with ret: %d", ret); + return ret; + } + + opts.we_mask = QM_INITFQ_WE_DESTWQ | QM_INITFQ_WE_FQCTRL; + opts.fqd.dest.wq = DPAA_IF_DEBUG_PRIORITY; + ret = qman_init_fq(fq, 0, &opts); + if (ret) + DPAA_PMD_ERR("init Tx_conf fqid %d failed with ret: %d", + fq->fqid, ret); + return ret; +} + +/* Initialise a DEBUG FQ ([rt]x_error, rx_default) */ static int dpaa_def_queue_init(struct qman_fq *fq, uint32_t fqid) { struct qm_mcc_initfq opts = {0}; @@ -2170,6 +2191,15 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) if (ret) goto free_tx; dpaa_intf->tx_queues[loop].dpaa_intf = dpaa_intf; + + if (dpaa_ieee_1588) { + ret = dpaa_tx_conf_queue_init(&dpaa_intf->tx_conf_queues[loop]); + if (ret) + goto free_tx; + + dpaa_intf->tx_conf_queues[loop].dpaa_intf = dpaa_intf; + dpaa_intf->tx_queues[loop].tx_conf_queue = &dpaa_intf->tx_conf_queues[loop]; + } } dpaa_intf->nb_tx_queues = MAX_DPAA_CORES; @@ -2190,16 +2220,7 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) DPAA_PMD_ERR("DPAA TX ERROR queue init failed!"); goto free_tx; } - dpaa_intf->debug_queues[DPAA_DEBUG_FQ_TX_ERROR].dpaa_intf = dpaa_intf; - ret = dpaa_def_queue_init(dpaa_intf->tx_conf_queues, - fman_intf->fqid_tx_confirm); - if (ret) { - DPAA_PMD_ERR("DPAA TX CONFIRM queue init failed!"); - goto free_tx; - } - dpaa_intf->tx_conf_queues->dpaa_intf = dpaa_intf; } - DPAA_PMD_DEBUG("All frame queues created"); /* Get the initial configuration for flow control */ diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index 8593e20200..3bd35c7a0e 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -1083,8 +1083,7 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) struct dpaa_sw_buf_free buf_to_free[DPAA_MAX_SGS * DPAA_MAX_DEQUEUE_NUM_FRAMES]; uint32_t free_count = 0; struct qman_fq *fq = q; - struct dpaa_if *dpaa_intf = fq->dpaa_intf; - struct qman_fq *fq_txconf = dpaa_intf->tx_conf_queues; + struct qman_fq *fq_txconf = fq->tx_conf_queue; if (unlikely(!DPAA_PER_LCORE_PORTAL)) { ret = rte_dpaa_portal_init((void *)0); From patchwork Tue Oct 1 11:03:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144818 X-Patchwork-Delegate: ferruh.yigit@amd.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 A86E145A79; Tue, 1 Oct 2024 13:04:55 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E80B340A76; Tue, 1 Oct 2024 13:04:00 +0200 (CEST) Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11011056.outbound.protection.outlook.com [52.101.65.56]) by mails.dpdk.org (Postfix) with ESMTP id 58901406BC for ; Tue, 1 Oct 2024 13:03:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CUpe7xL483uY3wsMBVQQtI3q0J3jPw7HbLsjIBP6L3Q9Bvg5xSRcWNLWJMPSHvUAWLG60zevKFiMQ0dabuMr6R14Us8pglPhOhYfkekYvqRnrj2eZnU/U55rb2IF1sbWjxK7UW3HSEZar4u+WO76uLbM2nxJqoNCQCwMNGXumfudkZIJA3xj9O9FLsfPU7ZkWvdOlmSIjNtmn1BQy6Mti+4lkq1gAw79blAM6lCCxDMHTkkbctOOwAkMAGaUC9fXsPB5fFUKkCUpeKMgncxbusnbcMTDxYflah/JRLyy5Bo0MDLjOSe8T+y1VTRyyZ3PvdKr0NqU8/tBjmeRDcCIig== 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=1xB0CoqG/N9EasSVr0akk5jXgMBg9AojGgKCd8yvYQc=; b=KP6EHPt5UpMr09LUavF6Edn9i8bEfDH0XZMLDd2FfIqRF7yCUc2+EJj9cuAwxXBDO2tdArQnnpzA97U3tHkZP0OW4gWzCNmNWtKdeej72lg7kC8jxmevxisV4Z7leKX69wD5L2khQHc1IXepilOB9z7nYZ1LcUHwz3RTo+15aSin7TJOg1V56xxC457riacF3U+iCMXuuSqBQg2wQxhU6s+IXDJ60Iu0XNU0yfI5QLDtbCTOxuiRCxsHi37NZ+ICqEA4Ko7M1by//lS9SkykYtrkIzOe9Xn0cD7Kt/2hHBezGfzzUagO6vVIIdUvaj1QVzrwr7lQKBjn0IpJyO5j6A== 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=1xB0CoqG/N9EasSVr0akk5jXgMBg9AojGgKCd8yvYQc=; b=N+ahi2Ha3j6idTb37SM3ZGR0PqFpLcdkzefSebaZ2vtzSFvyC3vbbo3TN6hB3P/RyubeBSPMf69toIz9Dg83fvX9HjSg3fpHxn5EXAPAsAb7cdkwAcMi88ciyWbijcUOpL7olujCqopg5P/dq6uS6LZywbKnqihY+uY7Rz+QUMh0OLkobiZ9JJixAZkmmC35OTCqLUbQ5buxikkdxJsksTE6XKYBREtgLx2LqGkzRkLCMZkVQNKIkFNL5Xu2bwwmSw0rOtvoG5tpmtpiFWjPbRGwxyaBFLpQgn4tWbAKvk3zFgF2P9DOox7IdjqWc66hI2VrVy/csx9ET+cpPpPVNQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:03:56 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:54 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Jun Yang Subject: [PATCH v5 08/18] net/dpaa: share MAC FMC scheme and CC parse Date: Tue, 1 Oct 2024 16:33:15 +0530 Message-Id: <20241001110325.4173762-9-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 9634a407-40f7-431d-498c-08dce208bd38 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: EVGC7551WlSe8AxKvuwPlcvaYpxrJHwJ8Cfs6TkGzP7aAj2ie7XuTOG/NmWY/gczAMNjIuduoHSrw1iTJjbO0UROnhCFKrkOFTp5segt6alOsh/Z3FvNfjuzTJ97RspAvHQHKZeFnxjAkQHqgY2ceE68YjGpSRcc+a1mXJ0RMqRVw6N3karLa7llirBHMHJ6e15KHysVrb5Vwt+RRWjNQ8UE1dx7O08Hrdaf/Xm4Mz4CVn+F3wZhHcNiNlCZ5xrWf58r/uBR2NZgorN2mDz+k+tSfdezL3eVR2YbJh6mdRnKsDHMbfUYdvxjVCsUjUcGv0VRypmn2SiyIfMIhnd0sE+KJ8oFVfuvTNNfE5aLDc9bkyO3VIVkfF7GxS5gHmx/eFGM1lG+WSO0Znih6lSWmPY3pHaYYNrJRvgCqiqSbyfC0i25KSKTYhWcoCxHSn/UDQP2vmGSWmUEaOmWYBE+x4MGjdCcXf/WmFbhCMFCA1AQDEnQEat/RsYeeQIpf/UM4upaUQUymStAsMFS1jiCFFOEk72s6Ly0Jcjc/iGxD8werCttX3UwKRJdFqSImjwRQigKPT5Q2nm+LHgs7RyGdUfGFpVip3mTwqCX9noEJvVZOu9twJd2zPmQ7brG05YQ/Xr6qWM7gvnDZn3nvC4kqwsngiPsq4T9LXKoKhqHi5DELb3aBJARjvCJ99onX02cI9e87J6DhR4aolxPxPAUblajeXF8rP+WvdpEAAoiXfKptCTUSn89gnkMHzWe3LzsZG2Io7TIRs5rIBwjzkMbLoeqoz9sr/TkVuY+W+Tt7b9lI+OHCF9+GP7jvxAykbkkvaT13qM26Yiu/CZU+h5Nojpo4K/FNI+NGtCEVP/8+8sY/OnfNCiU39v/c/yyGFaS9hTNser+x3VANKiB9kcrZNrxFLA3ZIjbOS5/13uqfMsbIoUbC4DtBJWlN8j1LBvXOcA3mTbe86t33AWKV02tpd/geHLEd50e6voIyrjbBC2JJIDadRuN5XTLA5Hm347DI7FlWW2I1TNuNtk6Q0pHAvwrqUkFKXfaTc73rfINbGGiXWfrdNXtgFOyxENoFZLXL6syt/OWx9H3Dm+nYVZS6v7EBTMChn+tcWH6VDZNCBfmwuUKV8FrBTkdJ+7po7K18DWmP5B/ecTdYUjTNUFX64QbQN8ZMlAYEcsmYmkC75r1DDnhJlOivnXIy68iWbIQXhYUc1/SY6OH9P3XlWyPFs0OerNqQqcOVCk8Z9R3KQcRJ0rgjY4PLl0GX+G1bLfNc4lXKjFhbCWRlOGMqdU12YXkSIylJ2xfwmqZdr8cZgPulaHDOTEpjlUf+zVZ6qvUYhYSl9UVFT0E7Sd9Fuvjkg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: U1D9YojeL964Z8kwEtjEepcPGT7H6bThTprLL02hhwbPK9Ge5xeZc69wGhcvMqVlzV+5zuN/dZo7IQWhLbT23MCNFaIRp+LPYOknTrQmrZ+2PDOlU2wTQ7iZ3s6cDrx95d/ZgrjcmLzpAcCvU5MOnGTvemVEm5fXDkN+XCunNUvJJSCKtu+6UdMJjsazoLvycvBW5kCEZXeQ1ZMtV9LZq3eJeHGQ0vMsElnAJFif9+UtCgueU1GTUs5mZxqEzpoG/LYv5QXyON0rToYKWrzc7kuhQeJP7Z8fYJuHMh2SB0CL0+UcAnmnaFgdYDi+QgnOqviT7NsC7EZneqE/zS5BFvK01HJDPbYr5wNVJSYKY6L7ob+5cFW4dDYdRurtOFcc+Emz1nIcgxL/G7cwWI9m8K1qUBsVTZpXcYIT6e2GW3UnYYVisYrNx7zhP8hP7dRLwF3rMU79HUNdbtqMhFggU8gK4nytCtdAZST+ubVx3eRgSZARWX1fs1qjESMTpvi/UiFr78tCMCDFZll9dy/IDwq/L1srjz+s4oRW0yoOhj3dGlA6GCFw5WG5CcarQV64rOAkR6CQrAvzTK/UqeAnBQA9YLjiIZG2AyRnK1YEaD5xr0H2Sk7ZpsKmWAdoTV+DqG7d88BIRZCVCArhKmsVbZiqXga4DFSCzxir67SxTeVDS5aajz/4Qur/B6zzIwrtzQ+VaQCOufK3a52r2CmSrqMqIjT52xKsap/UuWfUcbQG3q6wvD7t1Ou8G3FiHY2Ydv0O1E/jLQ+0zdiue2A2aLZZBUL6xLvcPFe1NTQDlfk8k08xx8ArHdQx0xC6zIH2dMKLzIKYxiPtH44OI3SICE2LBivPdZ3/i1VCTrBhZ9FJ1TFP8N+5vkqZoTC+MbdJz0tc+Cvhl8vM2JUYS7WTd62t4JnOgk+ZwGZjV9JQPLbX3NoClNxZu38V1+AINyPmX5zygU/eqfP9uHeiw+lr8T4vE9TZg5JZGEbxrelM+b0tJ+dlSbJGxPKDo4lgqsdUe302qBXFiz3optKwLWD5DQCqDlxfPqPRgbf8mqRZkRkGHUdknfjzRdud056ksgc2MHy4rjJZu7IZvo2pK83Mv2blHOMn5phvrtA/kg9yxiM6+eIdf7zJ26xOzFjkau9CuuYHOpW28vtZ+YS3WEeT/oJSJvg0h246fCwjLTnQ2UZOVQapwTcEn+ffmgvuIJ+GmfEDKcIVMAHX/69VcO8kz/IOLFo8SrTayRL/rHc+JE1DcRKwGP3Nv2ZLStlUUqwuv6NOcFVsEOMaWHnxMtkfyE3jqx/OCijG4+XiVE7YC8sFj0Gumd91gvnabBRpGKyTuA2VX1E4Q1c1qH3/5Ca+XwDljwJC7wjLKPjBf0B26a+3PtdUXlU0/fd0r8+O1xPwNp7zqfMGBHAJt4QiWHpCe35FCpGYP8cyNY3A0xuPnoAf+/qfXKv+oaI2sqCEGkXvGUh2WH6xV9RVM74+1AISW5yIcfKSlJhFClwRalvhRWqmMqrQv3lIEZnKkdj58sHwp39/nTJGqFPZTuAFvQY3xJrvOZ1UFBHIf12Q46XKowGLYLtS+hWVcl0FgyQiiaJ/sN6pf21dwEfL5+rzkJ078w== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9634a407-40f7-431d-498c-08dce208bd38 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:54.5131 (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: Ov/S0kxeeZDJWn2MAJJZUEdtFiyMzJC5rRXc/NGPjeAtFxqfkGB72yIiyfl9Muz2Nd85LjJobL1GDq2jiYEsgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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 For Shared MAC: 1) Allocate RXQ from VSP scheme. (Virtual Storage Profile) 2) Allocate RXQ from Coarse classifiation (CC) rules to VSP. 2) Remove RXQ allocated which is reconfigured without VSP. 3) Don't alloc default queue and err queues. Signed-off-by: Jun Yang Acked-by: Hemant Agrawal --- drivers/bus/dpaa/include/fman.h | 1 + drivers/net/dpaa/dpaa_ethdev.c | 60 +++-- drivers/net/dpaa/dpaa_ethdev.h | 13 +- drivers/net/dpaa/dpaa_flow.c | 8 +- drivers/net/dpaa/dpaa_fmc.c | 421 ++++++++++++++++++++------------ drivers/net/dpaa/dpaa_rxtx.c | 20 +- 6 files changed, 346 insertions(+), 177 deletions(-) diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h index 60681068ea..6b2a1893f9 100644 --- a/drivers/bus/dpaa/include/fman.h +++ b/drivers/bus/dpaa/include/fman.h @@ -76,6 +76,7 @@ enum fman_mac_type { fman_mac_1g, fman_mac_10g, fman_mac_2_5g, + fman_onic, }; struct mac_addr { diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 3ee3029729..bf14d73433 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -255,7 +255,6 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev) DPAA_PMD_ERR("Cannot open IF socket"); return -errno; } - strncpy(ifr.ifr_name, dpaa_intf->name, IFNAMSIZ - 1); if (ioctl(socket_fd, SIOCGIFMTU, &ifr) < 0) { @@ -1893,6 +1892,7 @@ dpaa_tx_conf_queue_init(struct qman_fq *fq) return ret; } +#if defined(RTE_LIBRTE_DPAA_DEBUG_DRIVER) /* Initialise a DEBUG FQ ([rt]x_error, rx_default) */ static int dpaa_def_queue_init(struct qman_fq *fq, uint32_t fqid) { @@ -1923,6 +1923,7 @@ static int dpaa_def_queue_init(struct qman_fq *fq, uint32_t fqid) fqid, ret); return ret; } +#endif /* Initialise a network interface */ static int @@ -1957,6 +1958,41 @@ dpaa_dev_init_secondary(struct rte_eth_dev *eth_dev) return 0; } +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER +static int +dpaa_error_queue_init(struct dpaa_if *dpaa_intf, + struct fman_if *fman_intf) +{ + int i, ret; + struct qman_fq *err_queues = dpaa_intf->debug_queues; + uint32_t err_fqid = 0; + + if (fman_intf->is_shared_mac) { + DPAA_PMD_DEBUG("Shared MAC's err queues are handled in kernel"); + return 0; + } + + for (i = 0; i < DPAA_DEBUG_FQ_MAX_NUM; i++) { + if (i == DPAA_DEBUG_FQ_RX_ERROR) + err_fqid = fman_intf->fqid_rx_err; + else if (i == DPAA_DEBUG_FQ_TX_ERROR) + err_fqid = fman_intf->fqid_tx_err; + else + continue; + ret = dpaa_def_queue_init(&err_queues[i], err_fqid); + if (ret) { + DPAA_PMD_ERR("DPAA %s ERROR queue init failed!", + i == DPAA_DEBUG_FQ_RX_ERROR ? + "RX" : "TX"); + return ret; + } + err_queues[i].dpaa_intf = dpaa_intf; + } + + return 0; +} +#endif + static int check_devargs_handler(__rte_unused const char *key, const char *value, __rte_unused void *opaque) @@ -2202,25 +2238,11 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) } } dpaa_intf->nb_tx_queues = MAX_DPAA_CORES; - -#if !defined(RTE_LIBRTE_DPAA_DEBUG_DRIVER) - if (dpaa_ieee_1588) +#if defined(RTE_LIBRTE_DPAA_DEBUG_DRIVER) + ret = dpaa_error_queue_init(dpaa_intf, fman_intf); + if (ret) + goto free_tx; #endif - { - ret = dpaa_def_queue_init(&dpaa_intf->debug_queues - [DPAA_DEBUG_FQ_RX_ERROR], fman_intf->fqid_rx_err); - if (ret) { - DPAA_PMD_ERR("DPAA RX ERROR queue init failed!"); - goto free_tx; - } - dpaa_intf->debug_queues[DPAA_DEBUG_FQ_RX_ERROR].dpaa_intf = dpaa_intf; - ret = dpaa_def_queue_init(&dpaa_intf->debug_queues - [DPAA_DEBUG_FQ_TX_ERROR], fman_intf->fqid_tx_err); - if (ret) { - DPAA_PMD_ERR("DPAA TX ERROR queue init failed!"); - goto free_tx; - } - } DPAA_PMD_DEBUG("All frame queues created"); /* Get the initial configuration for flow control */ diff --git a/drivers/net/dpaa/dpaa_ethdev.h b/drivers/net/dpaa/dpaa_ethdev.h index b427b29cb6..0a1ceb376a 100644 --- a/drivers/net/dpaa/dpaa_ethdev.h +++ b/drivers/net/dpaa/dpaa_ethdev.h @@ -78,8 +78,11 @@ #define DPAA_IF_RX_CONTEXT_STASH 0 /* Each "debug" FQ is represented by one of these */ -#define DPAA_DEBUG_FQ_RX_ERROR 0 -#define DPAA_DEBUG_FQ_TX_ERROR 1 +enum { + DPAA_DEBUG_FQ_RX_ERROR, + DPAA_DEBUG_FQ_TX_ERROR, + DPAA_DEBUG_FQ_MAX_NUM +}; #define DPAA_RSS_OFFLOAD_ALL ( \ RTE_ETH_RSS_L2_PAYLOAD | \ @@ -107,6 +110,10 @@ #define DPAA_FD_CMD_CFQ 0x00ffffff /**< Confirmation Frame Queue */ +#define DPAA_1G_MAC_START_IDX 1 +#define DPAA_10G_MAC_START_IDX 9 +#define DPAA_2_5G_MAC_START_IDX DPAA_10G_MAC_START_IDX + #define DPAA_DEFAULT_RXQ_VSP_ID 1 #define FMC_FILE "/tmp/fmc.bin" @@ -134,7 +141,7 @@ struct dpaa_if { struct qman_fq *tx_queues; struct qman_fq *tx_conf_queues; struct qman_cgr *cgr_tx; - struct qman_fq debug_queues[2]; + struct qman_fq debug_queues[DPAA_DEBUG_FQ_MAX_NUM]; uint16_t nb_rx_queues; uint16_t nb_tx_queues; uint32_t ifid; diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c index 02aca78d05..082bd5d014 100644 --- a/drivers/net/dpaa/dpaa_flow.c +++ b/drivers/net/dpaa/dpaa_flow.c @@ -651,7 +651,13 @@ static inline int set_pcd_netenv_scheme(struct dpaa_if *dpaa_intf, static inline int get_port_type(struct fman_if *fif) { - if (fif->mac_type == fman_mac_1g) + /* For 1G fm-mac9 and fm-mac10 ports, configure the VSP as 10G + * ports so that kernel can configure correct port. + */ + if (fif->mac_type == fman_mac_1g && + fif->mac_idx >= DPAA_10G_MAC_START_IDX) + return e_FM_PORT_TYPE_RX_10G; + else if (fif->mac_type == fman_mac_1g) return e_FM_PORT_TYPE_RX; else if (fif->mac_type == fman_mac_2_5g) return e_FM_PORT_TYPE_RX_2_5G; diff --git a/drivers/net/dpaa/dpaa_fmc.c b/drivers/net/dpaa/dpaa_fmc.c index f8c9360311..d80ea1010a 100644 --- a/drivers/net/dpaa/dpaa_fmc.c +++ b/drivers/net/dpaa/dpaa_fmc.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2017-2021 NXP + * Copyright 2017-2023 NXP */ /* System headers */ @@ -204,139 +204,258 @@ struct fmc_model_t { struct fmc_model_t *g_fmc_model; -static int dpaa_port_fmc_port_parse(struct fman_if *fif, - const struct fmc_model_t *fmc_model, - int apply_idx) +static int +dpaa_port_fmc_port_parse(struct fman_if *fif, + const struct fmc_model_t *fmc_model, + int apply_idx) { int current_port = fmc_model->apply_order[apply_idx].index; const fmc_port *pport = &fmc_model->port[current_port]; - const uint8_t mac_idx[] = {-1, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1}; - const uint8_t mac_type[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2}; + uint32_t num; + + if (pport->type == e_FM_PORT_TYPE_OH_OFFLINE_PARSING && + pport->number == fif->mac_idx && + (fif->mac_type == fman_offline || + fif->mac_type == fman_onic)) + return current_port; + + if (fif->mac_type == fman_mac_1g) { + if (pport->type != e_FM_PORT_TYPE_RX) + return -ENODEV; + num = pport->number + DPAA_1G_MAC_START_IDX; + if (fif->mac_idx == num) + return current_port; + + return -ENODEV; + } + + if (fif->mac_type == fman_mac_2_5g) { + if (pport->type != e_FM_PORT_TYPE_RX_2_5G) + return -ENODEV; + num = pport->number + DPAA_2_5G_MAC_START_IDX; + if (fif->mac_idx == num) + return current_port; + + return -ENODEV; + } + + if (fif->mac_type == fman_mac_10g) { + if (pport->type != e_FM_PORT_TYPE_RX_10G) + return -ENODEV; + num = pport->number + DPAA_10G_MAC_START_IDX; + if (fif->mac_idx == num) + return current_port; + + return -ENODEV; + } + + DPAA_PMD_ERR("Invalid MAC(mac_idx=%d) type(%d)", + fif->mac_idx, fif->mac_type); + + return -EINVAL; +} + +static int +dpaa_fq_is_in_kernel(uint32_t fqid, + struct fman_if *fif) +{ + if (!fif->is_shared_mac) + return false; + + if ((fqid == fif->fqid_rx_def || + (fqid >= fif->fqid_rx_pcd && + fqid < (fif->fqid_rx_pcd + fif->fqid_rx_pcd_count)) || + fqid == fif->fqid_rx_err || + fqid == fif->fqid_tx_err)) + return true; + + return false; +} + +static int +dpaa_vsp_id_is_in_kernel(uint8_t vsp_id, + struct fman_if *fif) +{ + if (!fif->is_shared_mac) + return false; + + if (vsp_id == fif->base_profile_id) + return true; + + return false; +} + +static uint8_t +dpaa_enqueue_vsp_id(struct fman_if *fif, + const struct ioc_fm_pcd_cc_next_enqueue_params_t *eq_param) +{ + if (eq_param->override_fqid) + return eq_param->new_relative_storage_profile_id; + + return fif->base_profile_id; +} - if (mac_idx[fif->mac_idx] != pport->number || - mac_type[fif->mac_idx] != pport->type) - return -1; +static int +dpaa_kg_storage_is_in_kernel(struct fman_if *fif, + const struct ioc_fm_pcd_kg_storage_profile_t *kg_storage) +{ + if (!fif->is_shared_mac) + return false; + + if (!kg_storage->direct || + (kg_storage->direct && + kg_storage->profile_select.direct_relative_profile_id == + fif->base_profile_id)) + return true; - return current_port; + return false; } -static int dpaa_port_fmc_scheme_parse(struct fman_if *fif, - const struct fmc_model_t *fmc, - int apply_idx, - uint16_t *rxq_idx, int max_nb_rxq, - uint32_t *fqids, int8_t *vspids) +static void +dpaa_fmc_remove_fq_from_allocated(uint32_t *fqids, + uint16_t *rxq_idx, uint32_t rm_fqid) { - int idx = fmc->apply_order[apply_idx].index; uint32_t i; - if (!fmc->scheme[idx].override_storage_profile && - fif->is_shared_mac) { - DPAA_PMD_WARN("No VSP assigned to scheme %d for sharemac %d!", - idx, fif->mac_idx); - DPAA_PMD_WARN("Risk to receive pkts from skb pool to CRASH!"); + for (i = 0; i < (*rxq_idx); i++) { + if (fqids[i] != rm_fqid) + continue; + DPAA_PMD_WARN("Remove fq(0x%08x) allocated.", + rm_fqid); + if ((*rxq_idx) > (i + 1)) { + memmove(&fqids[i], &fqids[i + 1], + ((*rxq_idx) - (i + 1)) * sizeof(uint32_t)); + } + (*rxq_idx)--; + break; } +} - if (e_IOC_FM_PCD_DONE == - fmc->scheme[idx].next_engine) { - for (i = 0; i < fmc->scheme[idx] - .key_ext_and_hash.hash_dist_num_of_fqids; i++) { - uint32_t fqid = fmc->scheme[idx].base_fqid + i; - int k, found = 0; - - if (fqid == fif->fqid_rx_def || - (fqid >= fif->fqid_rx_pcd && - fqid < (fif->fqid_rx_pcd + - fif->fqid_rx_pcd_count))) { - if (fif->is_shared_mac && - fmc->scheme[idx].override_storage_profile && - fmc->scheme[idx].storage_profile.direct && - fmc->scheme[idx].storage_profile - .profile_select.direct_relative_profile_id != - fif->base_profile_id) { - DPAA_PMD_ERR("Def RXQ must be associated with def VSP on sharemac!"); - - return -1; - } - continue; +static int +dpaa_port_fmc_scheme_parse(struct fman_if *fif, + const struct fmc_model_t *fmc, + int apply_idx, + uint16_t *rxq_idx, int max_nb_rxq, + uint32_t *fqids, int8_t *vspids) +{ + int scheme_idx = fmc->apply_order[apply_idx].index; + int k, found = 0; + uint32_t i, num_rxq, fqid, rxq_idx_start = *rxq_idx; + const struct fm_pcd_kg_scheme_params_t *scheme; + const struct ioc_fm_pcd_kg_key_extract_and_hash_params_t *params; + const struct ioc_fm_pcd_kg_storage_profile_t *kg_storage; + uint8_t vsp_id; + + scheme = &fmc->scheme[scheme_idx]; + params = &scheme->key_ext_and_hash; + num_rxq = params->hash_dist_num_of_fqids; + kg_storage = &scheme->storage_profile; + + if (scheme->override_storage_profile && kg_storage->direct) + vsp_id = kg_storage->profile_select.direct_relative_profile_id; + else + vsp_id = fif->base_profile_id; + + if (dpaa_kg_storage_is_in_kernel(fif, kg_storage)) { + DPAA_PMD_WARN("Scheme[%d]'s VSP is in kernel", + scheme_idx); + /* The FQ may be allocated from previous CC or scheme, + * find and remove it. + */ + for (i = 0; i < num_rxq; i++) { + fqid = scheme->base_fqid + i; + DPAA_PMD_WARN("Removed fqid(0x%08x) of Scheme[%d]", + fqid, scheme_idx); + dpaa_fmc_remove_fq_from_allocated(fqids, + rxq_idx, fqid); + if (!dpaa_fq_is_in_kernel(fqid, fif)) { + char reason_msg[128]; + char result_msg[128]; + + sprintf(reason_msg, + "NOT handled in kernel"); + sprintf(result_msg, + "will DRAIN kernel pool!"); + DPAA_PMD_WARN("Traffic to FQ(%08x)(%s) %s", + fqid, reason_msg, result_msg); } + } - if (fif->is_shared_mac && - !fmc->scheme[idx].override_storage_profile) { - DPAA_PMD_ERR("RXQ to DPDK must be associated with VSP on sharemac!"); - return -1; - } + return 0; + } - if (fif->is_shared_mac && - fmc->scheme[idx].override_storage_profile && - fmc->scheme[idx].storage_profile.direct && - fmc->scheme[idx].storage_profile - .profile_select.direct_relative_profile_id == - fif->base_profile_id) { - DPAA_PMD_ERR("RXQ can't be associated with default VSP on sharemac!"); + if (e_IOC_FM_PCD_DONE != scheme->next_engine) { + /* Do nothing.*/ + DPAA_PMD_DEBUG("Will parse scheme[%d]'s next engine(%d)", + scheme_idx, scheme->next_engine); + return 0; + } - return -1; - } + for (i = 0; i < num_rxq; i++) { + fqid = scheme->base_fqid + i; + found = 0; - if ((*rxq_idx) >= max_nb_rxq) { - DPAA_PMD_DEBUG("Too many queues in FMC policy" - "%d overflow %d", - (*rxq_idx), max_nb_rxq); + if (dpaa_fq_is_in_kernel(fqid, fif)) { + DPAA_PMD_WARN("FQ(0x%08x) is handled in kernel.", + fqid); + /* The FQ may be allocated from previous CC or scheme, + * remove it. + */ + dpaa_fmc_remove_fq_from_allocated(fqids, + rxq_idx, fqid); + continue; + } - continue; - } + if ((*rxq_idx) >= max_nb_rxq) { + DPAA_PMD_WARN("Too many queues(%d) >= MAX number(%d)", + (*rxq_idx), max_nb_rxq); - for (k = 0; k < (*rxq_idx); k++) { - if (fqids[k] == fqid) { - found = 1; - break; - } - } + break; + } - if (found) - continue; - fqids[(*rxq_idx)] = fqid; - if (fmc->scheme[idx].override_storage_profile) { - if (fmc->scheme[idx].storage_profile.direct) { - vspids[(*rxq_idx)] = - fmc->scheme[idx].storage_profile - .profile_select - .direct_relative_profile_id; - } else { - vspids[(*rxq_idx)] = -1; - } - } else { - vspids[(*rxq_idx)] = -1; + for (k = 0; k < (*rxq_idx); k++) { + if (fqids[k] == fqid) { + found = 1; + break; } - (*rxq_idx)++; } + + if (found) + continue; + fqids[(*rxq_idx)] = fqid; + vspids[(*rxq_idx)] = vsp_id; + + (*rxq_idx)++; } - return 0; + return (*rxq_idx) - rxq_idx_start; } -static int dpaa_port_fmc_ccnode_parse(struct fman_if *fif, - const struct fmc_model_t *fmc_model, - int apply_idx, - uint16_t *rxq_idx, int max_nb_rxq, - uint32_t *fqids, int8_t *vspids) +static int +dpaa_port_fmc_ccnode_parse(struct fman_if *fif, + const struct fmc_model_t *fmc, + int apply_idx, + uint16_t *rxq_idx, int max_nb_rxq, + uint32_t *fqids, int8_t *vspids) { uint16_t j, k, found = 0; const struct ioc_keys_params_t *keys_params; - uint32_t fqid, cc_idx = fmc_model->apply_order[apply_idx].index; - - keys_params = &fmc_model->ccnode[cc_idx].keys_params; + const struct ioc_fm_pcd_cc_next_engine_params_t *params; + uint32_t fqid, cc_idx = fmc->apply_order[apply_idx].index; + uint32_t rxq_idx_start = *rxq_idx; + uint8_t vsp_id; - if ((*rxq_idx) >= max_nb_rxq) { - DPAA_PMD_WARN("Too many queues in FMC policy %d overflow %d", - (*rxq_idx), max_nb_rxq); - - return 0; - } + keys_params = &fmc->ccnode[cc_idx].keys_params; for (j = 0; j < keys_params->num_of_keys; ++j) { + if ((*rxq_idx) >= max_nb_rxq) { + DPAA_PMD_WARN("Too many queues(%d) >= MAX number(%d)", + (*rxq_idx), max_nb_rxq); + + break; + } found = 0; - fqid = keys_params->key_params[j].cc_next_engine_params - .params.enqueue_params.new_fqid; + params = &keys_params->key_params[j].cc_next_engine_params; /* We read DPDK queue from last classification rule present in * FMC policy file. Hence, this check is required here. @@ -344,15 +463,30 @@ static int dpaa_port_fmc_ccnode_parse(struct fman_if *fif, * have userspace queue so that it can be used by DPDK * application. */ - if (keys_params->key_params[j].cc_next_engine_params - .next_engine != e_IOC_FM_PCD_DONE) { - DPAA_PMD_WARN("FMC CC next engine not support"); + if (params->next_engine != e_IOC_FM_PCD_DONE) { + DPAA_PMD_WARN("CC next engine(%d) not support", + params->next_engine); continue; } - if (keys_params->key_params[j].cc_next_engine_params - .params.enqueue_params.action != + if (params->params.enqueue_params.action != e_IOC_FM_PCD_ENQ_FRAME) continue; + + fqid = params->params.enqueue_params.new_fqid; + vsp_id = dpaa_enqueue_vsp_id(fif, + ¶ms->params.enqueue_params); + if (dpaa_fq_is_in_kernel(fqid, fif) || + dpaa_vsp_id_is_in_kernel(vsp_id, fif)) { + DPAA_PMD_DEBUG("FQ(0x%08x)/VSP(%d) is in kernel.", + fqid, vsp_id); + /* The FQ may be allocated from previous CC or scheme, + * remove it. + */ + dpaa_fmc_remove_fq_from_allocated(fqids, + rxq_idx, fqid); + continue; + } + for (k = 0; k < (*rxq_idx); k++) { if (fqids[k] == fqid) { found = 1; @@ -362,38 +496,22 @@ static int dpaa_port_fmc_ccnode_parse(struct fman_if *fif, if (found) continue; - if ((*rxq_idx) >= max_nb_rxq) { - DPAA_PMD_WARN("Too many queues in FMC policy %d overflow %d", - (*rxq_idx), max_nb_rxq); - - return 0; - } - fqids[(*rxq_idx)] = fqid; - vspids[(*rxq_idx)] = - keys_params->key_params[j].cc_next_engine_params - .params.enqueue_params - .new_relative_storage_profile_id; - - if (vspids[(*rxq_idx)] == fif->base_profile_id && - fif->is_shared_mac) { - DPAA_PMD_ERR("VSP %d can NOT be used on DPDK.", - vspids[(*rxq_idx)]); - DPAA_PMD_ERR("It is associated to skb pool of shared interface."); - return -1; - } + vspids[(*rxq_idx)] = vsp_id; + (*rxq_idx)++; } - return 0; + return (*rxq_idx) - rxq_idx_start; } -int dpaa_port_fmc_init(struct fman_if *fif, - uint32_t *fqids, int8_t *vspids, int max_nb_rxq) +int +dpaa_port_fmc_init(struct fman_if *fif, + uint32_t *fqids, int8_t *vspids, int max_nb_rxq) { int current_port = -1, ret; uint16_t rxq_idx = 0; - const struct fmc_model_t *fmc_model; + const struct fmc_model_t *fmc; uint32_t i; if (!g_fmc_model) { @@ -402,14 +520,14 @@ int dpaa_port_fmc_init(struct fman_if *fif, if (!fp) { DPAA_PMD_ERR("%s not exists", FMC_FILE); - return -1; + return -ENOENT; } g_fmc_model = rte_malloc(NULL, sizeof(struct fmc_model_t), 64); if (!g_fmc_model) { DPAA_PMD_ERR("FMC memory alloc failed"); fclose(fp); - return -1; + return -ENOBUFS; } bytes_read = fread(g_fmc_model, @@ -419,25 +537,28 @@ int dpaa_port_fmc_init(struct fman_if *fif, fclose(fp); rte_free(g_fmc_model); g_fmc_model = NULL; - return -1; + return -EIO; } fclose(fp); } - fmc_model = g_fmc_model; + fmc = g_fmc_model; - if (fmc_model->format_version != FMC_OUTPUT_FORMAT_VER) - return -1; + if (fmc->format_version != FMC_OUTPUT_FORMAT_VER) { + DPAA_PMD_ERR("FMC version(0x%08x) != Supported ver(0x%08x)", + fmc->format_version, FMC_OUTPUT_FORMAT_VER); + return -EINVAL; + } - for (i = 0; i < fmc_model->apply_order_count; i++) { - switch (fmc_model->apply_order[i].type) { + for (i = 0; i < fmc->apply_order_count; i++) { + switch (fmc->apply_order[i].type) { case fmcengine_start: break; case fmcengine_end: break; case fmcport_start: current_port = dpaa_port_fmc_port_parse(fif, - fmc_model, i); + fmc, i); break; case fmcport_end: break; @@ -445,24 +566,24 @@ int dpaa_port_fmc_init(struct fman_if *fif, if (current_port < 0) break; - ret = dpaa_port_fmc_scheme_parse(fif, fmc_model, - i, &rxq_idx, - max_nb_rxq, - fqids, vspids); - if (ret) - return ret; + ret = dpaa_port_fmc_scheme_parse(fif, fmc, + i, &rxq_idx, max_nb_rxq, fqids, vspids); + DPAA_PMD_INFO("%s %d RXQ(s) from scheme[%d]", + ret >= 0 ? "Alloc" : "Remove", + ret >= 0 ? ret : -ret, + fmc->apply_order[i].index); break; case fmcccnode: if (current_port < 0) break; - ret = dpaa_port_fmc_ccnode_parse(fif, fmc_model, - i, &rxq_idx, - max_nb_rxq, fqids, - vspids); - if (ret) - return ret; + ret = dpaa_port_fmc_ccnode_parse(fif, fmc, + i, &rxq_idx, max_nb_rxq, fqids, vspids); + DPAA_PMD_INFO("%s %d RXQ(s) from cc[%d]", + ret >= 0 ? "Alloc" : "Remove", + ret >= 0 ? ret : -ret, + fmc->apply_order[i].index); break; case fmchtnode: diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index 3bd35c7a0e..d1338d1654 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -693,13 +693,26 @@ dpaa_rx_cb_atomic(void *event, } #ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER -static inline void dpaa_eth_err_queue(struct dpaa_if *dpaa_intf) +static inline void +dpaa_eth_err_queue(struct qman_fq *fq) { struct rte_mbuf *mbuf; struct qman_fq *debug_fq; int ret, i; struct qm_dqrr_entry *dq; struct qm_fd *fd; + struct dpaa_if *dpaa_intf; + + dpaa_intf = fq->dpaa_intf; + if (fq != &dpaa_intf->rx_queues[0]) { + /* Associate error queues to the first RXQ.*/ + return; + } + + if (dpaa_intf->cfg->fman_if->is_shared_mac) { + /* Error queues of shared MAC are handled in kernel. */ + return; + } if (unlikely(!RTE_PER_LCORE(dpaa_io))) { ret = rte_dpaa_portal_init((void *)0); @@ -708,7 +721,7 @@ static inline void dpaa_eth_err_queue(struct dpaa_if *dpaa_intf) return; } } - for (i = 0; i <= DPAA_DEBUG_FQ_TX_ERROR; i++) { + for (i = 0; i < DPAA_DEBUG_FQ_MAX_NUM; i++) { debug_fq = &dpaa_intf->debug_queues[i]; ret = qman_set_vdq(debug_fq, 4, QM_VDQCR_EXACT); if (ret) @@ -751,8 +764,7 @@ uint16_t dpaa_eth_queue_rx(void *q, rte_dpaa_bpid_info = fq->bp_array; #ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER - if (fq->fqid == ((struct dpaa_if *)fq->dpaa_intf)->rx_queues[0].fqid) - dpaa_eth_err_queue((struct dpaa_if *)fq->dpaa_intf); + dpaa_eth_err_queue(fq); #endif if (likely(fq->is_static)) From patchwork Tue Oct 1 11:03:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144819 X-Patchwork-Delegate: ferruh.yigit@amd.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 D690545A79; Tue, 1 Oct 2024 13:05:03 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3015940615; Tue, 1 Oct 2024 13:04:02 +0200 (CEST) Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11011056.outbound.protection.outlook.com [52.101.65.56]) by mails.dpdk.org (Postfix) with ESMTP id 7286540A67 for ; Tue, 1 Oct 2024 13:03:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A79vqDrleI6lbAldRzIzPANNhjXD/9mRlNbw2jMXM1GyzKCGzJlEOFhvGV6otdAEWnHVfSXtG6fPYA5wacyiZVTiB6hU2rI5jUZW3Eq6x1BDYtm4WyA8JqjseyRy00v0RdMzBrnjryozxBFa2K5G0G0ZcBFPEceSbYUjyu2pYEK+gumq65qPdhJp+x6YwpMxyopuR4h5LYUctuUDoHJAqXOFX5G2aYfsqnqPDDXEj7hNdzKggopn3t/hfvhc44WLcKAylxOComepf5Mtkvta7kFNw4OpaE7LmL3vDwyZ+um0PmMChYB62Qpsi4e2np0NHZ1qB/mzq0MJ+yCsPMY8Eg== 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=K+Bqv9MhADY+cMWEDD7h5Uu2kGHmnDaPxL2F5o8W4OI=; b=MwV3cT/XgaPBr1ugr3+BnNCipMJ6glVCCdTpMltP8vj8I7D97R99aFWzK5i3uL4m7MBVgcrnBC+tJRo2TE93a4ZIV2MhLPOvNlebzpaUudyQo37yRGxL+EXvQhJdquj9fWD4KNsSyC8Cog1SF/sjh+GXPCMvhdFc50pmxfUGZV0+mV+4X62MKHItrLBivdOg++FDJ6nxZc8e+9rR9q+8fS9dwpmAJEPGRUXp9lIaIap5rB+prsk4Z8KiT9KBiWjyvH0/iRietvYalnVIIOFaInFLulIvGhlbsUFeCfLRHuyWDOd7XtMK/tawgGujvL35Ci2ck4TDRFy/Lb0qEDs+GQ== 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=K+Bqv9MhADY+cMWEDD7h5Uu2kGHmnDaPxL2F5o8W4OI=; b=FMf48eY3fxZEi8taa3Gb0CyjnmSzIh8GXCwYeavWmDcpJr+I3tugFFGxIs+cy9Aep3Xj5S6xdTKUYEpxzOYudHF9WGAlFs2U3Bq0sfbZD8JErks49InhJatKlLQkUrNay9jKb6cphh8NJOzR8RHgxF/vLKe3IVwFqCEWryOoNyHEpX8XkqDHJ+Q3s87AqGKwQn2pNgYXaSJ7ocbSXOErUhnpBik1w7c0Wn3dmAN7MYL/PQPhNeKGXC5pGNUD5Hb1+D0d1oKLqTIjbTuxIfwIBGFSkP5vogLMGRgrg2CAuba1wlHlNLVXkTwXN44pRBcFFw5zDTLbaVpCv6+Xfz1/oQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:03:56 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:56 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Vanshika Shukla Subject: [PATCH v5 09/18] net/dpaa: support Rx/Tx timestamp read Date: Tue, 1 Oct 2024 16:33:16 +0530 Message-Id: <20241001110325.4173762-10-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 6111a84c-f658-4054-4ff5-08dce208be23 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: EJM5zJqap3M25KmBTJWqUgWgcf3SA7vdUAVkr77wjHHxECE84Qa99iW9NF77VSORItPEOLBcbytJgVMC917WPaUBC1NddKWp/bJ5lZXBhIUPqDPVMp/9SMu1agnqgbhi1bUiMDP6xfz9JXzO07gSQqw1gCF5kZafWNVeACdkTqaUkzK5RvfTlYc8hyzxby44fr6M1OSLRc4B4i7EWeDMLQ4oKlGl+8y0Qh1O4NMCIpZVSiuzbZCYi3aOcQp1Gudrd7awx26BTjwWplSgbwycB8daCp9IgiZJ4DCDPtQ1zlHiOstSkFeinl1c9JGfLjGHjP1dE3K79JU+L2bW1fb+U/Ou3Kcx5CaN9nk7SdCp3Q2cT2PkRf05JSQs+H0JZZh4e3eOHxLac9KhI58Zy0/xhYoseIAWg/TVTTisAva1jdTmZmMGE4m0gX2Es/nmfVRUc4D3nE0bssLwo+BZx3mV1zvqkmE1NAHwp8CDrSTHy+RYp4sIiTLp3oPuztj8b7rMRV6+wE8wNKbHJt9A1SFCdJS6mLFsQ5SD+8hrPeuvBOqXm4fXIOaAxvZsZdO3ZJw8ZzqGsW2pi370hJ1bjt/b8MmeYU4CxgVMf8yqicv+IDqNolJixMMkkRm5JCM+T8ZwqLhK04zDUePpexE32IDTAiMBoBvlM9Uouqs7xeq+M5VXkCNDqwKKFGjz3bX+EJ/8e5VX/xNNdGnVKJr23jAS+vh1gtlIC+EVf6IM4qbpziWeMgEAdc8IAOnIMRD5yfkFi0msPtXS2+OI5WsAnNANFA7ebm4dm1XAPJPiWtZn+PrrzkiOayw95QEAMHuzouDJGwtv1F0XRAN5J1ZFzDZ7ug1DrCq1FG3C+wPzEwF/QeoYGZ162vnAxzK5VUSgw6uVhWtkyqzgYu1MaO3eQ4Xf217a8HmVNVDpy0Uzzxry4Jzwa5gLyqnw0bntR9Yn7T7HIG0EPman0EHlzstttACp+5fOMX2M0/6Gy4PriuO1mvCQF9KbcZiMoy08e4J+7HY5SRVNzHPUD+VigeNNnl4PkfBgE8fEAjmyWj9dqiWLt9nE94bygHvl+Px0vC8HpztAbWzf4Um4siCS+vA3vQcHy6+nX8VAUFPjJQ6eBPgmtU6mB7PK/QIGzCpJIXDumPFaIHmQgwiUPKg7BjqoFh7kWdX/i3kGgcCU3jUTOFydZozpgfEieKccD0V+qCs7AzHubzLPGDpuQR9BXBWvIyOlFcUVZJGst9QYxyt1gnfjRC53mWmX3INSCOW7WQJ2nE4UTvGBd7W2/+/TO6dUarWwetVLCW+qxvFboIIsNXx4Pg631rs8e/n1VF3+VfcCDZYH3hzWMTge3o0Ec7Jk1Kke3A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7aQKoqMvB0bTU/f9iJ1SbRglDs2EBXOfpC9ia3XIzA87nOq4Q97g6sv0uyDl1KdQ3i22i7NOIfRWbEN8DrluobMm+oTNYJJ9M7Ot63I0mVrHO8/KxiydfcbWN/pAgbf1yvQUClR5N5gNIjK3XHo0Xa2LwdrO4iORHBq+5ZEddpWV3RmiIIbAqHEpgmE4ygQfvwe4xM2B8AP2JVuWTNTMMWVGxjfHQ13P7zuBbjQCRploucvFrpxekgB3kE7OmDj1nC+ox2kRW3ybIfyiq0wQfJxXYLGZ1RBz4DCs3e6q0iXP66FDq34lctM4uBx4GVcK4rOZtscN530t5XDb/h3nzf1EfVVA9DSa1SXUVtvArS69BhcSsQcNmJwmKA+ESIYi1C3celx+aSdy4xPHRnKkaVdOBqTjv6zoMZJ28qiuVCvNnsCRkXl9V3KSBzLtI/mrkWmKiUVOHwB9iE1iehXAhh8NmBkSROvytTbr/gFznK+AicPMrM+Uf/6D3CNyIqeNVfAzpVcdRDWraIoP5eyugeFyCCHt5h+5yRXWwoqAm+ok+NuL+2aLua6SDum1pU0AOKFQjZqvSH34y0o1jQc//FlrGY3p6xDNkKtF2LFCnbYqJe/HMSZU73LHFGhBJGT6J4dymjzVK7a0ve+DbDj/4i+IsTG/S7tUKLgDRECIamiR5H6Bi5VIE441rzWwzosZccue22oYnBRnyxtyY75Dib88ZQot+SCiosNRpWLHliTD43pBEPg1K3MVunEr1CgCZpVqKU804iboWIgPWFEbzwULVCWSv8QH889CzDigfDNueyS/pLpC/Nn23ZbF6raI5UcBrMrFtWepRSFtmvmzzr8t5NjTSOLRwWlB/nvuLyUI/F1MqXt7U0BnlpKZSvi3VzZr6xdjVm1sSBu1TVpF6zpf7G99iJJehesa75pt/GxnBxxpnI3lD2APAptivHNmY+/PwnHhfyyaUWz9aaqLEwhkeIvEllhWhv1W8QdPslqMz/Kr+qKG7c8c3+Yw6F0OLCCeHrgvTK3NsOgbyNyl++bt0D48UcOtNNe6qJqtzVNCZ4YzpTZq8avpTbu1Kvy9ROfQuTmvnsAVcQ6Ez/BXhJCM1YWYyeFNChdEOKxvQmo8Z8AWHk5zdt5kWouXIkL2AAPp5t1AhLKJkWxT0/GGfJF7BDClqG3Ls33V1z/ZHH7E3X0Hc3dx33voxsrdfuJ1n6z8+k/50DUllTRcxzTblVnckV/D9ekoiS5oTsw3fQHZCcttzbtyPN/AVR1ig8uZmHY9N77dPlNGiZI/xbe9XNaMSEhqAzuxVsK9558WZvmSyqZwaY3qQ9jtZyHjRmL6cVI4avPoc9vIaX7A/WlF0EOXb8yR2oLtM8jD5sESXwrpWJaSh9UhSYdiz1E86MrvI/zQG8/n9mhbfZw9SnXAqauNNo3WKHrpgonRELCzmpsCFO/p757U/etadnNzoSDc8MQjExS+Asy66vgp6c50kgKQv8pLp44tcf2ztFvVoVx5zqeBJ0XSa5qRmzQxCcF0txQdtiX2e1IzJv69vxcGr5JtcAM8PwZWWi/14gXr/g2gxjA/ghWe1igQht/QdFV1YJtSt3jggfiQf0EhzvnwEg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6111a84c-f658-4054-4ff5-08dce208be23 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:56.0885 (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: wXCQYcM/K+28O2w+JZ6nUw95cXYdViLKzu3oG0HZ2Eg6DaSAtQeFZLWof6oGwWaCDv168kzOaQjALHcN4UfRdQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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: Vanshika Shukla This patch implements Rx/Tx timestamp read operations for DPAA1 platform. Signed-off-by: Vanshika Shukla --- doc/guides/nics/features/dpaa.ini | 1 + drivers/bus/dpaa/base/fman/fman.c | 21 +++++++- drivers/bus/dpaa/base/fman/fman_hw.c | 6 ++- drivers/bus/dpaa/include/fman.h | 18 ++++++- drivers/net/dpaa/dpaa_ethdev.c | 2 + drivers/net/dpaa/dpaa_ethdev.h | 17 +++++++ drivers/net/dpaa/dpaa_ptp.c | 42 ++++++++++++++++ drivers/net/dpaa/dpaa_rxtx.c | 71 ++++++++++++++++++++++++---- drivers/net/dpaa/dpaa_rxtx.h | 4 +- drivers/net/dpaa/meson.build | 1 + 10 files changed, 168 insertions(+), 15 deletions(-) create mode 100644 drivers/net/dpaa/dpaa_ptp.c diff --git a/doc/guides/nics/features/dpaa.ini b/doc/guides/nics/features/dpaa.ini index b136ed191a..4196dd800c 100644 --- a/doc/guides/nics/features/dpaa.ini +++ b/doc/guides/nics/features/dpaa.ini @@ -19,6 +19,7 @@ Flow control = Y L3 checksum offload = Y L4 checksum offload = Y Packet type parsing = Y +Timestamp offload = Y Basic stats = Y Extended stats = Y FW version = Y diff --git a/drivers/bus/dpaa/base/fman/fman.c b/drivers/bus/dpaa/base/fman/fman.c index beeb03dbf2..e39bc8c252 100644 --- a/drivers/bus/dpaa/base/fman/fman.c +++ b/drivers/bus/dpaa/base/fman/fman.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) * * Copyright 2010-2016 Freescale Semiconductor Inc. - * Copyright 2017-2020 NXP + * Copyright 2017-2024 NXP * */ @@ -520,6 +520,25 @@ fman_if_init(const struct device_node *dpa_node) goto err; } + regs_addr = of_get_address(tx_node, 0, &__if->regs_size, NULL); + if (!regs_addr) { + FMAN_ERR(-EINVAL, "of_get_address(%s)\n", mname); + goto err; + } + phys_addr = of_translate_address(tx_node, regs_addr); + if (!phys_addr) { + FMAN_ERR(-EINVAL, "of_translate_address(%s, %p)\n", + mname, regs_addr); + goto err; + } + __if->tx_bmi_map = mmap(NULL, __if->regs_size, + PROT_READ | PROT_WRITE, MAP_SHARED, + fman_ccsr_map_fd, phys_addr); + if (__if->tx_bmi_map == MAP_FAILED) { + FMAN_ERR(-errno, "mmap(0x%"PRIx64")\n", phys_addr); + goto err; + } + /* No channel ID for MAC-less */ assert(lenp == sizeof(*tx_channel_id)); na = of_n_addr_cells(mac_node); diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c index 124c69edb4..4fc41c1ae9 100644 --- a/drivers/bus/dpaa/base/fman/fman_hw.c +++ b/drivers/bus/dpaa/base/fman/fman_hw.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright 2017,2020 NXP + * Copyright 2017,2020,2022 NXP * */ @@ -565,6 +565,10 @@ fman_if_set_ic_params(struct fman_if *fm_if, &((struct rx_bmi_regs *)__if->bmi_map)->fmbm_ricp; out_be32(fmbm_ricp, val); + unsigned int *fmbm_ticp = + &((struct tx_bmi_regs *)__if->tx_bmi_map)->fmbm_ticp; + out_be32(fmbm_ticp, val); + return 0; } diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h index 6b2a1893f9..09d1ddb897 100644 --- a/drivers/bus/dpaa/include/fman.h +++ b/drivers/bus/dpaa/include/fman.h @@ -2,7 +2,7 @@ * * Copyright 2010-2012 Freescale Semiconductor, Inc. * All rights reserved. - * Copyright 2019-2021 NXP + * Copyright 2019-2022 NXP * */ @@ -292,6 +292,21 @@ struct rx_bmi_regs { uint32_t fmbm_rdbg; /**< Rx Debug-*/ }; +struct tx_bmi_regs { + uint32_t fmbm_tcfg; /**< Tx Configuration*/ + uint32_t fmbm_tst; /**< Tx Status*/ + uint32_t fmbm_tda; /**< Tx DMA attributes*/ + uint32_t fmbm_tfp; /**< Tx FIFO Parameters*/ + uint32_t fmbm_tfed; /**< Tx Frame End Data*/ + uint32_t fmbm_ticp; /**< Tx Internal Context Parameters*/ + uint32_t fmbm_tfdne; /**< Tx Frame Dequeue Next Engine*/ + uint32_t fmbm_tfca; /**< Tx Frame Attributes*/ + uint32_t fmbm_tcfqid; /**< Tx Confirmation Frame Queue ID*/ + uint32_t fmbm_tefqid; /**< Tx Error Frame Queue ID*/ + uint32_t fmbm_tfene; /**< Tx Frame Enqueue Next Engine*/ + uint32_t fmbm_trlmts; /**< Tx Rate Limiter Scale*/ + uint32_t fmbm_trlmt; /**< Tx Rate Limiter*/ +}; struct fman_port_qmi_regs { uint32_t fmqm_pnc; /**< PortID n Configuration Register */ uint32_t fmqm_pns; /**< PortID n Status Register */ @@ -380,6 +395,7 @@ struct __fman_if { uint64_t regs_size; void *ccsr_map; void *bmi_map; + void *tx_bmi_map; void *qmi_map; struct list_head node; }; diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index bf14d73433..682cb1c77e 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -1673,6 +1673,8 @@ static struct eth_dev_ops dpaa_devops = { .rx_queue_intr_disable = dpaa_dev_queue_intr_disable, .rss_hash_update = dpaa_dev_rss_hash_update, .rss_hash_conf_get = dpaa_dev_rss_hash_conf_get, + .timesync_read_rx_timestamp = dpaa_timesync_read_rx_timestamp, + .timesync_read_tx_timestamp = dpaa_timesync_read_tx_timestamp, }; static bool diff --git a/drivers/net/dpaa/dpaa_ethdev.h b/drivers/net/dpaa/dpaa_ethdev.h index 0a1ceb376a..bbdb0936c0 100644 --- a/drivers/net/dpaa/dpaa_ethdev.h +++ b/drivers/net/dpaa/dpaa_ethdev.h @@ -151,6 +151,14 @@ struct dpaa_if { void *netenv_handle; void *scheme_handle[2]; uint32_t scheme_count; + /*stores timestamp of last received packet on dev*/ + uint64_t rx_timestamp; + /*stores timestamp of last received tx confirmation packet on dev*/ + uint64_t tx_timestamp; + /* stores pointer to next tx_conf queue that should be processed, + * it corresponds to last packet transmitted + */ + struct qman_fq *next_tx_conf_queue; void *vsp_handle[DPAA_VSP_PROFILE_MAX_NUM]; uint32_t vsp_bpid[DPAA_VSP_PROFILE_MAX_NUM]; @@ -233,6 +241,15 @@ struct dpaa_if_rx_bmi_stats { uint32_t fmbm_rbdc; /**< Rx Buffers Deallocate Counter*/ }; +int +dpaa_timesync_read_tx_timestamp(struct rte_eth_dev *dev, + struct timespec *timestamp); + +int +dpaa_timesync_read_rx_timestamp(struct rte_eth_dev *dev, + struct timespec *timestamp, + uint32_t flags __rte_unused); + /* PMD related logs */ extern int dpaa_logtype_pmd; #define RTE_LOGTYPE_DPAA_PMD dpaa_logtype_pmd diff --git a/drivers/net/dpaa/dpaa_ptp.c b/drivers/net/dpaa/dpaa_ptp.c new file mode 100644 index 0000000000..2ecdda6db0 --- /dev/null +++ b/drivers/net/dpaa/dpaa_ptp.c @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2022-2024 NXP + */ + +/* System headers */ +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +int dpaa_timesync_read_tx_timestamp(struct rte_eth_dev *dev, + struct timespec *timestamp) +{ + struct dpaa_if *dpaa_intf = dev->data->dev_private; + + if (dpaa_intf->next_tx_conf_queue) { + while (!dpaa_intf->tx_timestamp) + dpaa_eth_tx_conf(dpaa_intf->next_tx_conf_queue); + } else { + return -1; + } + *timestamp = rte_ns_to_timespec(dpaa_intf->tx_timestamp); + + return 0; +} + +int dpaa_timesync_read_rx_timestamp(struct rte_eth_dev *dev, + struct timespec *timestamp, + uint32_t flags __rte_unused) +{ + struct dpaa_if *dpaa_intf = dev->data->dev_private; + *timestamp = rte_ns_to_timespec(dpaa_intf->rx_timestamp); + return 0; +} diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index d1338d1654..e3b4bb14ab 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * * Copyright 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2017,2019-2021 NXP + * Copyright 2017,2019-2024 NXP * */ @@ -49,7 +49,6 @@ #define DPAA_MBUF_TO_CONTIG_FD(_mbuf, _fd, _bpid) \ do { \ - (_fd)->cmd = 0; \ (_fd)->opaque_addr = 0; \ (_fd)->opaque = QM_FD_CONTIG << DPAA_FD_FORMAT_SHIFT; \ (_fd)->opaque |= ((_mbuf)->data_off) << DPAA_FD_OFFSET_SHIFT; \ @@ -122,6 +121,8 @@ static inline void dpaa_eth_packet_info(struct rte_mbuf *m, void *fd_virt_addr) { struct annotations_t *annot = GET_ANNOTATIONS(fd_virt_addr); uint64_t prs = *((uintptr_t *)(&annot->parse)) & DPAA_PARSE_MASK; + struct rte_ether_hdr *eth_hdr = + rte_pktmbuf_mtod(m, struct rte_ether_hdr *); DPAA_DP_LOG(DEBUG, " Parsing mbuf: %p with annotations: %p", m, annot); @@ -241,6 +242,11 @@ static inline void dpaa_eth_packet_info(struct rte_mbuf *m, void *fd_virt_addr) if (prs & DPAA_PARSE_VLAN_MASK) m->ol_flags |= RTE_MBUF_F_RX_VLAN; /* Packet received without stripping the vlan */ + + if (eth_hdr->ether_type == htons(RTE_ETHER_TYPE_1588)) { + m->ol_flags |= RTE_MBUF_F_RX_IEEE1588_PTP; + m->ol_flags |= RTE_MBUF_F_RX_IEEE1588_TMST; + } } static inline void dpaa_checksum(struct rte_mbuf *mbuf) @@ -317,7 +323,7 @@ static inline void dpaa_checksum_offload(struct rte_mbuf *mbuf, prs->ip_off[0] = mbuf->l2_len; prs->l4_off = mbuf->l3_len + mbuf->l2_len; /* Enable L3 (and L4, if TCP or UDP) HW checksum*/ - fd->cmd = DPAA_FD_CMD_RPD | DPAA_FD_CMD_DTC; + fd->cmd |= DPAA_FD_CMD_RPD | DPAA_FD_CMD_DTC; } static inline void @@ -513,6 +519,7 @@ dpaa_rx_cb_no_prefetch(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, uint16_t offset, i; uint32_t length; uint8_t format; + struct annotations_t *annot; bp_info = DPAA_BPID_TO_POOL_INFO(dqrr[0]->fd.bpid); ptr = rte_dpaa_mem_ptov(qm_fd_addr(&dqrr[0]->fd)); @@ -554,6 +561,11 @@ dpaa_rx_cb_no_prefetch(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, rte_mbuf_refcnt_set(mbuf, 1); dpaa_eth_packet_info(mbuf, mbuf->buf_addr); dpaa_display_frame_info(fd, fq[0]->fqid, true); + if (dpaa_ieee_1588) { + annot = GET_ANNOTATIONS(mbuf->buf_addr); + dpaa_intf->rx_timestamp = + rte_cpu_to_be_64(annot->timestamp); + } } } @@ -567,6 +579,7 @@ dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, uint16_t offset, i; uint32_t length; uint8_t format; + struct annotations_t *annot; for (i = 0; i < num_bufs; i++) { fd = &dqrr[i]->fd; @@ -594,6 +607,11 @@ dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, rte_mbuf_refcnt_set(mbuf, 1); dpaa_eth_packet_info(mbuf, mbuf->buf_addr); dpaa_display_frame_info(fd, fq[0]->fqid, true); + if (dpaa_ieee_1588) { + annot = GET_ANNOTATIONS(mbuf->buf_addr); + dpaa_intf->rx_timestamp = + rte_cpu_to_be_64(annot->timestamp); + } } } @@ -758,6 +776,8 @@ uint16_t dpaa_eth_queue_rx(void *q, uint32_t num_rx = 0, ifid = ((struct dpaa_if *)fq->dpaa_intf)->ifid; int num_rx_bufs, ret; uint32_t vdqcr_flags = 0; + struct annotations_t *annot; + struct dpaa_if *dpaa_intf = fq->dpaa_intf; if (unlikely(rte_dpaa_bpid_info == NULL && rte_eal_process_type() == RTE_PROC_SECONDARY)) @@ -800,6 +820,10 @@ uint16_t dpaa_eth_queue_rx(void *q, continue; bufs[num_rx++] = dpaa_eth_fd_to_mbuf(&dq->fd, ifid); dpaa_display_frame_info(&dq->fd, fq->fqid, true); + if (dpaa_ieee_1588) { + annot = GET_ANNOTATIONS(bufs[num_rx - 1]->buf_addr); + dpaa_intf->rx_timestamp = rte_cpu_to_be_64(annot->timestamp); + } qman_dqrr_consume(fq, dq); } while (fq->flags & QMAN_FQ_STATE_VDQCR); @@ -1095,6 +1119,7 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) struct dpaa_sw_buf_free buf_to_free[DPAA_MAX_SGS * DPAA_MAX_DEQUEUE_NUM_FRAMES]; uint32_t free_count = 0; struct qman_fq *fq = q; + struct dpaa_if *dpaa_intf = fq->dpaa_intf; struct qman_fq *fq_txconf = fq->tx_conf_queue; if (unlikely(!DPAA_PER_LCORE_PORTAL)) { @@ -1107,6 +1132,12 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) DPAA_DP_LOG(DEBUG, "Transmitting %d buffers on queue: %p", nb_bufs, q); + if (dpaa_ieee_1588) { + dpaa_intf->next_tx_conf_queue = fq_txconf; + dpaa_eth_tx_conf(fq_txconf); + dpaa_intf->tx_timestamp = 0; + } + while (nb_bufs) { frames_to_send = (nb_bufs > DPAA_TX_BURST_SIZE) ? DPAA_TX_BURST_SIZE : nb_bufs; @@ -1119,6 +1150,14 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) if (dpaa_svr_family == SVR_LS1043A_FAMILY && (mbuf->data_off & 0x7F) != 0x0) realloc_mbuf = 1; + + fd_arr[loop].cmd = 0; + if (dpaa_ieee_1588) { + fd_arr[loop].cmd |= DPAA_FD_CMD_FCO | + qman_fq_fqid(fq_txconf); + fd_arr[loop].cmd |= DPAA_FD_CMD_RPD | + DPAA_FD_CMD_UPD; + } seqn = *dpaa_seqn(mbuf); if (seqn != DPAA_INVALID_MBUF_SEQN) { index = seqn - 1; @@ -1176,10 +1215,6 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) mbuf = temp_mbuf; realloc_mbuf = 0; } - - if (dpaa_ieee_1588) - fd_arr[loop].cmd |= DPAA_FD_CMD_FCO | qman_fq_fqid(fq_txconf); - indirect_buf: state = tx_on_dpaa_pool(mbuf, bp_info, &fd_arr[loop], @@ -1208,9 +1243,6 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) sent += frames_to_send; } - if (dpaa_ieee_1588) - dpaa_eth_tx_conf(fq_txconf); - DPAA_DP_LOG(DEBUG, "Transmitted %d buffers on queue: %p", sent, q); for (loop = 0; loop < free_count; loop++) { @@ -1228,6 +1260,12 @@ dpaa_eth_tx_conf(void *q) struct qm_dqrr_entry *dq; int num_tx_conf, ret, dq_num; uint32_t vdqcr_flags = 0; + struct dpaa_if *dpaa_intf = fq->dpaa_intf; + struct qm_dqrr_entry *dqrr; + struct dpaa_bp_info *bp_info; + struct rte_mbuf *mbuf; + void *ptr; + struct annotations_t *annot; if (unlikely(rte_dpaa_bpid_info == NULL && rte_eal_process_type() == RTE_PROC_SECONDARY)) @@ -1252,7 +1290,20 @@ dpaa_eth_tx_conf(void *q) dq = qman_dequeue(fq); if (!dq) continue; + dqrr = dq; dq_num++; + bp_info = DPAA_BPID_TO_POOL_INFO(dqrr->fd.bpid); + ptr = rte_dpaa_mem_ptov(qm_fd_addr(&dqrr->fd)); + rte_prefetch0((void *)((uint8_t *)ptr + + DEFAULT_RX_ICEOF)); + mbuf = (struct rte_mbuf *) + ((char *)ptr - bp_info->meta_data_size); + + if (mbuf->ol_flags & RTE_MBUF_F_TX_IEEE1588_TMST) { + annot = GET_ANNOTATIONS(mbuf->buf_addr); + dpaa_intf->tx_timestamp = + rte_cpu_to_be_64(annot->timestamp); + } dpaa_display_frame_info(&dq->fd, fq->fqid, true); qman_dqrr_consume(fq, dq); dpaa_free_mbuf(&dq->fd); diff --git a/drivers/net/dpaa/dpaa_rxtx.h b/drivers/net/dpaa/dpaa_rxtx.h index 042602e087..1048e86d41 100644 --- a/drivers/net/dpaa/dpaa_rxtx.h +++ b/drivers/net/dpaa/dpaa_rxtx.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * * Copyright 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2017,2020-2021 NXP + * Copyright 2017,2020-2022 NXP * */ @@ -260,7 +260,7 @@ struct dpaa_eth_parse_results_t { struct annotations_t { uint8_t reserved[DEFAULT_RX_ICEOF]; struct dpaa_eth_parse_results_t parse; /**< Pointer to Parsed result*/ - uint64_t reserved1; + uint64_t timestamp; uint64_t hash; /**< Hash Result */ }; diff --git a/drivers/net/dpaa/meson.build b/drivers/net/dpaa/meson.build index 42e1f8c2e2..239858adda 100644 --- a/drivers/net/dpaa/meson.build +++ b/drivers/net/dpaa/meson.build @@ -14,6 +14,7 @@ sources = files( 'dpaa_flow.c', 'dpaa_rxtx.c', 'dpaa_fmc.c', + 'dpaa_ptp.c', ) if cc.has_argument('-Wno-pointer-arith') From patchwork Tue Oct 1 11:03:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144820 X-Patchwork-Delegate: ferruh.yigit@amd.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 7167045A79; Tue, 1 Oct 2024 13:05:16 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EB0AB40A87; Tue, 1 Oct 2024 13:04:03 +0200 (CEST) Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11011021.outbound.protection.outlook.com [52.101.65.21]) by mails.dpdk.org (Postfix) with ESMTP id 380F7406BC for ; Tue, 1 Oct 2024 13:03:59 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Nys1YR5dzV8N8Fp9XBqEvVaJX5/8OKEG2OzakPCzZslLJWANbcSmguETtEJ/+l7V7gK07ToZxW2+mSghOFyeknyTkrCEGYQ7rUl4crWV7X1WmuB3igyWPuK+DFTxH70eWRydg0565At3PPF3XlfqffoKy+BFXWTcyv3F2e39YfNJOtnKLfd4qnMmoTUJbI5ERNgsk7tXUKAKLHp095VnaSnmoZTAE0UAVGvgW1hiW73qGIILcEJLPBvLPbtdbVv1MK49poch3c1/Kbc91wXadjU+CGlwjFJlozYx+YWn/z4bVMQ5o4wG/lltXNEVVHhV5o1u+dd+4EbaaWi4Snm35g== 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=OXzG5G8sRtPuMnErx25Yg7WupGBfkwvoKjMEppumXiM=; b=k6mtY3gCKJlhDWTTsEh3axbRvJSaxx5duR5mJthZv9dTPmoRwfS+pPl7GgP7p410CZtsVW6WEYS+M/4U+sKiQRww70guBLD0YG0mzvrhqPUHoEExM5heJo57cZf/fJNaOJHrLAnLhXQ6AmkB3yTn17fXj8b8GK7V8zZ5XHN9rPDqn85fdYkmhsW7tQniG/A5JhEVXhFM17HsyKLi8wwRiTTOi7fFnCAY6YJM6JWsl4IIzoo1N5UEmLqEx3z/j9ClrJXJ64hADeCX9FQkkMLkoUKfn0RdcKT9dLo0XQIxJBKog/CzX2juY1ZadXDf1OyQfoO45AcUw8V9KEaVrkONeg== 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=OXzG5G8sRtPuMnErx25Yg7WupGBfkwvoKjMEppumXiM=; b=QkwA8zk+Bxick0qs9Y5apBQ0GzRE0Lo5L3e9JW/VuuImPVyc9kjoUU8LiyZ0tQml4nnp53ooYoACHlqSY+eCXAhW4UnT+9t2FXY1dgaTq71cUklpuDOiria+jqX+SrX/S+6qKNj8RXkRC8EU8CHOzUdfP1+4koRli7hFCu4XxGUvAFdO4qPwZnYxhwNJuwZFfQgAZ584BF3kuDz2KHuXaaxJgs+S3TJ+z/5GKvJvkCkVfBaeKemNtyLDJKn36hp1+dg7NAYxsJSrzr+G/LvuFvkoRrNWgdNy+bLX2s9VaCEm81ji7IPecFAJ/Uqp4xYSfLHC1JhCajNBDOWSJbMHHw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:03:57 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:57 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Vanshika Shukla Subject: [PATCH v5 10/18] net/dpaa: support IEEE 1588 PTP Date: Tue, 1 Oct 2024 16:33:17 +0530 Message-Id: <20241001110325.4173762-11-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 28e13cba-3390-4fc7-3b56-08dce208bf12 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: /ROioU0+3YjjCR3bEAv0T9xA483u7ya4ihCPQ7ICYW3xYunINKAIdQHcL7L6cHExUE5XN1KhJhrb6brOB10tvcjKLIjSadbN89Hwkd8gkoDAi88tBXaVEBlt7h6/d3r3CQ8UxFOgaLZvPzaEf5BfHf18s1+wlKM6EHzPUwls2II8GquP1hpN3ops3qnLoN7mf4A/FpfitoEC76cW5zbj1fhj9SMavuDjd+6Hn6v4ZwCPBo+B8FzuF0ssmQpLOSAuMaGAeXV2cTMhOsYLpkC6/3cjhM4Ny/cx4TLSgFjyngsXfJusgyyl1OGpMllitcpwdAUoqC/w7ieGkubCJdeRZ4yQUKP9lOstcMYUjOWntwevobuR1VT8iKp3cUK2VEri/TQvrN3ig/mn2gAyTvkmGf6w1jidO/g6AYytVnKeQNKm4wBCm9xBG6FEKDCKiasn+KWYTa+R2/QVXzP6b4pbaknftPREP3Q0NdbYFCLSPpupr7U1KFT11LdhwA3Lqjq15rrfOhrzs1k8AIeQtF+KjDvcApcZmtSN8p9b/EvWeiMK81qC6S5qQkxBuEguRMBkTFLUIOEidPOi3tNzDb3z0lMQdPTpq1jNqHMtooRX984DNYx1yJ0ND7BCV6/mA/r588jogq1qMbFMxfBp973kLWEGbdFvaxbWKySVrw/TcsyKpFp9KVF2FLR0zsIDhuzrgBAg7NJA7kyuS8/7taVIEkYLMCPwMtuVk0GLybOpIKg6RvMixZIHMAr0k62Vu6VtA5QpvT09nupoWkgsS4f518W7r1AGIUlzTZU4qNnCvXjFDf9gWQvTe440PJDbOm6g230Y/ONL7spKQDTtaTWFhEvSZjKMukvmE6APPCqPnB9F1tfbpaFrIBjNGxRyYr17amivYDEBm/J67f732RAKKU14LduFtzNg8ry4fBVIVMxz7mRCTF5VoIoKReSBM59QQxv323BXpk5JIpt2Q2n5MynW1zzsfzEL32OwMFVxhf4yTKflPwJXWQBydjdaxUiv1Y06q7iA4L+wXB9fTvAwu5QqGNUiTGAF25uQxid0w3NJZB2wy1OpjF5JyXAGNKhFV5CubXjdFMqcvLHP+SgFhWnh5wS4vCFy/+guOHoppPwhU5TGJ5WVJeVW83/1+aGnJGkAzeWYQhL9ihLXUJmTaq5OPeOZGtqlsx75YDiwF19Z4prFllW6AitpX0govII7Rbu+aOI4TPO3DrhZ/siN6GCQgp5jKA2/jwgKoSw2yvKl3Bay78Nx5PeuwUU1R5AIvx5+61SqYhTmf0l+n7+glIP62IBXptHSjBW2FeMrL4Q1iF6L26sKiWKOQY4fNp0oSSKW8W3ThEK6xgOnq8N4vw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +M2JobrF574VbuyRo2rshWexLG+cJj5FJT5TiDFryTAha2jy0vpTGnCc3D+P+7/pwkJ0RL08hcmQNv5N9mmOAnt8zbC0qd9kmDQCnQcXbsRv2UQCOGq/Qut9C6h+kzXp8CCZhh+exL27BSjrS5Z79PKvALxkrklIHzkEH39hUikaBBFOWkYb0z0Ha+CFrzyKoh1dy9yZmI4LNdknX6/PNfzA7JmNki966FvDO/D/lKVPBmRWFLkkqeXi2IdECM81rVcFeVTPHPtjhk5Dsi77aDllj3UP7a/HzwxxReZktgosTRn3ED4T95X7QtdAA22VBucL6HAxUB2kids98pgjHB7gYc6I8k7ZOyEU38txElHkDM9QtLD1aPdoXUS0JiPSaDaZLDXYYv6dqaNRIfsfaDbnUbGFbS4uBrWhD9Pe/QiZuUjgbC/efW9a+qzEWC6VBsSW+60hhRNzhthGd0+KuwEt0MTHywlqJyIV/cZJABguNqQlH+h/hKGxIcCaWUM58hmW2zxIicIQEzWDgmHN098WPMSdT68G2z8wvzPcPLaOFWZ2NHu86eO+84IknwfKCXeqVZIYwpd2B0smtZruvRZxhf5iTvI+88U0g9O5sGF5yV4/E14FzF9obw5XgAOKBuduAtU4hl0CaH89K2kD77FikHIuFGUucpmkYc6Hto0a25EhxLWrtPzFtBwSb9oZ/FtGwlO9JiKGu1v9QXX9Ienw+xGJwyJlHKxpBYJNKnH12au33/kQUHzQoFmnbHfj2Fgkn+KCSzsY7kQGUcY/gp/VCQrLWtpVqMuhhjFW7l14+CYj47nx/Xa/8IP1S6NAQGlGGjNWgAupaW1e1t1mVV3o6o1hJk+xyX8eH1EBsoapbUvn1BrNPXk0m7s1MxMAcb+0jTZ1QuVXxKFlwofRcIDpDFqU+XBnufzZ9i22miG2q97r4waYHqAnaJhHVQT2ALxV4PVjacttadsd1V5lfGPgLV0FqMWPabZtcdXW+b7EzYmgLm2oTAcyX+zo2BSmHiqI2BS1awxEHasylywqDyHFxoocWK7FoGfVwiI3GCAmqTHxqpBGbvynqQ9y+zbfiQTIVTNFc0OLSterhgK+LlIK1WLEHz9Xkne0Ve567mbzBHrjyd4gsnCoLpVdXWQwmQisFe5iuFWWgLfg+Jjj2MIdaoD3QTk/ikGH3v+TPB1sslS73zNE611sz2QhmLFGPIgLX7eCaJM1gzlEG0LsCRBrN0CqdWZciuXNZ4eW2dXJEvrDFkQc+r4C3/Ea3adFny7R8bwfZmFbu2SE9FIvEN7DSqmdFP71YYUbvH8eesTcanlGoBXeYWQE2JAiWUxfNTFc88Gu+Er18foWIajpGwUYm5bxHDI9ANvFRf9yOfc+mOgYjDYirGersbGBaj8MMWO2iRUyVDUR8JsT3LIj54uLTrAdjoZnrRsNoX5+5w6D4erMfjqemUEcvXp9ZpDcvUa4mazAZ+UaWzd3cKCHe22TIFh2DEUVC8CuGhFjqs0LLl15raQ3hw2cOrXsKEt3zweZ69zKp+IvtX7wFpgzjr6Yh/Z4vwvlDnXCFKH/oCuGL3/9tqbhinjY9kZFEhQk9/wL2JxpCcdUJ3lMqo8s1g== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 28e13cba-3390-4fc7-3b56-08dce208bf12 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:57.4530 (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: 9Mbvm5x+q1IIX3bqrfgb5Rhu7GqYW3m62Y69p3LzUw2ktih2ShQZ0t2cStRSKRIW2mS3wY7gJ6qhRDU/BRkSmw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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: Vanshika Shukla This patch adds the support for the ethdev APIs to enable/disable and read/write/adjust IEEE1588 PTP timestamps for DPAA platform. Signed-off-by: Vanshika Shukla --- doc/guides/nics/dpaa.rst | 1 + doc/guides/nics/features/dpaa.ini | 1 + drivers/bus/dpaa/base/fman/fman.c | 15 ++++++ drivers/bus/dpaa/include/fman.h | 45 +++++++++++++++++ drivers/net/dpaa/dpaa_ethdev.c | 5 ++ drivers/net/dpaa/dpaa_ethdev.h | 16 +++++++ drivers/net/dpaa/dpaa_ptp.c | 80 ++++++++++++++++++++++++++++++- 7 files changed, 161 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst index acf4daab02..ea86e6146c 100644 --- a/doc/guides/nics/dpaa.rst +++ b/doc/guides/nics/dpaa.rst @@ -148,6 +148,7 @@ Features - Packet type information - Checksum offload - Promiscuous mode + - IEEE1588 PTP DPAA Mempool Driver ~~~~~~~~~~~~~~~~~~~ diff --git a/doc/guides/nics/features/dpaa.ini b/doc/guides/nics/features/dpaa.ini index 4196dd800c..4f31b61de1 100644 --- a/doc/guides/nics/features/dpaa.ini +++ b/doc/guides/nics/features/dpaa.ini @@ -19,6 +19,7 @@ Flow control = Y L3 checksum offload = Y L4 checksum offload = Y Packet type parsing = Y +Timesync = Y Timestamp offload = Y Basic stats = Y Extended stats = Y diff --git a/drivers/bus/dpaa/base/fman/fman.c b/drivers/bus/dpaa/base/fman/fman.c index e39bc8c252..e2b7120237 100644 --- a/drivers/bus/dpaa/base/fman/fman.c +++ b/drivers/bus/dpaa/base/fman/fman.c @@ -28,6 +28,7 @@ u32 fman_dealloc_bufs_mask_lo; int fman_ccsr_map_fd = -1; static COMPAT_LIST_HEAD(__ifs); +void *rtc_map; /* This is the (const) global variable that callers have read-only access to. * Internally, we have read-write access directly to __ifs. @@ -539,6 +540,20 @@ fman_if_init(const struct device_node *dpa_node) goto err; } + if (!rtc_map) { + __if->rtc_map = mmap(NULL, FMAN_IEEE_1588_SIZE, + PROT_READ | PROT_WRITE, MAP_SHARED, + fman_ccsr_map_fd, FMAN_IEEE_1588_OFFSET); + if (__if->rtc_map == MAP_FAILED) { + pr_err("Can not map FMan RTC regs base\n"); + _errno = -EINVAL; + goto err; + } + rtc_map = __if->rtc_map; + } else { + __if->rtc_map = rtc_map; + } + /* No channel ID for MAC-less */ assert(lenp == sizeof(*tx_channel_id)); na = of_n_addr_cells(mac_node); diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h index 09d1ddb897..e8bc913943 100644 --- a/drivers/bus/dpaa/include/fman.h +++ b/drivers/bus/dpaa/include/fman.h @@ -64,6 +64,12 @@ #define GROUP_ADDRESS 0x0000010000000000LL #define HASH_CTRL_ADDR_MASK 0x0000003F +#define FMAN_RTC_MAX_NUM_OF_ALARMS 3 +#define FMAN_RTC_MAX_NUM_OF_PERIODIC_PULSES 4 +#define FMAN_RTC_MAX_NUM_OF_EXT_TRIGGERS 3 +#define FMAN_IEEE_1588_OFFSET 0X1AFE000 +#define FMAN_IEEE_1588_SIZE 4096 + /* Pre definitions of FMAN interface and Bpool structures */ struct __fman_if; struct fman_if_bpool; @@ -307,6 +313,44 @@ struct tx_bmi_regs { uint32_t fmbm_trlmts; /**< Tx Rate Limiter Scale*/ uint32_t fmbm_trlmt; /**< Tx Rate Limiter*/ }; + +/* Description FM RTC timer alarm */ +struct t_tmr_alarm { + uint32_t tmr_alarm_h; + uint32_t tmr_alarm_l; +}; + +/* Description FM RTC timer Ex trigger */ +struct t_tmr_ext_trigger { + uint32_t tmr_etts_h; + uint32_t tmr_etts_l; +}; + +struct rtc_regs { + uint32_t tmr_id; /* 0x000 Module ID register */ + uint32_t tmr_id2; /* 0x004 Controller ID register */ + uint32_t reserved0008[30]; + uint32_t tmr_ctrl; /* 0x0080 timer control register */ + uint32_t tmr_tevent; /* 0x0084 timer event register */ + uint32_t tmr_temask; /* 0x0088 timer event mask register */ + uint32_t reserved008c[3]; + uint32_t tmr_cnt_h; /* 0x0098 timer counter high register */ + uint32_t tmr_cnt_l; /* 0x009c timer counter low register */ + uint32_t tmr_add; /* 0x00a0 timer drift compensation addend register */ + uint32_t tmr_acc; /* 0x00a4 timer accumulator register */ + uint32_t tmr_prsc; /* 0x00a8 timer prescale */ + uint32_t reserved00ac; + uint32_t tmr_off_h; /* 0x00b0 timer offset high */ + uint32_t tmr_off_l; /* 0x00b4 timer offset low */ + struct t_tmr_alarm tmr_alarm[FMAN_RTC_MAX_NUM_OF_ALARMS]; + /* 0x00b8 timer alarm */ + uint32_t tmr_fiper[FMAN_RTC_MAX_NUM_OF_PERIODIC_PULSES]; + /* 0x00d0 timer fixed period interval */ + struct t_tmr_ext_trigger tmr_etts[FMAN_RTC_MAX_NUM_OF_EXT_TRIGGERS]; + /* 0x00e0 time stamp general purpose external */ + uint32_t reserved00f0[4]; +}; + struct fman_port_qmi_regs { uint32_t fmqm_pnc; /**< PortID n Configuration Register */ uint32_t fmqm_pns; /**< PortID n Status Register */ @@ -396,6 +440,7 @@ struct __fman_if { void *ccsr_map; void *bmi_map; void *tx_bmi_map; + void *rtc_map; void *qmi_map; struct list_head node; }; diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 682cb1c77e..82d1960356 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -1673,6 +1673,11 @@ static struct eth_dev_ops dpaa_devops = { .rx_queue_intr_disable = dpaa_dev_queue_intr_disable, .rss_hash_update = dpaa_dev_rss_hash_update, .rss_hash_conf_get = dpaa_dev_rss_hash_conf_get, + .timesync_enable = dpaa_timesync_enable, + .timesync_disable = dpaa_timesync_disable, + .timesync_read_time = dpaa_timesync_read_time, + .timesync_write_time = dpaa_timesync_write_time, + .timesync_adjust_time = dpaa_timesync_adjust_time, .timesync_read_rx_timestamp = dpaa_timesync_read_rx_timestamp, .timesync_read_tx_timestamp = dpaa_timesync_read_tx_timestamp, }; diff --git a/drivers/net/dpaa/dpaa_ethdev.h b/drivers/net/dpaa/dpaa_ethdev.h index bbdb0936c0..7884cc034c 100644 --- a/drivers/net/dpaa/dpaa_ethdev.h +++ b/drivers/net/dpaa/dpaa_ethdev.h @@ -245,6 +245,22 @@ int dpaa_timesync_read_tx_timestamp(struct rte_eth_dev *dev, struct timespec *timestamp); +int +dpaa_timesync_enable(struct rte_eth_dev *dev); + +int +dpaa_timesync_disable(struct rte_eth_dev *dev); + +int +dpaa_timesync_read_time(struct rte_eth_dev *dev, + struct timespec *timestamp); + +int +dpaa_timesync_write_time(struct rte_eth_dev *dev, + const struct timespec *timestamp); +int +dpaa_timesync_adjust_time(struct rte_eth_dev *dev, int64_t delta); + int dpaa_timesync_read_rx_timestamp(struct rte_eth_dev *dev, struct timespec *timestamp, diff --git a/drivers/net/dpaa/dpaa_ptp.c b/drivers/net/dpaa/dpaa_ptp.c index 2ecdda6db0..48e29e22eb 100644 --- a/drivers/net/dpaa/dpaa_ptp.c +++ b/drivers/net/dpaa/dpaa_ptp.c @@ -16,7 +16,82 @@ #include #include -int dpaa_timesync_read_tx_timestamp(struct rte_eth_dev *dev, +int +dpaa_timesync_enable(struct rte_eth_dev *dev __rte_unused) +{ + return 0; +} + +int +dpaa_timesync_disable(struct rte_eth_dev *dev __rte_unused) +{ + return 0; +} + +int +dpaa_timesync_read_time(struct rte_eth_dev *dev, + struct timespec *timestamp) +{ + uint32_t *tmr_cnt_h, *tmr_cnt_l; + struct __fman_if *__fif; + struct fman_if *fif; + uint64_t time; + + fif = dev->process_private; + __fif = container_of(fif, struct __fman_if, __if); + + tmr_cnt_h = &((struct rtc_regs *)__fif->rtc_map)->tmr_cnt_h; + tmr_cnt_l = &((struct rtc_regs *)__fif->rtc_map)->tmr_cnt_l; + + time = (uint64_t)in_be32(tmr_cnt_l); + time |= ((uint64_t)in_be32(tmr_cnt_h) << 32); + + *timestamp = rte_ns_to_timespec(time); + return 0; +} + +int +dpaa_timesync_write_time(struct rte_eth_dev *dev, + const struct timespec *ts) +{ + uint32_t *tmr_cnt_h, *tmr_cnt_l; + struct __fman_if *__fif; + struct fman_if *fif; + uint64_t time; + + fif = dev->process_private; + __fif = container_of(fif, struct __fman_if, __if); + + tmr_cnt_h = &((struct rtc_regs *)__fif->rtc_map)->tmr_cnt_h; + tmr_cnt_l = &((struct rtc_regs *)__fif->rtc_map)->tmr_cnt_l; + + time = rte_timespec_to_ns(ts); + + out_be32(tmr_cnt_l, (uint32_t)time); + out_be32(tmr_cnt_h, (uint32_t)(time >> 32)); + + return 0; +} + +int +dpaa_timesync_adjust_time(struct rte_eth_dev *dev, int64_t delta) +{ + struct timespec ts = {0, 0}, *timestamp = &ts; + uint64_t ns; + + dpaa_timesync_read_time(dev, timestamp); + + ns = rte_timespec_to_ns(timestamp); + ns += delta; + *timestamp = rte_ns_to_timespec(ns); + + dpaa_timesync_write_time(dev, timestamp); + + return 0; +} + +int +dpaa_timesync_read_tx_timestamp(struct rte_eth_dev *dev, struct timespec *timestamp) { struct dpaa_if *dpaa_intf = dev->data->dev_private; @@ -32,7 +107,8 @@ int dpaa_timesync_read_tx_timestamp(struct rte_eth_dev *dev, return 0; } -int dpaa_timesync_read_rx_timestamp(struct rte_eth_dev *dev, +int +dpaa_timesync_read_rx_timestamp(struct rte_eth_dev *dev, struct timespec *timestamp, uint32_t flags __rte_unused) { From patchwork Tue Oct 1 11:03:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144821 X-Patchwork-Delegate: ferruh.yigit@amd.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 ACFF845A79; Tue, 1 Oct 2024 13:05:25 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5D98F40A6F; Tue, 1 Oct 2024 13:04:05 +0200 (CEST) Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11011032.outbound.protection.outlook.com [52.101.65.32]) by mails.dpdk.org (Postfix) with ESMTP id 4BE7D406BB for ; Tue, 1 Oct 2024 13:04:00 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=J1/26Dd0GxHa7MsuRdja9R9Lnw0wWFdtkcwfMWF8yxdITEcfu4uT3KXh5B8nfR0YbT8sZVmLRG++ESIRbxKuLAwzioxk6e5O4gPLHWOAWofgKCVUlmfsU/P4eOwf9mzn34IL9sxlZciqeEdUFNYFEAstHW0TElF2xHVIP1yUjgtrUH6JJAk2APAQy/A/32mi6QgOv44/KdducmMk9m8I6QyeNpmBvu+uK34d9Cjk8TCTdqlBk3bDaBhVAqjgobauPHhEDWGJZ0x6vZ78hlk9R9ys2gowBk3+55yeWR9bWxbp+FOQeME1L9vaDCSk59EKrFPGG176i5wyxdIgyPjYUg== 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=KOSilZWw22yDsuC5+p2OLO7zFOoOe1Fq5RQEctMPcBs=; b=Facvryg3gua2XLRVJ8Ze8UgIg66Ubnhjvlqf5DvgOhr9bbtJRMU9WkYWzul4LrHyzgRJkL/K7Ho7EnAMVPbB0CiW60rEI1DtIYukDaPDYHt24qLEjoW3z0lWVdoo2Y2RfbFnuCt4I+cehR3p5DkI8kcnGoFG166H+3RyrWjtWmSmmvjfcpRO+neuOIpZc7xwVoxQDJGnZ9NpL9dp4Q5UTuRb7w/NGWC6oCtDRInhIUUP+79oiXK22bKpXLws6RtILI9U6/AmAM6zo354M2viVmN5pzycr64NCjp0fzZPwQrfMFFOD+A4WxJVhjZN6jiHq9KfGGuUN7fmgnALEHhBJw== 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=KOSilZWw22yDsuC5+p2OLO7zFOoOe1Fq5RQEctMPcBs=; b=nFbYaBrxNXdvBE65lk2GKo3OxEEjH+exg9bmyvR9Ms0YTC/Cci0x9eWwQNi3BGEj2gBuJCJbsYHNi+tm+pY4X5oOoKg/upzlqFNX3nvQ25Uu1mXHkooJj6hrakpGbZexHQA28AkJsjDri+papevlhq9cJGAZgYdLWxFEufNxUs+blSZ5zhy7WIaRsqwJ3iQpS5NqXSxcGFFO/d8PG3zeVe71CwaQScl3dtPZv3IsZ9LQ3aei+HDPh3W+o2W95PpyEwF80SLE/1bgKewTJ2xYINm04NoOWa6kuTUuLgv2uSAcL+3XD+S3NV4UsiQybm3l9iCvgMVd6hG6JiOkGmeKmw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:03:58 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:03:58 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Jun Yang Subject: [PATCH v5 11/18] net/dpaa: implement detailed packet parsing Date: Tue, 1 Oct 2024 16:33:18 +0530 Message-Id: <20241001110325.4173762-12-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: cd6e3ee1-9755-4bc1-37e8-08dce208bfdf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: zuOEA+Vi5oI1rnreaSJ8yuQXOwxpj3PcxE80VqoUlCHP7h3NKn3XDfVqrp1JqRquEWr6GspApRVUAubr9BDC8wdIb3Eg9OBvzb0BogCQlLFrWW1/f67FW3zQ5POaUFfsQ81mgJAtj2PXkBbAYFKoDJ/2Izwn6L9AL4Ctg3crBn5F9Pdy9fzynGdm0ezPi4s5RazGP/2R+FYJ6yeBVdMVPvVUlXFD2t9Aesec7PMg8nQ2GoDPZzfXN0xyKCDtLnzYsWLEDr5fHTVuEmmPPfashuJ4aBNQ/UomPtCGwX9iMdvGNRy0BrVGCU0dcU1NV1wrNIpx/xsMuBAHnp5OaRdXqLPFtxGKwaze5Cdca7rSjNNsspnaTj7oFAo2fEEO5DMpGgkK3QwuvScWK1HP857l9gyeM+nkUTETTRmbOi0ARcSlc76pxC8IPiTl04kI4Fvtktmx5HM0zaS8V2fzU3M17Uqvy9MrkCtdyBUn6Mvu2TFPrCnPSlz1/gbnfx/4OQkB/2WZ/hXZgHCIjb+YOpasmNEBCpXSvPChzdl28dUecVtnX9WnP5mSLISzQWb4ZPwW8kFLR9AU3WX2+oA54iVSSKz7VIhAS1L8F9AZja9m9gxHF7UyX8ThJ2OR6SVWFhjEkUgMfhBGv8M0rtV/Qjqb0R6gTShxRkO/D41rsUeWS4MJBNGMN3QN983ESy2hIEMl418pBICU7TSQ5IrHhdgQFDbqO4Vj2GeOxiXI6UkI2HQJX3cSjpBtyLj42dq/0HGsBFcRS44gi13ZICjX9k/PqVYTr4qozBoYCezWw8g6+UXq6ZqCR2PHnT5mLlCe4Lqr/cDHnAddjhvOMTnMwYXE30be6OvE3oDJ6S8NomBGch1Syu3a8EunNxilv0Rplka61LRdyB8fax6elkCoQHGVeMSFn7X7LcORxWe7xb7OhUjflsLcsnRUNncbhsKuvihv0h3cYYTCVhRT9lnsP0TvDvXueyxudq8P0XwL7o9w3bLip7PaNK+SsL/xsEm76ABYLY+6pCQUfClVIXD2Le7uzr3OC7qCDujlKbB8pzAfskORvxAskyqe/9rA+9dAGp8oo68VvyU9cL2TlaQv5v+zbv1t8ZvnrED4R8tH3Dy+Qpdougwt7tlCUAipXdQ8F8CvXeZ84gClWbpBQkoy4EJw07QbwuPEkB3sjSH4owVd7WVnkAm0xTbThZHCNf5KcnznIg2w13Mev51dN+L8PKGXBS/cibXFro9l9LIwjcM11uQ+DaZiOSwy1Qc3xwT+jCLlBN4buA2tHMFR7+a9QWfyHpjVOWd10qivav5ra4N90Cnkizz+7KyAaULST4F4KecqLrqdQgPf24wiBcgJ8If/5g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uxrmY8hDIvdtjT6rog6dZD/6D6oUsrDs4ymM1i8GAVBYg/BbTgn44xp0O46u5R1N3ynWyEVu0tyJCTla8p/sVnzhco969wIC68CFDI9zZBhhPmAV3sc74RWJPxbbrMHdl7iLLC8DyaU0mcoA7NjwyTC7S3MtHjS35ghihReCkeKTuk0dACHneVYNJQr3Dywisa68QE6TMMGuctnGA0/SpCDnYNWAzjNWZNBfa6+XiugSxjZCRev8QcbV+X4DR3DN8fehR7fcHiingfqOQ4USkQLVagbHj6nUcQ4w9VhqjFSsJvvtSm1bzBTeiUFUbTEHvAt9j7bIrhntoypGAfK/wPp8eG9d7kUORZR0Vz4NsTuHxDWoeKOcUyFxmwvh8w7+1q4Rctn4jom83hqJ3yWzvLFmd49iMn/vNuizwU2p4hxRor/kRNMn08a/to14oKPOAeGQ7oRgub7xn9hlKrVsDkCBfIjnbpcqgDrxVcTwXdQtc6fGZ3a99z2oOdCtVfzKVO0LWYB9vynK1Uod7HE2X+7fcHxkRlw1lzdEO3Wwv+dkKEZUfUCERtTyU6ZF6AZdswFAeJVyOjRplSGPQLNC7SYAGwRkz6rxR032hSi5B8/mqUhflCxOoEcLsCENP/3xNP2opXWr5YuTVY8U42PlayRVENXDToACGLPHRvUcDx8R1qz9eELwej7q4obMY1MAPvQla8QTVWqNIabQkylaljUqnYrkfMWyuIRHwLWywn9Ww6VToq+TKcFeZp2/02NlsDxEmVQm3uFt0IeTtI6m1M3u+VYdkaF+tsapqS7I1S/k1t6naes4ZB5qyi72N4lBq6DfAImGdeQm9hI1nJHO4rzitJy0yk8/sltnJqC8n+QB16S57nC8NPcR6lTErqxvh+z415nQc1877ll5LuiOo3aEqqQbQYQdlz742kZx5Eff0J2xtn0hpGOjO5wxhCLzz4oomt6JF6UoE5kVLHB+MNLTi1F94b3G8TynaEE3s/T7ZLV6gkCV0bnJw4TlKWikgV4pVt63YK1b5IcIeAlRHq2W63T3ss0Ro4bmHypu0D+FBiPDV/chBB+77CGWWeTmJroqzTvHcPfKp9auY8grdWHuPOPfHtDehM+qMHPXfHRNzyEaWw6oxrjyNwPoQIkPzdxcJgr56QlhkfDcEVOScfec6Wx+/Z4j9fDfDcgXbBXfWIXRiBI9MNz/migimjoePLokPZAVGX9aXZIVJzifiCpDaz/ufSj1JDB3KhGtEGdYcJ/Y4GQ1YwjO/NoLvDMGJqm26buduX4+t+5S4Yde73wklW6SyGBvz+OtpFK2tMWakGu7FUIvonr7K+kIgPNmOqYARv1n7/7ze3MUZ1FSgcFk2Xq9U2Wde/WEC/fxbKFLzqm0zpigoovGYyb4XpYmgZrM9fLQRm6rUJQM/I/dcj6o7hYpM8B1zuNYq3mRb08bR0ieMoKOZJAE9JwyRKbUINLsm8vEqpWGoZJ8cLFVMENOl4nWcy/WqxM8lLm6x9Iv+JLoO5tQQy/JVvN/QRkyyYyisJ61oodus9pd6Geotsp8UysO33//GqStz11v9Dd9aJoEpSm1ze5FIrIhxeJczhLTA/Ahhj0Kua0n8zOcpw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cd6e3ee1-9755-4bc1-37e8-08dce208bfdf X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:03:58.7725 (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: +GXRWuGMAgE36xvT4I59AL726H89gqFtYRYNbjLcNEyCsNnynoLr/jVUZK2aij4xqIvqFG03LLsAbDl8g2VKlQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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 This patch implements the detailed packet parsing using the annotation info from the hardware. decode parser to set RX muf packet type by dpaa_slow_parsing. Support to identify the IPSec ESP, GRE and SCTP packets. Signed-off-by: Jun Yang Signed-off-by: Hemant Agrawal --- drivers/net/dpaa/dpaa_ethdev.c | 1 + drivers/net/dpaa/dpaa_rxtx.c | 35 +++++++- drivers/net/dpaa/dpaa_rxtx.h | 143 ++++++++++++++------------------- 3 files changed, 93 insertions(+), 86 deletions(-) diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 82d1960356..a302b24be6 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -411,6 +411,7 @@ dpaa_supported_ptypes_get(struct rte_eth_dev *dev, size_t *no_of_elements) RTE_PTYPE_L4_UDP, RTE_PTYPE_L4_SCTP, RTE_PTYPE_TUNNEL_ESP, + RTE_PTYPE_TUNNEL_GRE, }; PMD_INIT_FUNC_TRACE(); diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index e3b4bb14ab..99fc3f1b43 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -110,11 +110,38 @@ static void dpaa_display_frame_info(const struct qm_fd *fd, #define dpaa_display_frame_info(a, b, c) #endif -static inline void dpaa_slow_parsing(struct rte_mbuf *m __rte_unused, - uint64_t prs __rte_unused) +static inline void +dpaa_slow_parsing(struct rte_mbuf *m, + const struct annotations_t *annot) { + const struct dpaa_eth_parse_results_t *parse; + DPAA_DP_LOG(DEBUG, "Slow parsing"); - /*TBD:XXX: to be implemented*/ + parse = &annot->parse; + + if (parse->ethernet) + m->packet_type |= RTE_PTYPE_L2_ETHER; + if (parse->vlan) + m->packet_type |= RTE_PTYPE_L2_ETHER_VLAN; + if (parse->first_ipv4) + m->packet_type |= RTE_PTYPE_L3_IPV4; + if (parse->first_ipv6) + m->packet_type |= RTE_PTYPE_L3_IPV6; + if (parse->gre) + m->packet_type |= RTE_PTYPE_TUNNEL_GRE; + if (parse->last_ipv4) + m->packet_type |= RTE_PTYPE_L3_IPV4_EXT; + if (parse->last_ipv6) + m->packet_type |= RTE_PTYPE_L3_IPV6_EXT; + if (parse->l4_type == DPAA_PR_L4_TCP_TYPE) + m->packet_type |= RTE_PTYPE_L4_TCP; + else if (parse->l4_type == DPAA_PR_L4_UDP_TYPE) + m->packet_type |= RTE_PTYPE_L4_UDP; + else if (parse->l4_type == DPAA_PR_L4_IPSEC_TYPE && + !parse->l4_info_err && parse->esp_sum) + m->packet_type |= RTE_PTYPE_TUNNEL_ESP; + else if (parse->l4_type == DPAA_PR_L4_SCTP_TYPE) + m->packet_type |= RTE_PTYPE_L4_SCTP; } static inline void dpaa_eth_packet_info(struct rte_mbuf *m, void *fd_virt_addr) @@ -228,7 +255,7 @@ static inline void dpaa_eth_packet_info(struct rte_mbuf *m, void *fd_virt_addr) break; /* More switch cases can be added */ default: - dpaa_slow_parsing(m, prs); + dpaa_slow_parsing(m, annot); } m->tx_offload = annot->parse.ip_off[0]; diff --git a/drivers/net/dpaa/dpaa_rxtx.h b/drivers/net/dpaa/dpaa_rxtx.h index 1048e86d41..215bdeaf7f 100644 --- a/drivers/net/dpaa/dpaa_rxtx.h +++ b/drivers/net/dpaa/dpaa_rxtx.h @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause * * Copyright 2016 Freescale Semiconductor, Inc. All rights reserved. - * Copyright 2017,2020-2022 NXP + * Copyright 2017,2020-2024 NXP * */ @@ -162,98 +162,77 @@ #define DPAA_PKT_L3_LEN_SHIFT 7 +enum dpaa_parse_result_l4_type { + DPAA_PR_L4_TCP_TYPE = 1, + DPAA_PR_L4_UDP_TYPE = 2, + DPAA_PR_L4_IPSEC_TYPE = 3, + DPAA_PR_L4_SCTP_TYPE = 4, + DPAA_PR_L4_DCCP_TYPE = 5 +}; + /** * FMan parse result array */ struct dpaa_eth_parse_results_t { - uint8_t lpid; /**< Logical port id */ - uint8_t shimr; /**< Shim header result */ - union { - uint16_t l2r; /**< Layer 2 result */ + uint8_t lpid; /**< Logical port id */ + uint8_t shimr; /**< Shim header result */ + union { + uint16_t l2r; /**< Layer 2 result */ struct { -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - uint16_t ethernet:1; - uint16_t vlan:1; - uint16_t llc_snap:1; - uint16_t mpls:1; - uint16_t ppoe_ppp:1; - uint16_t unused_1:3; - uint16_t unknown_eth_proto:1; - uint16_t eth_frame_type:2; - uint16_t l2r_err:5; + uint16_t unused_1:3; + uint16_t ppoe_ppp:1; + uint16_t mpls:1; + uint16_t llc_snap:1; + uint16_t vlan:1; + uint16_t ethernet:1; + + uint16_t l2r_err:5; + uint16_t eth_frame_type:2; /*00-unicast, 01-multicast, 11-broadcast*/ -#else - uint16_t l2r_err:5; - uint16_t eth_frame_type:2; - uint16_t unknown_eth_proto:1; - uint16_t unused_1:3; - uint16_t ppoe_ppp:1; - uint16_t mpls:1; - uint16_t llc_snap:1; - uint16_t vlan:1; - uint16_t ethernet:1; -#endif + uint16_t unknown_eth_proto:1; } __rte_packed; - } __rte_packed; - union { - uint16_t l3r; /**< Layer 3 result */ + } __rte_packed; + union { + uint16_t l3r; /**< Layer 3 result */ struct { -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - uint16_t first_ipv4:1; - uint16_t first_ipv6:1; - uint16_t gre:1; - uint16_t min_enc:1; - uint16_t last_ipv4:1; - uint16_t last_ipv6:1; - uint16_t first_info_err:1;/*0 info, 1 error*/ - uint16_t first_ip_err_code:5; - uint16_t last_info_err:1; /*0 info, 1 error*/ - uint16_t last_ip_err_code:3; -#else - uint16_t last_ip_err_code:3; - uint16_t last_info_err:1; /*0 info, 1 error*/ - uint16_t first_ip_err_code:5; - uint16_t first_info_err:1;/*0 info, 1 error*/ - uint16_t last_ipv6:1; - uint16_t last_ipv4:1; - uint16_t min_enc:1; - uint16_t gre:1; - uint16_t first_ipv6:1; - uint16_t first_ipv4:1; -#endif + uint16_t unused_2:1; + uint16_t l3_err:1; + uint16_t last_ipv6:1; + uint16_t last_ipv4:1; + uint16_t min_enc:1; + uint16_t gre:1; + uint16_t first_ipv6:1; + uint16_t first_ipv4:1; + + uint16_t unused_3:8; } __rte_packed; - } __rte_packed; - union { - uint8_t l4r; /**< Layer 4 result */ + } __rte_packed; + union { + uint8_t l4r; /**< Layer 4 result */ struct{ -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - uint8_t l4_type:3; - uint8_t l4_info_err:1; - uint8_t l4_result:4; - /* if type IPSec: 1 ESP, 2 AH */ -#else - uint8_t l4_result:4; - /* if type IPSec: 1 ESP, 2 AH */ - uint8_t l4_info_err:1; - uint8_t l4_type:3; -#endif + uint8_t l4cv:1; + uint8_t unused_4:1; + uint8_t ah:1; + uint8_t esp_sum:1; + uint8_t l4_info_err:1; + uint8_t l4_type:3; } __rte_packed; - } __rte_packed; - uint8_t cplan; /**< Classification plan id */ - uint16_t nxthdr; /**< Next Header */ - uint16_t cksum; /**< Checksum */ - uint32_t lcv; /**< LCV */ - uint8_t shim_off[3]; /**< Shim offset */ - uint8_t eth_off; /**< ETH offset */ - uint8_t llc_snap_off; /**< LLC_SNAP offset */ - uint8_t vlan_off[2]; /**< VLAN offset */ - uint8_t etype_off; /**< ETYPE offset */ - uint8_t pppoe_off; /**< PPP offset */ - uint8_t mpls_off[2]; /**< MPLS offset */ - uint8_t ip_off[2]; /**< IP offset */ - uint8_t gre_off; /**< GRE offset */ - uint8_t l4_off; /**< Layer 4 offset */ - uint8_t nxthdr_off; /**< Parser end point */ + } __rte_packed; + uint8_t cplan; /**< Classification plan id */ + uint16_t nxthdr; /**< Next Header */ + uint16_t cksum; /**< Checksum */ + uint32_t lcv; /**< LCV */ + uint8_t shim_off[3]; /**< Shim offset */ + uint8_t eth_off; /**< ETH offset */ + uint8_t llc_snap_off; /**< LLC_SNAP offset */ + uint8_t vlan_off[2]; /**< VLAN offset */ + uint8_t etype_off; /**< ETYPE offset */ + uint8_t pppoe_off; /**< PPP offset */ + uint8_t mpls_off[2]; /**< MPLS offset */ + uint8_t ip_off[2]; /**< IP offset */ + uint8_t gre_off; /**< GRE offset */ + uint8_t l4_off; /**< Layer 4 offset */ + uint8_t nxthdr_off; /**< Parser end point */ } __rte_packed; /* The structure is the Prepended Data to the Frame which is used by FMAN */ From patchwork Tue Oct 1 11:03:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144822 X-Patchwork-Delegate: ferruh.yigit@amd.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 57E5D45A79; Tue, 1 Oct 2024 13:05:35 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 044DA40DCD; Tue, 1 Oct 2024 13:04:08 +0200 (CEST) Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010063.outbound.protection.outlook.com [52.101.69.63]) by mails.dpdk.org (Postfix) with ESMTP id AB0014069D for ; Tue, 1 Oct 2024 13:04:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nk8X4YWnuzi2GxCVxn9DeYMByI07aGpHfaLRWlPl0KPrRHlTEBWHCaCAvmwQfF7oYxmE6MyIwSUduiEiS4Y+qTPgHxb6fgr2+vZd1FptWJMX0/ngOdLqdzL7zOFCdkOGAt0I8lfq8qdzopIzEQB9sdiGuaFBA46n889C31o/Aikf0CeAk7f3zpJ1BlEnyCPJJ+VBYYpe4aj5wDpQj7/wq2PwXzuLhxZW9TFc6aVOCZ48Eg6NEENRWxcsM/wkR4SwMMlzxgY1eSLPCN89mPMcMNAmZJH5reK32aUCoyNeilaOpNSZxO0qlJzsim6FFY5XKmAvM8KyjgvTn+GHxqiaOA== 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=vrr0W9Y4JWVDY974GQ5sb7u8NEO1zaLgrv1+Jg+xRfg=; b=EBtHC0/p41zRQNhuTlItcSb29UxnwBL99UUpzznMQ3wSoLoRaGqUNcDvLNNho+j7wtLzQ+GT6vH6RGLpkK0PJS2wI2LwRU+xDAlxXvo7SZg5zvBww5/B6ymr+kB++t+oCk8+bGHuzqyNpt8w8q68oZjeC9gfLNT6xwG97DqK4LYiHlC2Km6NCSjmOAq2i1g2yOpVG6J9laHD9kG9K71DNJ+IiLzSLH8FdmHFf7V94pi92I/4fOH8YGIARqsdFkmTy+szfUeCbIPHCoPClr4hvvq4muIKFmLsdCwP/UTi6fvc0pIkEFfzTyRrYwXSP4DJ9+uuu0pB5E4bhDw+TAEaPg== 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=vrr0W9Y4JWVDY974GQ5sb7u8NEO1zaLgrv1+Jg+xRfg=; b=FZ0FugcMfN5XJBuil+pNJMeKzy7OTk8Pgq5VMXPBwVJB31N3WasragMqjkctrNNW9nO9+rjilHXdC2p94enm4Z3NQ1/vKqiuNHWmdIa8uPvtEFdHkivIiQdihX/IBbWx2QuPMEa7HngIleWzephaqPt5FKL4eYJs0Ihm/ngE64Zg8O027d6HRlSyH9Z24dMGxZYttFQlif1JNDM6lWnwZOFkNrEm2t3O0Q15jNqlw/Y6jjCTQb+qO6YM1mY5Jhnt2QsFTL252ArD12ELAdhtOenWoKwR1PDI6eiPHCfQapVrCiiExEL21V7kHUAZOJ706ewHhMP1Y81TNskDiDqXSQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:04:00 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:04:00 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Jun Yang Subject: [PATCH v5 12/18] net/dpaa: enhance DPAA frame display Date: Tue, 1 Oct 2024 16:33:19 +0530 Message-Id: <20241001110325.4173762-13-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 2ab2c859-7440-404a-b45c-08dce208c0a8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: EKZ2viI1SXD7QcrC83OcaQR8genXp1tjp1YmxDv2CJgXMgaDF6DqeUiqxOGyfhNsODQ6d/EPGSBgPvaw9dDM4r04zpskTQY2Nd8fwjWN79yF8G0vDrmmG2P0Ya+K2ylsJseJ+e+f1WzzTZXke326396wHo59ebvBtzZoOPgExfua3JYG4H+fflfK3f6n5WrSxdRTeP4r2CLhvNqwjO3MXQDsl9cE2hp3SOX9i+bBPLf+AzzmSsOI1a6i0fyATZS33+OBS01TGKSC4g85TCbII3tOg2TeP5bUD+tQUlYuhxPadIaHPK8L/mzLuTJSTPcPtCGnP2DypzPAQpHsAoZYxvfp/DY/W1/ap/ZqyguPMq56g95hHiqamCG7xKgKCSjjGK9jhQgpR7ptFSRZY2UZOGrYh90QK2cyXKLogJATngoJbG9+ET/tpCrUNomhp+SSwNbN4WudIgLmZL9Rw4+tnf5BkBmceQR+7Zdg7kbVKTS462NlIFKNLAnFLVJ7+E/8vgi7hpW7h0a4ZnvsUoAJ7H+jC0DEn99BDto+S0rIyPP5FceenXgEWOXt7DL2F3Lo6j6TaSN/WFg3A2ffd29qS4Dx6M9T6uTqUHCbVulhfcpfeRTr1WYT0bEhrmgv1OhVjT7sT3hvqAV8h20k/S2+j+kFmjoBT+vDjIhXIF8Tjrqf2WqdvfCZADM37VfiGidhdxYuEKGIk+YRdhhz2t9UuNdeRwqmUGwk+f+gILn2OcWz4Cuz0JwpYZc70pQXPsK4OTr2nGuCqXQ5HUQ3v2P7OHFKgEZG1xZ+qDvPHBFSb2WFIvjmEbfDAMIKdKJ5dEhl3LqTbmTlqIRty0CkRivaa13fgTCPN+95ako5vbLWFeJ77HDdTRolyD94m+NLrH5BUldozOySzEwU8SpHngp4t1YJer+iCLVy445Z8NxwxMUdnmQySOh2j40yDrwwnIG91cWBG4metzmU3z+rzhVHhNC89SJOJ+ONjqhZS7f+AAiKI4O35UeEsKpM/9cnvxU1UsbRqLyHMMAKcsvmpVQPXpVGGmp5pwjJW02x0ZLhIvRedn0OxB4eN9ypHPMr4J6hYQGawm/UuoHL2T+5NAZG9U4KATV+fIqhfkcgiCK1rcX64Tx3ss9NzAux/hlPCkcMrkGWJp7/MchG+62e9ElBvZKjBkYoDhOksl5dNz/Je0qTZ3Jh6JtAeRRtR/3cJ8bFlm7CmcZaDsC6bP8YQrJc1/GEDSlsfj1rUMY3jCT5j06QgwmEvIPqB4C1PIasDWafzqYlZpBQSQfP+kSfUsXXdSHtPR9pl1JxObKFkTApsGzhHuFm4OnSaGkMzmOGcXynUjeVDCgHHQPlaAAMJjR1WA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: S2yRtrAGUh2uDx3Fv4Ojxt3DLk4/AKD5wrurnrgd0GEE/0aZYbBOMiIoz7G+LNb7KnODHPXy1o7GPfZCoIIQfrYum9LGRPtCqUlJ2hHwH4Vq7Xyos/gY8cC9DE54IWoLCWZDfgZvc8PG0rnd2nokHECJ/3wCe4zofDgobvzAjgHgCJ1ikwJbaqzaouduzITfe1zUAka2Bg1hASKyr18Fh5JqlusezgG4KORkeBrwQ1jDhs58iUqkTwa86YkOAZLGF44qmj9fvsZ19ffkxNrc97lp5L8Vg+5dJ3BZFW+CcwsB12XdyoVVSHsPYuY8XeRxCzm2fe3yRk/eppH1tg5y5yeilx0XSNIwSEY81D42sbRpaG8mwBA0C34EMAcxCyBrBptLaTy1zgTy5s7gQAzFrmMDV2WbM2ohkFIA6X4w2DQ9RAwocpeLOPZA8/AseMd3uiOuz+mTsG6uNFnPkE6WzKiJmKy+vKqE3o1IpBzDw7PKJMpD6hCuvQQLU8QZVyRlDkQBFlBBV3GfopRPWiIy6rNGU1n4L1VuimV1CO8QdrQCcuXypo/VmlGi/tBmNt8l5klqj9L7H6ubJxQuSlrpWE5idTHccTXmjW5EBSYhtbsgcPs8sIi2GX+/00M6Fj9WcFaQr9Iu1rlRwvu/VqfD+K+2bUxTJWvh37ngifLOYUD330zGZ4Xdl/LR2LYH7pC285qTDKlPzvdOKMd1+KeRYbKbxdHUlSWEI3k1fCyQXh0Bap4yeCou0+jhariWi7JsA2kx/+cUIZBnvKFeH6aQLNwVxLv0ZTHtdWRMNDOvEaSI24KD+NmBBP5f6WmdJ8rcOtUkXrpZRHBQdHo/EHKUKtWvbe/yzQv2Pab6WhjNHxo0cq3wvx96JvVoe7SBZ4u7jjdwOsLz7QfzBp5UFDZfp4EvQiuKGdGjpXKZZmlbW6Kn7NiI66bC3jHHHpfJtBEhj6P1eKyuPc24ZBpUxJiPJfGqBk7rV2BJQ0WEEIjA79dBNSI4KLhw6W+v+CoVhOtQMR/+hKx1FFl2W41MEVYV2CspXbvmNMOPaqsmEqyaCxtanPFTi/Dh2doLMAEbfKVrhrHMUOqHMFexfV72431kfOzmoserjH+2LSOUn03FF6ZGlgKSuzWOUTCU/G5spN9OATH/4LYLAIPsWpwZcPH5TtUTyyhC8B+dT1h7LDR0R0tNM3TJ1zB+OuuY6FIDaIIpsXrJoGWXJA+PO95zLcFRRUFApl/K8mPysk0ob6Hpiw/1gGbOwjOjxjLT1o9VP+sbqbXMTzu3QGY0oT5KB+EGwn6yTex0z3LN3KD0Bn7xP2BCmNcoUX/+JYLAcexf/lCZf0YKmucAphPl74/SKHJ+ST9kLDaQj0vUeBvKLA4JlNAAtsIPSgUuuu4835T+i02Q/5qATBbhfPlCq7LHRC/iO4jluUHCmqp7zD1tN4WZC8HPRz2w6ssAGfXI4zFlZTUCmEiJo2oPfZJLdr2DFFGD6ZS/7cdCQ4BSSkEJ8Lkje58b6/J189+MK7nSFpeID+oVNfm9Sk2w91gtLz4RwGFdnNDoPRvOHLdG43Miw6QT0C6+hCssbummbNDq9/QM2VZxGKN8l7+T9UWLEeGeI9S5lg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2ab2c859-7440-404a-b45c-08dce208c0a8 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:04:00.1485 (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: XFHKK3l+H+nh4WlRxad+xjyHDvD7MChlgV468xg6D02GIj38tsZbYm9cFC9Dbe3SLOpMbntgTFskAiuDxIkBgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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 This patch enhances the received packet debugging capability. This help displaying the full packet parsing output. Signed-off-by: Jun Yang Signed-off-by: Hemant Agrawal --- doc/guides/nics/dpaa.rst | 5 ++ drivers/net/dpaa/dpaa_ethdev.c | 9 +++ drivers/net/dpaa/dpaa_rxtx.c | 138 +++++++++++++++++++++++++++------ drivers/net/dpaa/dpaa_rxtx.h | 5 ++ 4 files changed, 133 insertions(+), 24 deletions(-) diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst index ea86e6146c..edf7a7e350 100644 --- a/doc/guides/nics/dpaa.rst +++ b/doc/guides/nics/dpaa.rst @@ -227,6 +227,11 @@ state during application initialization: application want to use eventdev with DPAA device. Currently these queues are not used for LS1023/LS1043 platform by default. +- ``DPAA_DISPLAY_FRAME_AND_PARSER_RESULT`` (default 0) + + This defines the debug flag, whether to dump the detailed frame and packet + parsing result for the incoming packets. + Driver compilation and testing ------------------------------ diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index a302b24be6..4ead890278 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -2056,6 +2056,9 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) int8_t dev_vspids[DPAA_MAX_NUM_PCD_QUEUES]; int8_t vsp_id = -1; struct rte_device *dev = eth_dev->device; +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER + char *penv; +#endif PMD_INIT_FUNC_TRACE(); @@ -2135,6 +2138,12 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) td_tx_threshold = CGR_RX_PERFQ_THRESH; } +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER + penv = getenv("DPAA_DISPLAY_FRAME_AND_PARSER_RESULT"); + if (penv) + dpaa_force_display_frame_set(atoi(penv)); +#endif + /* If congestion control is enabled globally*/ if (num_rx_fqs > 0 && td_threshold) { dpaa_intf->cgr_rx = rte_zmalloc(NULL, diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index 99fc3f1b43..945c84ab10 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -47,6 +47,10 @@ #include #include +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER +static int s_force_display_frm; +#endif + #define DPAA_MBUF_TO_CONTIG_FD(_mbuf, _fd, _bpid) \ do { \ (_fd)->opaque_addr = 0; \ @@ -58,37 +62,122 @@ } while (0) #ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER +void +dpaa_force_display_frame_set(int set) +{ + s_force_display_frm = set; +} + #define DISPLAY_PRINT printf -static void dpaa_display_frame_info(const struct qm_fd *fd, - uint32_t fqid, bool rx) +static void +dpaa_display_frame_info(const struct qm_fd *fd, + uint32_t fqid, bool rx) { - int ii; - char *ptr; + int pos, offset = 0; + char *ptr, info[1024]; struct annotations_t *annot = rte_dpaa_mem_ptov(fd->addr); uint8_t format; + const struct dpaa_eth_parse_results_t *psr; - if (!fd->status) { - /* Do not display correct packets.*/ + if (!fd->status && !s_force_display_frm) { + /* Do not display correct packets unless force display.*/ return; } + psr = &annot->parse; - format = (fd->opaque & DPAA_FD_FORMAT_MASK) >> - DPAA_FD_FORMAT_SHIFT; - - DISPLAY_PRINT("fqid %d bpid %d addr 0x%lx, format %d\r\n", - fqid, fd->bpid, (unsigned long)fd->addr, fd->format); - DISPLAY_PRINT("off %d, len %d stat 0x%x\r\n", - fd->offset, fd->length20, fd->status); + format = (fd->opaque & DPAA_FD_FORMAT_MASK) >> DPAA_FD_FORMAT_SHIFT; + if (format == qm_fd_contig) + sprintf(info, "simple"); + else if (format == qm_fd_sg) + sprintf(info, "sg"); + else + sprintf(info, "unknown format(%d)", format); + + DISPLAY_PRINT("%s: fqid=%08x, bpid=%d, phy addr=0x%lx ", + rx ? "RX" : "TX", fqid, fd->bpid, (unsigned long)fd->addr); + DISPLAY_PRINT("format=%s offset=%d, len=%d, stat=0x%x\r\n", + info, fd->offset, fd->length20, fd->status); if (rx) { - ptr = (char *)&annot->parse; - DISPLAY_PRINT("RX parser result:\r\n"); - for (ii = 0; ii < (int)sizeof(struct dpaa_eth_parse_results_t); - ii++) { - DISPLAY_PRINT("%02x ", ptr[ii]); - if (((ii + 1) % 16) == 0) - DISPLAY_PRINT("\n"); + DISPLAY_PRINT("Display usual RX parser result:\r\n"); + if (psr->eth_frame_type == 0) + offset += sprintf(&info[offset], "unicast"); + else if (psr->eth_frame_type == 1) + offset += sprintf(&info[offset], "multicast"); + else if (psr->eth_frame_type == 3) + offset += sprintf(&info[offset], "broadcast"); + else + offset += sprintf(&info[offset], "unknown eth type(%d)", + psr->eth_frame_type); + if (psr->l2r_err) { + offset += sprintf(&info[offset], " L2 error(%d)", + psr->l2r_err); + } else { + offset += sprintf(&info[offset], " L2 non error"); } - DISPLAY_PRINT("\n"); + DISPLAY_PRINT("L2: %s, %s, ethernet type:%s\r\n", + psr->ethernet ? "is ethernet" : "non ethernet", + psr->vlan ? "is vlan" : "non vlan", info); + + offset = 0; + DISPLAY_PRINT("L3: %s/%s, %s/%s, %s, %s\r\n", + psr->first_ipv4 ? "first IPv4" : "non first IPv4", + psr->last_ipv4 ? "last IPv4" : "non last IPv4", + psr->first_ipv6 ? "first IPv6" : "non first IPv6", + psr->last_ipv6 ? "last IPv6" : "non last IPv6", + psr->gre ? "GRE" : "non GRE", + psr->l3_err ? "L3 has error" : "L3 non error"); + + if (psr->l4_type == DPAA_PR_L4_TCP_TYPE) { + offset += sprintf(&info[offset], "tcp"); + } else if (psr->l4_type == DPAA_PR_L4_UDP_TYPE) { + offset += sprintf(&info[offset], "udp"); + } else if (psr->l4_type == DPAA_PR_L4_IPSEC_TYPE) { + offset += sprintf(&info[offset], "IPSec "); + if (psr->esp_sum) + offset += sprintf(&info[offset], "ESP"); + if (psr->ah) + offset += sprintf(&info[offset], "AH"); + } else if (psr->l4_type == DPAA_PR_L4_SCTP_TYPE) { + offset += sprintf(&info[offset], "sctp"); + } else if (psr->l4_type == DPAA_PR_L4_DCCP_TYPE) { + offset += sprintf(&info[offset], "dccp"); + } else { + offset += sprintf(&info[offset], "unknown l4 type(%d)", + psr->l4_type); + } + DISPLAY_PRINT("L4: type:%s, L4 validation %s\r\n", + info, psr->l4cv ? "Performed" : "NOT performed"); + + offset = 0; + if (psr->ethernet) { + offset += sprintf(&info[offset], + "Eth offset=%d, ethtype offset=%d, ", + psr->eth_off, psr->etype_off); + } + if (psr->vlan) { + offset += sprintf(&info[offset], "vLAN offset=%d, ", + psr->vlan_off[0]); + } + if (psr->first_ipv4 || psr->first_ipv6) { + offset += sprintf(&info[offset], "first IP offset=%d, ", + psr->ip_off[0]); + } + if (psr->last_ipv4 || psr->last_ipv6) { + offset += sprintf(&info[offset], "last IP offset=%d, ", + psr->ip_off[1]); + } + if (psr->gre) { + offset += sprintf(&info[offset], "GRE offset=%d, ", + psr->gre_off); + } + if (psr->l4_type >= DPAA_PR_L4_TCP_TYPE) { + offset += sprintf(&info[offset], "L4 offset=%d, ", + psr->l4_off); + } + offset += sprintf(&info[offset], "Next HDR(0x%04x) offset=%d.", + rte_be_to_cpu_16(psr->nxthdr), psr->nxthdr_off); + + DISPLAY_PRINT("%s\r\n", info); } if (unlikely(format == qm_fd_sg)) { @@ -99,13 +188,14 @@ static void dpaa_display_frame_info(const struct qm_fd *fd, DISPLAY_PRINT("Frame payload:\r\n"); ptr = (char *)annot; ptr += fd->offset; - for (ii = 0; ii < fd->length20; ii++) { - DISPLAY_PRINT("%02x ", ptr[ii]); - if (((ii + 1) % 16) == 0) + for (pos = 0; pos < fd->length20; pos++) { + DISPLAY_PRINT("%02x ", ptr[pos]); + if (((pos + 1) % 16) == 0) DISPLAY_PRINT("\n"); } DISPLAY_PRINT("\n"); } + #else #define dpaa_display_frame_info(a, b, c) #endif diff --git a/drivers/net/dpaa/dpaa_rxtx.h b/drivers/net/dpaa/dpaa_rxtx.h index 215bdeaf7f..392926e286 100644 --- a/drivers/net/dpaa/dpaa_rxtx.h +++ b/drivers/net/dpaa/dpaa_rxtx.h @@ -274,4 +274,9 @@ void dpaa_rx_cb_prepare(struct qm_dqrr_entry *dq, void **bufs); void dpaa_rx_cb_no_prefetch(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, void **bufs, int num_bufs); +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER +void +dpaa_force_display_frame_set(int set); +#endif + #endif From patchwork Tue Oct 1 11:03:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144823 X-Patchwork-Delegate: ferruh.yigit@amd.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 DBD5F45A79; Tue, 1 Oct 2024 13:05:45 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A707640B9F; Tue, 1 Oct 2024 13:04:09 +0200 (CEST) Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11010015.outbound.protection.outlook.com [52.101.69.15]) by mails.dpdk.org (Postfix) with ESMTP id E7B2340A7F for ; Tue, 1 Oct 2024 13:04:03 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p+A31QgPyMELNdaboaHqhjVEOB9TuetFDTdwHsiTuNfIqxkqGndbQa0QRPHSVXhMjcOUA8js7pYa26wp1VVwE9PbEH+fYMtlAqfJlEBc1vw9aul3jivoJIhFzLF01V5UvG/4AoCeWQhejMCwR4o1Ah/xRAQKjzS6ltYVoA7+fQ+ILiUOde3xBLOk1sL9tydhsyL+cjKy6YxwZhBBm5aJfMl38ZwEBcKAyNsV3EXqyCztAwZnaivbVP6hgTrICy/9NXCdvA0x+idOmOh6Fs9z7VgzgiNgKWEgaI6hNlQziuXZFxiQsgsAQJnmAa6aTE1UKZUl6AZTl8Aev5ovNZBdEQ== 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=88lhycnP1azZhgbzTwflMvkdTE3cBQd4zrFBMbRfE+w=; b=JunpoMkT4Lc4YeMtN08puFVr8CaN+Ph+QQI+H6LgUdA5uUlrwj/5cCVhYps9cg2TgDWjsoyRvD2rxavVTS1ntEReQUzjHaP5EUeXsonr4/2TlEFAO6AT1+2kvy01McJPV4Jp593KWDfnu9aGcNp4/qaqlkTZ9Az7Udc8cncPwnMM7cgZ5onN344p6o8jeChf6aGuGKRIdm3ZTEhYJgHtdYsixDVBmU39qO3T74tXKFla+oCdxemYZBvllaL0AzLxbNHGX0SBAX6Dpzj5gsketL9Hhgh0ViDSSOk/+emInXoq3bj8gd1xZ6vA80khrB/za7px5FXY2J+SzHQ7Od62Hg== 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=88lhycnP1azZhgbzTwflMvkdTE3cBQd4zrFBMbRfE+w=; b=kkMgdL6qBZXUg9QOGjWuwLxkjJDrBYSQqIe8kvTNld7AWAop74dRkWqujpIURDJhtFvFu21nKpeda1o7etMmbDz+Fde8rqg52jQs5zsIgsZ/Dw0B7AN8ZOIjRcZEJuHhIOIQnk7WA8H7jI8y2wJ9Daz1VqrVBTHAuYEqj7Uq9PGlefxYfgWcziqK2GnLM5Q4t889ctvWKu+F2yNWwuEu2ba2dhgjffagarn73raCX5moDk5lDh37B/AM3O5e4tnX31jaF8OyALz1xmxCNvASrnFufGsXTqvi58kNOPTbqrCwVAwJwsvi2ewO2WwV6+Wv+/VfbTqGERnf3gTnEKTlgw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:04:01 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:04:01 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Gagandeep Singh Subject: [PATCH v5 13/18] net/dpaa: support mempool debug Date: Tue, 1 Oct 2024 16:33:20 +0530 Message-Id: <20241001110325.4173762-14-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: cdd54873-f965-492b-0d02-08dce208c17c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: zl8S9aLzJa5s8C2/rEN+9KFgut26cVSfPQ5bLjmKFW2NQIOqEmxstHBTbag2+k7Ay38lq8jtqO/k0OGQdesakmHqNnc3MYct47dXoAmtP63mVUhDmX7mtuEpJoU4iJWhgeY0JIrqcLWHPgwos8WFiiYdxphCfkTZRUbpjxEmnEFIQqBeHiLg7xH6wIsuIJYB4voarNo3kHRaS1MldB+qh8kgzZ46+Ed77s2WkTMcRHoqMsiC7qgIhiGL33foeCAW0yr+ZDhCY6jV6mKqU9+IZfsZlOHZUGhkYEUTkhyzM7lrSA4qU2dEldd7F7HfRsz2B32tKrVuOgC3s3Aim56LXBCQhO6owdBdIlGaq0Mms6sWaxkmSCdzeDB9kK9gh4JqUmuYl53FEXyigK2A2syMHUFuXGzao5IUCGw/K9qvZqQhi2W4OnhF7nQCwDuXs9RTfwq11NTyWmiQGQcaPq4KYtnia2kQGjtU9NQzrRNktpEaLL9BzTrF6xtuJ9AugIjgt+KBpzrAX3s6YHbMAhtGkfZFzusswgXFfSpJXrO7ARXi6kHdrYHYjEZdmdT/JECgFhkXtQWQrVPM7IrAur0opoYZrEgsDf/OGQbD3UrHLiaJsm2fGoLNBIYT/YOiE72N3LhRC0mrWJoLaD+Ow9DXMaVUpNXByYcooz56oGZGKROKSxUWM0CoFeV1C/rAkA8s1djMmfZU6jZErmPkdH5+ZK61e8qlapOnbjaDTe4wUG5sbQYwM/6QUrcP2Xhnw8KsRS8l0Q8t3OVND9tDH5WqQ5tarj34GH1Z8nBu7JdE4eZKa7E4cy+wTbgRsD7C/XMvhqQCBBx/zIDJ2jxa4sUeXs8/w5MrzamLnqLQXDp1cP5/G9SzjWf4OTZXVFOI+FzzFfXgELGgr0Ma3Zq5Y7ApPb2Bj8qYHiWJk1dbcBotUt25LGWkIZ8qkNALX2VtYk7PwlCug8NmCQ+r7Ch16q3o4adTaYpX2e0JwbLCyDlynemrjcz7Gp0g9lF2XoY2oX6xs4wLuGtMsMDy5fR2ETtSarVVwHtyWnAbs6JqP45+MTcqf0HCiWtu8awfuGA9lGvQ+CHaCqwntEoYK2pQXQpAn8aFfy6Ydk6bqisy/M6sd2xP1I/wVnZWQx9R8S8yVx0pQoDYN2F8CgNnKmBysFg7sQzXyy2Fst9I7/u/uC+dXcwCF7f+7warb+yBZ6QppVXzv36QkuMj0ClZT+cx740nrliJpLO/eYBLxRQEltRbEnpJSfnZZxsRx1ZnuOsSebrGmSGJEWwuU5lYMqwlK1JfwMOTkTsgTHjBvu+JoGrp5frkf843S7joS/V+H6G0wz39hoaApnGiRfrXlVzOzDowFA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xh5ObyXW5Gy+3H+J34w1LKZWXN3QeAOlv+vju1tjO5YmKJnLSg6zEk7g1tGtl3QiOrGEzKlQixHWnAs7vicww9Rz3xNy/NkcKPuYdsc/1YrHL5K7z/czqthRYqoXlp3yFMd+ftaHWt53KfIzcemBibTwKGUeqOuEHjB69C42eFeCEtHNSQOnZwZxUiEq3iNrFmux8nsfcRsjaWBCWMi4pheTCh6LzpHxdwqQLTw8+uFmC+JVARI8XS6kzjHjXnzErnWLbV3C2XuPnbKebmy5oEAU//h2jNf+2uMw2to7NcnW7JbLYbOWJu/xUeg59rAjsFL7RIV22Dv2KWXIvTCMNT1NN8eG1UNZyPaMDzA75XNPLGq8pxSA2mHh8eKhhuxwclclNuV579r9EsG6tds1tnwrpiStZPG4+bZclt+fVIKVPjsqEW7JfhAZTDTmcI9s816eC/JTdGwAPF/0KcCBZchon8Ah0J/q3i2Y7NLIi7slMLjnz4vzbaLIuEnoPJheNPI7bs/2ecxPi9fzQKmELwgCuS5u4/vqHZK6rPPJUlDt15Go3SzMU6MgdfTbqu12qnqr/AGMu99WXqZe/Mf9Q97rB9C5FJrDCJQztFomrn+ntNW4WVSkjBfvISJjlw7XWqmGDwhNUPn2cSG/uEZ7pqjPXFZs7MuFNR2hCfJEUPByq8ma+nmxkQMo3RNvM52n4OTxK1EYHALvVYaelAeVOjEdGJuv+K7h06QkzMjmIo0Tgu/1oF0BWS4Pwr1ESA5LdcAYvs9jeosw44VTd1mQZncMfWKPKJ+dR5LSk5NLQWkq7a9hOCj5hNOlIMc7j7VQZ9zCg0c+9hP4ewfUFR2hrRuU4kpij+4/iW6SHZWzDbXKnvydKV+I08EovtzyH2sGcfQeLnCgwMsB1e7v1FIeB9w9wXcSoWs0dfKqCkeQHSZIWfsRq1xC7rznWEa+RoME5eY+Fgle2vSTfJEXEgcUQO+4eDy5mwjIU0k+YxTGG+Pd9yy97Db/qX6GXwyQ0uhgbmebqMdXGYszKcyH6p/ZtH2ZA3zy3KOPVN6qpo0z+4qEZHyDd8hGmFsinKaRhV5njSeDUoQRlxJRRUAfyBxYjmf7HLdj4DiW3wxVbAK8xGoE6JhcUezsoTXCLr7dN/RCeWKvRJVrf+hHFHZqzZ0LvDfuIAKre2hay69QTG81S0HEZs9mdFjRpf8ieLe2Dw4whhh2K/xl9WLH0VEqFXDKb+sJQB0NzfpCfPH2RXCOmVKssO8UdyxK/9n857ATqerURL/PMPr4tNLf36VaJxQ89FjgKYFqks54wYB/iAlyyrcJqlpnzjHyo0e//2YgxYXcsjwYmbX4vemwoY0niEpXVoQ9VdzaBy1HRbm99wkq2EPH4w0+B4XK5sdl6kqslTt8f4H80BNnij+3o3UvWZzshd4gd6ceertIiI8Tvgjjv01J4ver5xsFv3H9f0rsonG3Xqmf4DVTn4ke2gaF8wNv4BVSTAdNGar2QkfyyNHfPtM8SttZY5SoeZeLp1scIKRokYUnucETwlq7FeksdgkxRdNYk/UoupNGcZaj1fbu92CwtxXEiCW0G6+PnwbqtSye5nMrsoeHpLM7K9KVb8GAqA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cdd54873-f965-492b-0d02-08dce208c17c X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:04:01.5144 (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: TCSIP6R4cZLIsxh3+uetpmcfszFKyh0bnNlForGVdToVasi64B/qpWLzDG7j38W+uI7UYmPdAox9RGvcW/KZSw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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: Gagandeep Singh This patch adds support to compile time debug the mempool corruptions in dpaa driver. Signed-off-by: Gagandeep Singh --- drivers/net/dpaa/dpaa_rxtx.c | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index 945c84ab10..d82c6f3be2 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -494,6 +494,10 @@ dpaa_eth_sg_to_mbuf(const struct qm_fd *fd, uint32_t ifid) first_seg->data_len = sg_temp->length; first_seg->pkt_len = sg_temp->length; rte_mbuf_refcnt_set(first_seg, 1); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)first_seg), + (void **)&first_seg, 1, 1); +#endif first_seg->port = ifid; first_seg->nb_segs = 1; @@ -511,6 +515,10 @@ dpaa_eth_sg_to_mbuf(const struct qm_fd *fd, uint32_t ifid) first_seg->pkt_len += sg_temp->length; first_seg->nb_segs += 1; rte_mbuf_refcnt_set(cur_seg, 1); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)cur_seg), + (void **)&cur_seg, 1, 1); +#endif prev_seg->next = cur_seg; if (sg_temp->final) { cur_seg->next = NULL; @@ -522,6 +530,10 @@ dpaa_eth_sg_to_mbuf(const struct qm_fd *fd, uint32_t ifid) first_seg->pkt_len, first_seg->nb_segs); dpaa_eth_packet_info(first_seg, vaddr); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)temp), + (void **)&temp, 1, 1); +#endif rte_pktmbuf_free_seg(temp); return first_seg; @@ -562,6 +574,10 @@ dpaa_eth_fd_to_mbuf(const struct qm_fd *fd, uint32_t ifid) mbuf->ol_flags = 0; mbuf->next = NULL; rte_mbuf_refcnt_set(mbuf, 1); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)mbuf), + (void **)&mbuf, 1, 1); +#endif dpaa_eth_packet_info(mbuf, mbuf->buf_addr); return mbuf; @@ -676,6 +692,10 @@ dpaa_rx_cb_no_prefetch(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, mbuf->ol_flags = 0; mbuf->next = NULL; rte_mbuf_refcnt_set(mbuf, 1); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)mbuf), + (void **)&mbuf, 1, 1); +#endif dpaa_eth_packet_info(mbuf, mbuf->buf_addr); dpaa_display_frame_info(fd, fq[0]->fqid, true); if (dpaa_ieee_1588) { @@ -722,6 +742,10 @@ dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, mbuf->ol_flags = 0; mbuf->next = NULL; rte_mbuf_refcnt_set(mbuf, 1); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)mbuf), + (void **)&mbuf, 1, 1); +#endif dpaa_eth_packet_info(mbuf, mbuf->buf_addr); dpaa_display_frame_info(fd, fq[0]->fqid, true); if (dpaa_ieee_1588) { @@ -972,6 +996,10 @@ dpaa_eth_mbuf_to_sg_fd(struct rte_mbuf *mbuf, return -1; } +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)temp), + (void **)&temp, 1, 0); +#endif fd->cmd = 0; fd->opaque_addr = 0; @@ -1017,6 +1045,10 @@ dpaa_eth_mbuf_to_sg_fd(struct rte_mbuf *mbuf, } else { sg_temp->bpid = DPAA_MEMPOOL_TO_BPID(cur_seg->pool); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)cur_seg), + (void **)&cur_seg, 1, 0); +#endif } } else if (RTE_MBUF_HAS_EXTBUF(cur_seg)) { free_buf[*free_count].seg = cur_seg; @@ -1074,6 +1106,10 @@ tx_on_dpaa_pool_unsegmented(struct rte_mbuf *mbuf, * released by BMAN. */ DPAA_MBUF_TO_CONTIG_FD(mbuf, fd_arr, bp_info->bpid); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)mbuf), + (void **)&mbuf, 1, 0); +#endif } } else if (RTE_MBUF_HAS_EXTBUF(mbuf)) { buf_to_free[*free_count].seg = mbuf; @@ -1302,6 +1338,10 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) DPAA_TX_CKSUM_OFFLOAD_MASK) dpaa_unsegmented_checksum(mbuf, &fd_arr[loop]); +#ifdef RTE_LIBRTE_MEMPOOL_DEBUG + rte_mempool_check_cookies(rte_mempool_from_obj((void *)mbuf), + (void **)&mbuf, 1, 0); +#endif continue; } } else { From patchwork Tue Oct 1 11:03:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144824 X-Patchwork-Delegate: ferruh.yigit@amd.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 BDCC645A79; Tue, 1 Oct 2024 13:05:53 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 15C2240DD3; Tue, 1 Oct 2024 13:04:11 +0200 (CEST) Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11013000.outbound.protection.outlook.com [52.101.67.0]) by mails.dpdk.org (Postfix) with ESMTP id 67F8040B90 for ; Tue, 1 Oct 2024 13:04:05 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lqA74RyE9YbCmiiUhA1S4kleI5g96OVXRVP1JWKVSmNFtnW9UqzVdp4aPdwZ+2BwMPsfxKF23yf1aoiEy5Ujnx25jUBOTaoi5Boa3QRZ6hNgkhEJLRqY/Tl2zSNW50ULveFbzr3+i0mfBznYtJ21WvjpGGXkwc8O1UxWL0LmByWKU8SWd8++50T9/8cubXJa7W9zWYWwPzH0DljjUlTGCQRGlBecj7nXBPebIsHeQ4sdFPF0UlO5QgjP37SuWvTbPfLvg7x+jvJadJsdxkaaZ97U8pi+D/eB8DXDPwE1AKy/rTuvDJjsLjk/oJIPQCaUMKfjy1EP7bnDNs6BXw+k0w== 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=4zu6HSrzOx+FFjncdbX4u8OjSXE6C9/9N8txVQ/9ciY=; b=ib4lQNMKOsIm9q820vqVkaWxB/nNhe6IT6c/8qeLHGTqSDscOLqdR1Tb5Pc+mnVVMTCF9ZoFfRr+FV0IjKcSIAryNHxrPtqO7DORInIsrxzZ8x8ZDmnO5BbkCS6Sl6J/OZ3j3rjA6aFuez4LhPyEOJdYQRMX8zEUul4sHRRJLrpfkaI8ceJVYFc3B/Rezkc1vHVwEiW9HwxnnXqY2L8FjZD84H20FOAuvtx8nUroGvsrcSRxx1/HhdN/oNIDCS/SHp4PhXn3+FHJHZF4TwVHKpLRzNEor2/xRa4WwqM2o9gcvnDWkKqtNTuqm7MNA+LYb4Oh5f9XlQNDZeRutgaFsg== 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=4zu6HSrzOx+FFjncdbX4u8OjSXE6C9/9N8txVQ/9ciY=; b=Xzsg1/Kdia16DHsY7NWNtYcXa/x5aHKLWMe8Vp3JHst6noDFxDEI06zv1K2Zwyi5PMkrWyDMJBXeKdrrWqkMkpqlnMeU+xb9u74LjTSktGZA57lY6YP6ayHeErHJZvZiAHPM0QPqNZuSFW4pI6KFqtRSj1pg5umqe27XDIG2ggT5weXaMf76WONokwh6TVIRpUgiCbpU0VZfwj9yjqW2FbVrWPGQy32BGDjE6g/A3cXRPPLNiBNdc9nGSCxtn/gZMc99Ow6p7PbyWF211xVdxvBvnA4CFymMAcdv6Npb3f3rf5G7UaBdWvqj28M+kRVg0/dzzHeC4atTIlzC1dwCBA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:04:03 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:04:03 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Rohit Raj Subject: [PATCH v5 14/18] bus/dpaa: add OH port mode for dpaa eth Date: Tue, 1 Oct 2024 16:33:21 +0530 Message-Id: <20241001110325.4173762-15-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 66bfbec9-f23f-4338-02a1-08dce208c250 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: d9CfaJcS4g2ri8vPUgbjY0XnaQ5gxuYYd75njOoa1tBZWM55mniCF5yLk5UfBWBpwyNvYW2LXNjRl89MrkAr7RgrgsEn5nQjWf2o2r7DTIhPquUAb/dZTBxTEzDZRUOzAqMKOXqqWJXNRrK//PtKwhWz2b5LNjuwpUjmrzPamMlLycshqO1TJCKtFsPEVQc26PdMw1pdRvzmN8MSP3xZ6MZ5G8qzMaXFDuyBpT/8vTpH4dsFJP63x34v4Bd4WpDRMRWviOVnQ7uSPmaKvpttL6tmxlRmiWO0I1RUcA0njZhXNtuBULykfs35vu2VJUc09wUldJpp8DiUgUHvHTt8itWJln+N6k5wkUUqBq7Xn5hTx9PU2gR7r3B1VdTksB7ZfK9afbdp2QsmHTC6LeqdfVKmRr2rCNIKH9nDO5SwllDamWxWaFGKGHgW/8fZbJtwIt3ubvdNaZxgXtawiP6C+HLrBKV1regzzIBFsRD4t7vSLklZXyqmhXRXSc8umFIiOK3aik7AINDwFjixVLFXG3/3MxKGxOYZGf1+I4D/WZau6fOJFWBtrs3XQh2zs9/EPYufmHX+cPQ5hZ7QwOLir74KHS1mzKWZ2lIAHc4mwjHAmCMzUWgyMHkXw3CZJIFCWbteWA8/1X4Dup+al/7v99jNND4P9mhEy4rAO/B8T/7NTpAb2q9hhedYtacHx1sHj5LXgnw99I1ed62asXonjtVeJii+yKnrTBvB4RKGVuvhUiWRRLOE+mX++CXcorN9w2YZiQEJziiXrcVDA0roy5hMCMsEjxkBj9m4LXZvEmxU3NC5VfeNkTaBgAnF4cDuMHYvTT1X+YLkbs8b55oB44L6GGcyUdMNLPUbHYJFmTNj0TWt8rnt35XIub5EZJv75V5UIO6jwLe7pBrjFNCm0dI3skIWuJE2B5yLGSs2t/CtwCTpxmb24pbLYnFlKUjzELhEtrNUHVHHPYbinFY/OpuQdpSPPj8vrpLKZkXh1xzVLdCqHch/mh5H63uqb6Vu1krsnbmQa6IDGJ270rPGOsgiqJ9WFeCWhpzezLxoWsSd32L1/wVZCXT+kIVuvXaAO+HYAJjpTL5M+OsM667YzzUT24oIJyVt4GIinY1fIRufc3ramsiPLEsvdmJpNJ1+P3L8LIFGBgmaQNxGlEcnWjObm/AAILXX9BTFtVh4raKlD6Y9nzjl2LlSvKiu/ES1TO5kD5AXw/gd9w5v7Z45M0+qpeHJNoxvyYh3IbSfMkpn2cS/iijJBGaRK3AVRqcGZTqYV0F/U/N0zUC2y8qfdA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Cbta9jVkv9dWHAGz2D5h83IV5+LPOQ2B8gsFjrsRfeL9zLVTqI2MtLRONJT20UGTxwY7LeLsKEbrXaUMZyQsnYk5+RdwZdhff/u2IQG8o4iqfWc3q3P6FgW1PfDg6uVJ/3NqCaeIxWxx6gKJFR8VSq5iSemGuBQYZtTxw1T3bsiG0tIpwlTkPZOsSIo1K2wxuMmyVE4pnIMXHEahs+YTpi6Q2iYfsPu1EgA0GKkGrGWCdx3nfe2rLRLmSk4lZQHXwC6UHJcs/HUBtOWm1eFQLWz6b9UQqn6eBqRR9pXc1Dlqa+b6mRvnmkDuEoA1V84W4abzFJg+gIMOxxIYbWKDzDI4zJe5yqgJv60BWyRE05yo1dM8/4uHhxaqyqz7xYLtuqNiVUTFYfoYEHVGV1i/0UmmZNFb/ssJ3QZBpF6F0L5XgTWtHI0TlNomoZqhSZlt/uEurkhQOGdKfqvzOsyby7S/J9mciWE9to+Pu1HztPTPvLFD81SYKE5z7bpGkFvPkJGIXqI36j7Irog0fZh7Hg/fKykIACr8k1Y9W2d3A/je9Xs8LLxjQVUUevojmUk3Gos59wCeqlHQMeB+k+BCmBhnl2uyLPzFqng/Lw7vKj31MKmxBCMBPZEanS9T+Kh9X2Eb8cj2b+eVHLZUI7A7Ff/Y9tE6syLhtHeW4tZr1Ch6cb+sJlWdDkYkklki0k/5eGhJTmCYRvO4GkzckxiyAtlwLs0vv2yc8pnIAA5oHcQ48KtBHO7Ad9rNatC2qEyMXLTfpvrbK4c5uQeCGmUZomdRY0pbiZ/Rbq0vd6fKt4ImzKhoYaPjKVWEp7fFcoBiq21/lYHJFMkjRxqbx15t1sgUQuuzVtijigXiO8psW9xvr83cnUvdWP1HUuVVkvy/2hJVMxh8DB2508UDq+WkhZ2k8XiQGRGrn+KdcGEL1V/NWqP68+N43lMbKRujMa4S2oiiLGpreOoux1StlH5r2TS74uMOdIOF980rxd0NbwQmIa5VIa4xFD93X8LZWGQ1ZhtAVy/MhGUdZL1rj990adbs5Iy7a7UhARXlkxlD1eBz/UzEPJhx+6al2hg3ZeB3DnIjm4vHL7IgOCfwXjiJA9/Dd+HZQardt0o7bqUrms/4lVrQ5zweuWjcAWtJWZ9V8GyqJTYmpkGB0lNploy4YUP34xiYoynRfjKspLXLNLh75/zlCNONRMsIbX1FRgWzcsmoKpsH1RbOk4PIjtWary1ooUQQQS6m9Togl+6ExOUAvlmdCytR0z2WsorPST2+f7mEtNSjtPnrqjbrf4wfSH5CeOmKnlw5urv3JEVFniuC68hqMp5ncUiKQ4qGaSNwAJDfBB5oXV4TmtiCJ5KnXo42MtQyjnRi6B0ni0qdfbK9sFzDw22atxc58qqEbJf61qSvXwU8y5eW6aZPzyVMZ2u5K/c2Fm1APPYITXDK3jSnBbrXXpNOHVe1+plCz6YPsmyu6jGrwFf4i+y7WZ1IRMuMMAQGRYNodym107skhnzH+FZzx0Tqbuw86TR0zHjncebEOwQtM9kK7hzGvhQ0FAuzl+jFzOFjoKA+926ucOo0fMj2SyAp2UX75+cx/PyZ85klDJ4omHxkencjDOkf/g== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 66bfbec9-f23f-4338-02a1-08dce208c250 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:04:03.0030 (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: xLepl7/0y9st5Jw2czfH5LcMRn9plsZblunR7hoZt+QSiP9rJFGDEmaTRufFsNx58nSOUbvdqY2OJD2lc0tWiA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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: Rohit Raj NXP DPAA architecture supports the concept of DPAA port as Offline Port - meaning - not connected to an actual MAC. This is an hardware assisted IPC mechanism for communiting between two applications. Offline(O/H) port is a type of hardware port which is able to dequeue and enqueue from/to a QMan queue. The FMan applies a Parse Classify Distribute (PCD) flow and (if configured to do so) enqueues the frame back in a QMan queue. The FMan is able to copy the frame into new buffers and enqueue back to the QMan. This means these ports can be used to send and receive packet between two applications. An O/H port Have two queues. One to receive and one to send the packets. It will loopback all the packets on Tx queue which are received on Rx queue. This property is completely driven by the device-tree. During the DPAA bus scan, based on the platform device properties as in device-tree, the port can be classified as OH port. This patch add support in the driver to use dpaa eth port in OH mode as well with DPDK applications. Signed-off-by: Rohit Raj --- doc/guides/nics/dpaa.rst | 26 ++- drivers/bus/dpaa/base/fman/fman.c | 259 ++++++++++++++-------- drivers/bus/dpaa/base/fman/fman_hw.c | 24 +- drivers/bus/dpaa/base/fman/netcfg_layer.c | 19 +- drivers/bus/dpaa/dpaa_bus.c | 23 +- drivers/bus/dpaa/include/fman.h | 31 ++- drivers/net/dpaa/dpaa_ethdev.c | 85 ++++++- drivers/net/dpaa/dpaa_ethdev.h | 6 + drivers/net/dpaa/dpaa_flow.c | 51 +++-- 9 files changed, 378 insertions(+), 146 deletions(-) diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst index edf7a7e350..47dcce334c 100644 --- a/doc/guides/nics/dpaa.rst +++ b/doc/guides/nics/dpaa.rst @@ -1,5 +1,5 @@ .. SPDX-License-Identifier: BSD-3-Clause - Copyright 2017,2020 NXP + Copyright 2017,2020-2024 NXP DPAA Poll Mode Driver @@ -136,6 +136,8 @@ RTE framework and DPAA internal components/drivers. The Ethernet driver is bound to a FMAN port and implements the interfaces needed to connect the DPAA network interface to the network stack. Each FMAN Port corresponds to a DPDK network interface. +- PMD also support OH mode, where the port works as a HW assisted + virtual port without actually connecting to a Physical MAC. Features @@ -149,6 +151,8 @@ Features - Checksum offload - Promiscuous mode - IEEE1588 PTP + - OH Port for inter application communication + DPAA Mempool Driver ~~~~~~~~~~~~~~~~~~~ @@ -326,6 +330,26 @@ FMLIB `Kernel FMD Driver `_. +OH Port +~~~~~~~ + Offline(O/H) port is a type of hardware port which is able to dequeue and + enqueue from/to a QMan queue. The FMan applies a Parse Classify Distribute (PCD) + flow and (if configured to do so) enqueues the frame back in a QMan queue. + + The FMan is able to copy the frame into new buffers and enqueue back to the + QMan. This means these ports can be used to send and receive packets between two + applications as well. + + An O/H port have two queues. One to receive and one to send the packets. It will + loopback all the packets on Tx queue which are received on Rx queue. + + + -------- Tx Packets --------- + | App | - - - - - - - - - > | O/H | + | | < - - - - - - - - - | Port | + -------- Rx Packets --------- + + VSP (Virtual Storage Profile) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The storage profiled are means to provide virtualized interface. A ranges of diff --git a/drivers/bus/dpaa/base/fman/fman.c b/drivers/bus/dpaa/base/fman/fman.c index e2b7120237..f817305ab7 100644 --- a/drivers/bus/dpaa/base/fman/fman.c +++ b/drivers/bus/dpaa/base/fman/fman.c @@ -246,26 +246,34 @@ fman_if_init(const struct device_node *dpa_node) uint64_t port_cell_idx_val = 0; uint64_t ext_args_cell_idx_val = 0; - const struct device_node *mac_node = NULL, *tx_node, *ext_args_node; - const struct device_node *pool_node, *fman_node, *rx_node; + const struct device_node *mac_node = NULL, *ext_args_node; + const struct device_node *pool_node, *fman_node; + const struct device_node *rx_node = NULL, *tx_node = NULL; + const struct device_node *oh_node = NULL; const uint32_t *regs_addr = NULL; const char *mname, *fname; const char *dname = dpa_node->full_name; size_t lenp; - int _errno, is_shared = 0; + int _errno, is_shared = 0, is_offline = 0; const char *char_prop; uint32_t na; if (of_device_is_available(dpa_node) == false) return 0; - if (!of_device_is_compatible(dpa_node, "fsl,dpa-ethernet-init") && - !of_device_is_compatible(dpa_node, "fsl,dpa-ethernet")) { + if (of_device_is_compatible(dpa_node, "fsl,dpa-oh")) + is_offline = 1; + + if (!of_device_is_compatible(dpa_node, "fsl,dpa-oh") && + !of_device_is_compatible(dpa_node, "fsl,dpa-ethernet-init") && + !of_device_is_compatible(dpa_node, "fsl,dpa-ethernet")) { return 0; } - rprop = "fsl,qman-frame-queues-rx"; - mprop = "fsl,fman-mac"; + rprop = is_offline ? "fsl,qman-frame-queues-oh" : + "fsl,qman-frame-queues-rx"; + mprop = is_offline ? "fsl,fman-oh-port" : + "fsl,fman-mac"; /* Obtain the MAC node used by this interface except macless */ mac_phandle = of_get_property(dpa_node, mprop, &lenp); @@ -281,27 +289,43 @@ fman_if_init(const struct device_node *dpa_node) } mname = mac_node->full_name; - /* Extract the Rx and Tx ports */ - ports_phandle = of_get_property(mac_node, "fsl,port-handles", - &lenp); - if (!ports_phandle) - ports_phandle = of_get_property(mac_node, "fsl,fman-ports", + if (!is_offline) { + /* Extract the Rx and Tx ports */ + ports_phandle = of_get_property(mac_node, "fsl,port-handles", &lenp); - if (!ports_phandle) { - FMAN_ERR(-EINVAL, "%s: no fsl,port-handles", - mname); - return -EINVAL; - } - assert(lenp == (2 * sizeof(phandle))); - rx_node = of_find_node_by_phandle(ports_phandle[0]); - if (!rx_node) { - FMAN_ERR(-ENXIO, "%s: bad fsl,port-handle[0]", mname); - return -ENXIO; - } - tx_node = of_find_node_by_phandle(ports_phandle[1]); - if (!tx_node) { - FMAN_ERR(-ENXIO, "%s: bad fsl,port-handle[1]", mname); - return -ENXIO; + if (!ports_phandle) + ports_phandle = of_get_property(mac_node, "fsl,fman-ports", + &lenp); + if (!ports_phandle) { + FMAN_ERR(-EINVAL, "%s: no fsl,port-handles", + mname); + return -EINVAL; + } + assert(lenp == (2 * sizeof(phandle))); + rx_node = of_find_node_by_phandle(ports_phandle[0]); + if (!rx_node) { + FMAN_ERR(-ENXIO, "%s: bad fsl,port-handle[0]", mname); + return -ENXIO; + } + tx_node = of_find_node_by_phandle(ports_phandle[1]); + if (!tx_node) { + FMAN_ERR(-ENXIO, "%s: bad fsl,port-handle[1]", mname); + return -ENXIO; + } + } else { + /* Extract the OH ports */ + ports_phandle = of_get_property(dpa_node, "fsl,fman-oh-port", + &lenp); + if (!ports_phandle) { + FMAN_ERR(-EINVAL, "%s: no fsl,fman-oh-port", dname); + return -EINVAL; + } + assert(lenp == (sizeof(phandle))); + oh_node = of_find_node_by_phandle(ports_phandle[0]); + if (!oh_node) { + FMAN_ERR(-ENXIO, "%s: bad fsl,port-handle[0]", mname); + return -ENXIO; + } } /* Check if the port is shared interface */ @@ -430,17 +454,19 @@ fman_if_init(const struct device_node *dpa_node) * Set A2V, OVOM, EBD bits in contextA to allow external * buffer deallocation by fman. */ - fman_dealloc_bufs_mask_hi = FMAN_V3_CONTEXTA_EN_A2V | - FMAN_V3_CONTEXTA_EN_OVOM; - fman_dealloc_bufs_mask_lo = FMAN_V3_CONTEXTA_EN_EBD; + fman_dealloc_bufs_mask_hi = DPAA_FQD_CTX_A_A2_FIELD_VALID | + DPAA_FQD_CTX_A_OVERRIDE_OMB; + fman_dealloc_bufs_mask_lo = DPAA_FQD_CTX_A2_EBD_BIT; } else { fman_dealloc_bufs_mask_hi = 0; fman_dealloc_bufs_mask_lo = 0; } - /* Is the MAC node 1G, 2.5G, 10G? */ + /* Is the MAC node 1G, 2.5G, 10G or offline? */ __if->__if.is_memac = 0; - if (of_device_is_compatible(mac_node, "fsl,fman-1g-mac")) + if (is_offline) + __if->__if.mac_type = fman_offline; + else if (of_device_is_compatible(mac_node, "fsl,fman-1g-mac")) __if->__if.mac_type = fman_mac_1g; else if (of_device_is_compatible(mac_node, "fsl,fman-10g-mac")) __if->__if.mac_type = fman_mac_10g; @@ -468,46 +494,81 @@ fman_if_init(const struct device_node *dpa_node) goto err; } - /* - * For MAC ports, we cannot rely on cell-index. In - * T2080, two of the 10G ports on single FMAN have same - * duplicate cell-indexes as the other two 10G ports on - * same FMAN. Hence, we now rely upon addresses of the - * ports from device tree to deduce the index. - */ + if (!is_offline) { + /* + * For MAC ports, we cannot rely on cell-index. In + * T2080, two of the 10G ports on single FMAN have same + * duplicate cell-indexes as the other two 10G ports on + * same FMAN. Hence, we now rely upon addresses of the + * ports from device tree to deduce the index. + */ - _errno = fman_get_mac_index(regs_addr_host, &__if->__if.mac_idx); - if (_errno) { - FMAN_ERR(-EINVAL, "Invalid register address: %" PRIx64, - regs_addr_host); - goto err; - } + _errno = fman_get_mac_index(regs_addr_host, &__if->__if.mac_idx); + if (_errno) { + FMAN_ERR(-EINVAL, "Invalid register address: %" PRIx64, + regs_addr_host); + goto err; + } + } else { + cell_idx = of_get_property(oh_node, "cell-index", &lenp); + if (!cell_idx) { + FMAN_ERR(-ENXIO, "%s: no cell-index)\n", + oh_node->full_name); + goto err; + } + assert(lenp == sizeof(*cell_idx)); + cell_idx_host = of_read_number(cell_idx, + lenp / sizeof(phandle)); - /* Extract the MAC address for private and shared interfaces */ - mac_addr = of_get_property(mac_node, "local-mac-address", - &lenp); - if (!mac_addr) { - FMAN_ERR(-EINVAL, "%s: no local-mac-address", - mname); - goto err; + __if->__if.mac_idx = cell_idx_host; } - memcpy(&__if->__if.mac_addr, mac_addr, ETHER_ADDR_LEN); - /* Extract the channel ID (from tx-port-handle) */ - tx_channel_id = of_get_property(tx_node, "fsl,qman-channel-id", - &lenp); - if (!tx_channel_id) { - FMAN_ERR(-EINVAL, "%s: no fsl-qman-channel-id", - tx_node->full_name); - goto err; + if (!is_offline) { + /* Extract the MAC address for private and shared interfaces */ + mac_addr = of_get_property(mac_node, "local-mac-address", + &lenp); + if (!mac_addr) { + FMAN_ERR(-EINVAL, "%s: no local-mac-address", + mname); + goto err; + } + memcpy(&__if->__if.mac_addr, mac_addr, ETHER_ADDR_LEN); + + /* Extract the channel ID (from tx-port-handle) */ + tx_channel_id = of_get_property(tx_node, "fsl,qman-channel-id", + &lenp); + if (!tx_channel_id) { + FMAN_ERR(-EINVAL, "%s: no fsl-qman-channel-id", + tx_node->full_name); + goto err; + } + } else { + /* Extract the channel ID (from mac) */ + tx_channel_id = of_get_property(mac_node, "fsl,qman-channel-id", + &lenp); + if (!tx_channel_id) { + FMAN_ERR(-EINVAL, "%s: no fsl-qman-channel-id", + tx_node->full_name); + goto err; + } } - regs_addr = of_get_address(rx_node, 0, &__if->regs_size, NULL); + na = of_n_addr_cells(mac_node); + __if->__if.tx_channel_id = of_read_number(tx_channel_id, na); + + if (!is_offline) + regs_addr = of_get_address(rx_node, 0, &__if->regs_size, NULL); + else + regs_addr = of_get_address(oh_node, 0, &__if->regs_size, NULL); if (!regs_addr) { FMAN_ERR(-EINVAL, "of_get_address(%s)", mname); goto err; } - phys_addr = of_translate_address(rx_node, regs_addr); + + if (!is_offline) + phys_addr = of_translate_address(rx_node, regs_addr); + else + phys_addr = of_translate_address(oh_node, regs_addr); if (!phys_addr) { FMAN_ERR(-EINVAL, "of_translate_address(%s, %p)", mname, regs_addr); @@ -521,23 +582,27 @@ fman_if_init(const struct device_node *dpa_node) goto err; } - regs_addr = of_get_address(tx_node, 0, &__if->regs_size, NULL); - if (!regs_addr) { - FMAN_ERR(-EINVAL, "of_get_address(%s)\n", mname); - goto err; - } - phys_addr = of_translate_address(tx_node, regs_addr); - if (!phys_addr) { - FMAN_ERR(-EINVAL, "of_translate_address(%s, %p)\n", - mname, regs_addr); - goto err; - } - __if->tx_bmi_map = mmap(NULL, __if->regs_size, - PROT_READ | PROT_WRITE, MAP_SHARED, - fman_ccsr_map_fd, phys_addr); - if (__if->tx_bmi_map == MAP_FAILED) { - FMAN_ERR(-errno, "mmap(0x%"PRIx64")\n", phys_addr); - goto err; + if (!is_offline) { + regs_addr = of_get_address(tx_node, 0, &__if->regs_size, NULL); + if (!regs_addr) { + FMAN_ERR(-EINVAL, "of_get_address(%s)\n", mname); + goto err; + } + + phys_addr = of_translate_address(tx_node, regs_addr); + if (!phys_addr) { + FMAN_ERR(-EINVAL, "of_translate_address(%s, %p)\n", + mname, regs_addr); + goto err; + } + + __if->tx_bmi_map = mmap(NULL, __if->regs_size, + PROT_READ | PROT_WRITE, MAP_SHARED, + fman_ccsr_map_fd, phys_addr); + if (__if->tx_bmi_map == MAP_FAILED) { + FMAN_ERR(-errno, "mmap(0x%"PRIx64")\n", phys_addr); + goto err; + } } if (!rtc_map) { @@ -554,11 +619,6 @@ fman_if_init(const struct device_node *dpa_node) __if->rtc_map = rtc_map; } - /* No channel ID for MAC-less */ - assert(lenp == sizeof(*tx_channel_id)); - na = of_n_addr_cells(mac_node); - __if->__if.tx_channel_id = of_read_number(tx_channel_id, na); - /* Extract the Rx FQIDs. (Note, the device representation is silly, * there are "counts" that must always be 1.) */ @@ -568,13 +628,26 @@ fman_if_init(const struct device_node *dpa_node) goto err; } - /* Check if "fsl,qman-frame-queues-rx" in dtb file is valid entry or - * not. A valid entry contains at least 4 entries, rx_error_queue, - * rx_error_queue_count, fqid_rx_def and rx_error_queue_count. + /* + * Check if "fsl,qman-frame-queues-rx/oh" in dtb file is valid entry or + * not. + * + * A valid rx entry contains either 4 or 6 entries. Mandatory entries + * are rx_error_queue, rx_error_queue_count, fqid_rx_def and + * fqid_rx_def_count. Optional entries are fqid_rx_pcd and + * fqid_rx_pcd_count. + * + * A valid oh entry contains 4 entries. Those entries are + * rx_error_queue, rx_error_queue_count, fqid_rx_def and + * fqid_rx_def_count. */ - assert(lenp >= (4 * sizeof(phandle))); - na = of_n_addr_cells(mac_node); + if (!is_offline) + assert(lenp == (4 * sizeof(phandle)) || + lenp == (6 * sizeof(phandle))); + else + assert(lenp == (4 * sizeof(phandle))); + /* Get rid of endianness (issues). Convert to host byte order */ rx_phandle_host[0] = of_read_number(&rx_phandle[0], na); rx_phandle_host[1] = of_read_number(&rx_phandle[1], na); @@ -595,6 +668,9 @@ fman_if_init(const struct device_node *dpa_node) __if->__if.fqid_rx_pcd_count = rx_phandle_host[5]; } + if (is_offline) + goto oh_init_done; + /* Extract the Tx FQIDs */ tx_phandle = of_get_property(dpa_node, "fsl,qman-frame-queues-tx", &lenp); @@ -706,6 +782,7 @@ fman_if_init(const struct device_node *dpa_node) if (is_shared) __if->__if.is_shared_mac = 1; +oh_init_done: fman_if_vsp_init(__if); /* Parsing of the network interface is complete, add it to the list */ @@ -769,6 +846,10 @@ fman_finish(void) list_for_each_entry_safe(__if, tmpif, &__ifs, __if.node) { int _errno; + /* No need to disable Offline port */ + if (__if->__if.mac_type == fman_offline) + continue; + /* disable Rx and Tx */ if ((__if->__if.mac_type == fman_mac_1g) && (!__if->__if.is_memac)) diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c index 4fc41c1ae9..1f61ae406b 100644 --- a/drivers/bus/dpaa/base/fman/fman_hw.c +++ b/drivers/bus/dpaa/base/fman/fman_hw.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright 2017,2020,2022 NXP + * Copyright 2017,2020,2022-2023 NXP * */ @@ -88,6 +88,10 @@ fman_if_add_hash_mac_addr(struct fman_if *p, uint8_t *eth) struct __fman_if *__if = container_of(p, struct __fman_if, __if); + /* Add hash mac addr not supported on Offline port */ + if (__if->__if.mac_type == fman_offline) + return 0; + eth_addr = ETH_ADDR_TO_UINT64(eth); if (!(eth_addr & GROUP_ADDRESS)) @@ -109,6 +113,15 @@ fman_if_get_primary_mac_addr(struct fman_if *p, uint8_t *eth) void *mac_reg = &((struct memac_regs *)__if->ccsr_map)->mac_addr0.mac_addr_l; u32 val = in_be32(mac_reg); + int i; + + /* Get mac addr not supported on Offline port */ + /* Return NULL mac address */ + if (__if->__if.mac_type == fman_offline) { + for (i = 0; i < 6; i++) + eth[i] = 0x0; + return 0; + } eth[0] = (val & 0x000000ff) >> 0; eth[1] = (val & 0x0000ff00) >> 8; @@ -130,6 +143,10 @@ fman_if_clear_mac_addr(struct fman_if *p, uint8_t addr_num) struct __fman_if *m = container_of(p, struct __fman_if, __if); void *reg; + /* Clear mac addr not supported on Offline port */ + if (m->__if.mac_type == fman_offline) + return; + if (addr_num) { reg = &((struct memac_regs *)m->ccsr_map)-> mac_addr[addr_num-1].mac_addr_l; @@ -149,10 +166,13 @@ int fman_if_add_mac_addr(struct fman_if *p, uint8_t *eth, uint8_t addr_num) { struct __fman_if *m = container_of(p, struct __fman_if, __if); - void *reg; u32 val; + /* Set mac addr not supported on Offline port */ + if (m->__if.mac_type == fman_offline) + return 0; + memcpy(&m->__if.mac_addr, eth, ETHER_ADDR_LEN); if (addr_num) diff --git a/drivers/bus/dpaa/base/fman/netcfg_layer.c b/drivers/bus/dpaa/base/fman/netcfg_layer.c index 57d87afcb0..e6a6ed1eb6 100644 --- a/drivers/bus/dpaa/base/fman/netcfg_layer.c +++ b/drivers/bus/dpaa/base/fman/netcfg_layer.c @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) * * Copyright 2010-2016 Freescale Semiconductor Inc. - * Copyright 2017-2019 NXP + * Copyright 2017-2019,2023 NXP * */ #include @@ -44,6 +44,7 @@ dump_netcfg(struct netcfg_info *cfg_ptr, FILE *f) fprintf(f, "\n+ Fman %d, MAC %d (%s);\n", __if->fman_idx, __if->mac_idx, + (__if->mac_type == fman_offline) ? "OFFLINE" : (__if->mac_type == fman_mac_1g) ? "1G" : (__if->mac_type == fman_mac_2_5g) ? "2.5G" : "10G"); @@ -56,13 +57,15 @@ dump_netcfg(struct netcfg_info *cfg_ptr, FILE *f) fprintf(f, "\tfqid_rx_def: 0x%x\n", p_cfg->rx_def); fprintf(f, "\tfqid_rx_err: 0x%x\n", __if->fqid_rx_err); - fprintf(f, "\tfqid_tx_err: 0x%x\n", __if->fqid_tx_err); - fprintf(f, "\tfqid_tx_confirm: 0x%x\n", __if->fqid_tx_confirm); - fman_if_for_each_bpool(bpool, __if) - fprintf(f, "\tbuffer pool: (bpid=%d, count=%"PRId64 - " size=%"PRId64", addr=0x%"PRIx64")\n", - bpool->bpid, bpool->count, bpool->size, - bpool->addr); + if (__if->mac_type != fman_offline) { + fprintf(f, "\tfqid_tx_err: 0x%x\n", __if->fqid_tx_err); + fprintf(f, "\tfqid_tx_confirm: 0x%x\n", __if->fqid_tx_confirm); + fman_if_for_each_bpool(bpool, __if) + fprintf(f, "\tbuffer pool: (bpid=%d, count=%"PRId64 + " size=%"PRId64", addr=0x%"PRIx64")\n", + bpool->bpid, bpool->count, bpool->size, + bpool->addr); + } } } #endif /* RTE_LIBRTE_DPAA_DEBUG_DRIVER */ diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index 1f6997c77e..6e4ec90670 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -43,6 +43,7 @@ #include #include #include +#include struct rte_dpaa_bus { struct rte_bus bus; @@ -203,9 +204,12 @@ dpaa_create_device_list(void) /* Create device name */ memset(dev->name, 0, RTE_ETH_NAME_MAX_LEN); - sprintf(dev->name, "fm%d-mac%d", (fman_intf->fman_idx + 1), - fman_intf->mac_idx); - DPAA_BUS_LOG(INFO, "%s netdev added", dev->name); + if (fman_intf->mac_type == fman_offline) + sprintf(dev->name, "fm%d-oh%d", + (fman_intf->fman_idx + 1), fman_intf->mac_idx); + else + sprintf(dev->name, "fm%d-mac%d", + (fman_intf->fman_idx + 1), fman_intf->mac_idx); dev->device.name = dev->name; dev->device.devargs = dpaa_devargs_lookup(dev); @@ -441,7 +445,7 @@ static int rte_dpaa_bus_parse(const char *name, void *out) { unsigned int i, j; - size_t delta; + size_t delta, dev_delta; size_t max_name_len; /* There are two ways of passing device name, with and without @@ -458,16 +462,25 @@ rte_dpaa_bus_parse(const char *name, void *out) delta = 5; } + /* dev_delta points to the dev name (mac/oh/onic). Not valid for + * dpaa_sec. + */ + dev_delta = delta + sizeof("fm.-") - 1; + if (strncmp("dpaa_sec", &name[delta], 8) == 0) { if (sscanf(&name[delta], "dpaa_sec-%u", &i) != 1 || i < 1 || i > 4) return -EINVAL; max_name_len = sizeof("dpaa_sec-.") - 1; + } else if (strncmp("oh", &name[dev_delta], 2) == 0) { + if (sscanf(&name[delta], "fm%u-oh%u", &i, &j) != 2 || + i >= 2 || j >= 16) + return -EINVAL; + max_name_len = sizeof("fm.-oh..") - 1; } else { if (sscanf(&name[delta], "fm%u-mac%u", &i, &j) != 2 || i >= 2 || j >= 16) return -EINVAL; - max_name_len = sizeof("fm.-mac..") - 1; } diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h index e8bc913943..377f73bf0d 100644 --- a/drivers/bus/dpaa/include/fman.h +++ b/drivers/bus/dpaa/include/fman.h @@ -2,7 +2,7 @@ * * Copyright 2010-2012 Freescale Semiconductor, Inc. * All rights reserved. - * Copyright 2019-2022 NXP + * Copyright 2019-2023 NXP * */ @@ -474,11 +474,30 @@ extern int fman_ccsr_map_fd; #define FMAN_IP_REV_1_MAJOR_MASK 0x0000FF00 #define FMAN_IP_REV_1_MAJOR_SHIFT 8 #define FMAN_V3 0x06 -#define FMAN_V3_CONTEXTA_EN_A2V 0x10000000 -#define FMAN_V3_CONTEXTA_EN_OVOM 0x02000000 -#define FMAN_V3_CONTEXTA_EN_EBD 0x80000000 -#define FMAN_CONTEXTA_DIS_CHECKSUM 0x7ull -#define FMAN_CONTEXTA_SET_OPCODE11 0x2000000b00000000 + +#define DPAA_FQD_CTX_A_SHIFT_BITS 24 +#define DPAA_FQD_CTX_B_SHIFT_BITS 24 + +/* Following flags are used to set in context A hi field of FQD */ +#define DPAA_FQD_CTX_A_OVERRIDE_FQ (0x80 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A_IGNORE_CMD (0x40 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A_A1_FIELD_VALID (0x20 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A_A2_FIELD_VALID (0x10 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A_A0_FIELD_VALID (0x08 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A_B0_FIELD_VALID (0x04 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A_OVERRIDE_OMB (0x02 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A_RESERVED (0x01 << DPAA_FQD_CTX_A_SHIFT_BITS) + +/* Following flags are used to set in context A lo field of FQD */ +#define DPAA_FQD_CTX_A2_EBD_BIT (0x80 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A2_EBAD_BIT (0x40 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A2_FWD_BIT (0x20 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A2_NL_BIT (0x10 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A2_CWD_BIT (0x08 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A2_NENQ_BIT (0x04 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A2_RESERVED_BIT (0x02 << DPAA_FQD_CTX_A_SHIFT_BITS) +#define DPAA_FQD_CTX_A2_VSPE_BIT (0x01 << DPAA_FQD_CTX_A_SHIFT_BITS) + extern u16 fman_ip_rev; extern u32 fman_dealloc_bufs_mask_hi; extern u32 fman_dealloc_bufs_mask_lo; diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 4ead890278..f8196ddd14 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -295,7 +295,7 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev) max_rx_pktlen = DPAA_MAX_RX_PKT_LEN; } - if (!fif->is_shared_mac) + if (fif->mac_type != fman_offline) fman_if_set_maxfrm(dev->process_private, max_rx_pktlen); if (rx_offloads & RTE_ETH_RX_OFFLOAD_SCATTER) { @@ -314,6 +314,10 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev) dpaa_write_fm_config_to_file(); } + /* Disable interrupt support on offline port*/ + if (fif->mac_type == fman_offline) + return 0; + /* if the interrupts were configured on this devices*/ if (intr_handle && rte_intr_fd_get(intr_handle)) { if (dev->data->dev_conf.intr_conf.lsc != 0) @@ -531,6 +535,9 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) ret = dpaa_eth_dev_stop(dev); + if (fif->mac_type == fman_offline) + return 0; + /* Reset link to autoneg */ if (link->link_status && !link->link_autoneg) dpaa_restart_link_autoneg(__fif->node_name); @@ -644,6 +651,11 @@ static int dpaa_eth_dev_info(struct rte_eth_dev *dev, | RTE_ETH_LINK_SPEED_1G | RTE_ETH_LINK_SPEED_2_5G | RTE_ETH_LINK_SPEED_10G; + } else if (fif->mac_type == fman_offline) { + dev_info->speed_capa = RTE_ETH_LINK_SPEED_10M_HD + | RTE_ETH_LINK_SPEED_10M + | RTE_ETH_LINK_SPEED_100M_HD + | RTE_ETH_LINK_SPEED_100M; } else { DPAA_PMD_ERR("invalid link_speed: %s, %d", dpaa_intf->name, fif->mac_type); @@ -744,7 +756,8 @@ static int dpaa_eth_link_update(struct rte_eth_dev *dev, ioctl_version = dpaa_get_ioctl_version_number(); - if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC) { + if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC && + fif->mac_type != fman_offline) { for (count = 0; count <= MAX_REPEAT_TIME; count++) { ret = dpaa_get_link_status(__fif->node_name, link); if (ret) @@ -757,6 +770,11 @@ static int dpaa_eth_link_update(struct rte_eth_dev *dev, } } else { link->link_status = dpaa_intf->valid; + if (fif->mac_type == fman_offline) { + /*Max supported rate for O/H port is 3.75Mpps*/ + link->link_speed = RTE_ETH_SPEED_NUM_2_5G; + link->link_duplex = RTE_ETH_LINK_FULL_DUPLEX; + } } if (ioctl_version < 2) { @@ -1077,7 +1095,7 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, dpaa_intf->bp_info = DPAA_MEMPOOL_TO_POOL_INFO(mp); /* For shared interface, it's done in kernel, skip.*/ - if (!fif->is_shared_mac) + if (!fif->is_shared_mac && fif->mac_type != fman_offline) dpaa_fman_if_pool_setup(dev); if (fif->num_profiles) { @@ -1222,8 +1240,11 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, rxq->fqid, ret); } } + /* Enable main queue to receive error packets also by default */ - fman_if_set_err_fqid(fif, rxq->fqid); + if (fif->mac_type != fman_offline) + fman_if_set_err_fqid(fif, rxq->fqid); + return 0; } @@ -1372,7 +1393,8 @@ static int dpaa_link_down(struct rte_eth_dev *dev) __fif = container_of(fif, struct __fman_if, __if); - if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC) + if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC && + fif->mac_type != fman_offline) dpaa_update_link_status(__fif->node_name, RTE_ETH_LINK_DOWN); else return dpaa_eth_dev_stop(dev); @@ -1388,7 +1410,8 @@ static int dpaa_link_up(struct rte_eth_dev *dev) __fif = container_of(fif, struct __fman_if, __if); - if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC) + if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC && + fif->mac_type != fman_offline) dpaa_update_link_status(__fif->node_name, RTE_ETH_LINK_UP); else dpaa_eth_dev_start(dev); @@ -1483,9 +1506,15 @@ dpaa_dev_add_mac_addr(struct rte_eth_dev *dev, __rte_unused uint32_t pool) { int ret; + struct fman_if *fif = dev->process_private; PMD_INIT_FUNC_TRACE(); + if (fif->mac_type == fman_offline) { + DPAA_PMD_DEBUG("Add MAC Address not supported on O/H port"); + return 0; + } + ret = fman_if_add_mac_addr(dev->process_private, addr->addr_bytes, index); @@ -1498,8 +1527,15 @@ static void dpaa_dev_remove_mac_addr(struct rte_eth_dev *dev, uint32_t index) { + struct fman_if *fif = dev->process_private; + PMD_INIT_FUNC_TRACE(); + if (fif->mac_type == fman_offline) { + DPAA_PMD_DEBUG("Remove MAC Address not supported on O/H port"); + return; + } + fman_if_clear_mac_addr(dev->process_private, index); } @@ -1508,9 +1544,15 @@ dpaa_dev_set_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *addr) { int ret; + struct fman_if *fif = dev->process_private; PMD_INIT_FUNC_TRACE(); + if (fif->mac_type == fman_offline) { + DPAA_PMD_DEBUG("Set MAC Address not supported on O/H port"); + return 0; + } + ret = fman_if_add_mac_addr(dev->process_private, addr->addr_bytes, 0); if (ret) DPAA_PMD_ERR("Setting the MAC ADDR failed %d", ret); @@ -1807,6 +1849,17 @@ static int dpaa_rx_queue_init(struct qman_fq *fq, struct qman_cgr *cgr_rx, return ret; } +uint8_t fm_default_vsp_id(struct fman_if *fif) +{ + /* Avoid being same as base profile which could be used + * for kernel interface of shared mac. + */ + if (fif->base_profile_id) + return 0; + else + return DPAA_DEFAULT_RXQ_VSP_ID; +} + /* Initialise a Tx FQ */ static int dpaa_tx_queue_init(struct qman_fq *fq, struct fman_if *fman_intf, @@ -1842,13 +1895,20 @@ static int dpaa_tx_queue_init(struct qman_fq *fq, } else { /* no tx-confirmation */ opts.fqd.context_a.lo = fman_dealloc_bufs_mask_lo; - opts.fqd.context_a.hi = 0x80000000 | fman_dealloc_bufs_mask_hi; + opts.fqd.context_a.hi = DPAA_FQD_CTX_A_OVERRIDE_FQ | + fman_dealloc_bufs_mask_hi; } - if (fman_ip_rev >= FMAN_V3) { + if (fman_ip_rev >= FMAN_V3) /* Set B0V bit in contextA to set ASPID to 0 */ - opts.fqd.context_a.hi |= 0x04000000; + opts.fqd.context_a.hi |= DPAA_FQD_CTX_A_B0_FIELD_VALID; + + if (fman_intf->mac_type == fman_offline) { + opts.fqd.context_a.lo |= DPAA_FQD_CTX_A2_VSPE_BIT; + opts.fqd.context_b = fm_default_vsp_id(fman_intf) << + DPAA_FQD_CTX_B_SHIFT_BITS; } + DPAA_PMD_DEBUG("init tx fq %p, fqid 0x%x", fq, fq->fqid); if (cgr_tx) { @@ -2263,7 +2323,8 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) DPAA_PMD_DEBUG("All frame queues created"); /* Get the initial configuration for flow control */ - dpaa_fc_set_default(dpaa_intf, fman_intf); + if (fman_intf->mac_type != fman_offline) + dpaa_fc_set_default(dpaa_intf, fman_intf); /* reset bpool list, initialize bpool dynamically */ list_for_each_entry_safe(bp, tmp_bp, &cfg->fman_if->bpool_list, node) { @@ -2294,10 +2355,10 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) DPAA_PMD_INFO("net: dpaa: %s: " RTE_ETHER_ADDR_PRT_FMT, dpaa_device->name, RTE_ETHER_ADDR_BYTES(&fman_intf->mac_addr)); - if (!fman_intf->is_shared_mac) { + if (!fman_intf->is_shared_mac && fman_intf->mac_type != fman_offline) { /* Configure error packet handling */ fman_if_receive_rx_errors(fman_intf, - FM_FD_RX_STATUS_ERR_MASK); + FM_FD_RX_STATUS_ERR_MASK); /* Disable RX mode */ fman_if_disable_rx(fman_intf); /* Disable promiscuous mode */ diff --git a/drivers/net/dpaa/dpaa_ethdev.h b/drivers/net/dpaa/dpaa_ethdev.h index 7884cc034c..8ec5155cfc 100644 --- a/drivers/net/dpaa/dpaa_ethdev.h +++ b/drivers/net/dpaa/dpaa_ethdev.h @@ -121,6 +121,9 @@ enum { extern struct rte_mempool *dpaa_tx_sg_pool; extern int dpaa_ieee_1588; +/* PMD related logs */ +extern int dpaa_logtype_pmd; + /* structure to free external and indirect * buffers. */ @@ -266,6 +269,9 @@ dpaa_timesync_read_rx_timestamp(struct rte_eth_dev *dev, struct timespec *timestamp, uint32_t flags __rte_unused); +uint8_t +fm_default_vsp_id(struct fman_if *fif); + /* PMD related logs */ extern int dpaa_logtype_pmd; #define RTE_LOGTYPE_DPAA_PMD dpaa_logtype_pmd diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c index 082bd5d014..cd8b4f51ea 100644 --- a/drivers/net/dpaa/dpaa_flow.c +++ b/drivers/net/dpaa/dpaa_flow.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2017-2019,2021 NXP + * Copyright 2017-2019,2021-2024 NXP */ /* System headers */ @@ -29,6 +29,11 @@ return &scheme_params->param.key_ext_and_hash.extract_array[hdr_idx]; #define SCH_EXT_FULL_FLD(scheme_params, hdr_idx) \ SCH_EXT_HDR(scheme_params, hdr_idx).extract_by_hdr_type.full_field +/* FMAN mac indexes mappings (0 is unused, first 8 are for 1G, next for 10G + * ports). + */ +const uint8_t mac_idx[] = {-1, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1}; + /* FM global info */ struct dpaa_fm_info { t_handle fman_handle; @@ -48,17 +53,6 @@ static struct dpaa_fm_info fm_info; static struct dpaa_fm_model fm_model; static const char *fm_log = "/tmp/fmdpdk.bin"; -static inline uint8_t fm_default_vsp_id(struct fman_if *fif) -{ - /* Avoid being same as base profile which could be used - * for kernel interface of shared mac. - */ - if (fif->base_profile_id) - return 0; - else - return DPAA_DEFAULT_RXQ_VSP_ID; -} - static void fm_prev_cleanup(void) { uint32_t fman_id = 0, i = 0, devid; @@ -649,12 +643,15 @@ static inline int set_pcd_netenv_scheme(struct dpaa_if *dpaa_intf, } -static inline int get_port_type(struct fman_if *fif) +static inline int get_rx_port_type(struct fman_if *fif) { + + if (fif->mac_type == fman_offline) + return e_FM_PORT_TYPE_OH_OFFLINE_PARSING; /* For 1G fm-mac9 and fm-mac10 ports, configure the VSP as 10G * ports so that kernel can configure correct port. */ - if (fif->mac_type == fman_mac_1g && + else if (fif->mac_type == fman_mac_1g && fif->mac_idx >= DPAA_10G_MAC_START_IDX) return e_FM_PORT_TYPE_RX_10G; else if (fif->mac_type == fman_mac_1g) @@ -665,7 +662,7 @@ static inline int get_port_type(struct fman_if *fif) return e_FM_PORT_TYPE_RX_10G; DPAA_PMD_ERR("MAC type unsupported"); - return -1; + return e_FM_PORT_TYPE_DUMMY; } static inline int set_fm_port_handle(struct dpaa_if *dpaa_intf, @@ -676,17 +673,12 @@ static inline int set_fm_port_handle(struct dpaa_if *dpaa_intf, ioc_fm_pcd_net_env_params_t dist_units; PMD_INIT_FUNC_TRACE(); - /* FMAN mac indexes mappings (0 is unused, - * first 8 are for 1G, next for 10G ports - */ - uint8_t mac_idx[] = {-1, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1}; - /* Memset FM port params */ memset(&fm_port_params, 0, sizeof(fm_port_params)); /* Set FM port params */ fm_port_params.h_fm = fm_info.fman_handle; - fm_port_params.port_type = get_port_type(fif); + fm_port_params.port_type = get_rx_port_type(fif); fm_port_params.port_id = mac_idx[fif->mac_idx]; /* FM PORT Open */ @@ -949,7 +941,6 @@ static int dpaa_port_vsp_configure(struct dpaa_if *dpaa_intf, { t_fm_vsp_params vsp_params; t_fm_buffer_prefix_content buf_prefix_cont; - uint8_t mac_idx[] = {-1, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1}; uint8_t idx = mac_idx[fif->mac_idx]; int ret; @@ -970,17 +961,31 @@ static int dpaa_port_vsp_configure(struct dpaa_if *dpaa_intf, memset(&vsp_params, 0, sizeof(vsp_params)); vsp_params.h_fm = fman_handle; vsp_params.relative_profile_id = vsp_id; - vsp_params.port_params.port_id = idx; + if (fif->mac_type == fman_offline) + vsp_params.port_params.port_id = fif->mac_idx; + else + vsp_params.port_params.port_id = idx; + if (fif->mac_type == fman_mac_1g) { vsp_params.port_params.port_type = e_FM_PORT_TYPE_RX; } else if (fif->mac_type == fman_mac_2_5g) { vsp_params.port_params.port_type = e_FM_PORT_TYPE_RX_2_5G; } else if (fif->mac_type == fman_mac_10g) { vsp_params.port_params.port_type = e_FM_PORT_TYPE_RX_10G; + } else if (fif->mac_type == fman_offline) { + vsp_params.port_params.port_type = + e_FM_PORT_TYPE_OH_OFFLINE_PARSING; } else { DPAA_PMD_ERR("Mac type %d error", fif->mac_type); return -1; } + + vsp_params.port_params.port_type = get_rx_port_type(fif); + if (vsp_params.port_params.port_type == e_FM_PORT_TYPE_DUMMY) { + DPAA_PMD_ERR("Mac type %d error", fif->mac_type); + return -1; + } + vsp_params.ext_buf_pools.num_of_pools_used = 1; vsp_params.ext_buf_pools.ext_buf_pool[0].id = dpaa_intf->vsp_bpid[vsp_id]; vsp_params.ext_buf_pools.ext_buf_pool[0].size = mbuf_data_room_size; From patchwork Tue Oct 1 11:03:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144825 X-Patchwork-Delegate: ferruh.yigit@amd.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 D816245A79; Tue, 1 Oct 2024 13:06:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1B30040E0A; Tue, 1 Oct 2024 13:04:13 +0200 (CEST) Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11013069.outbound.protection.outlook.com [52.101.67.69]) by mails.dpdk.org (Postfix) with ESMTP id 3681640B98 for ; Tue, 1 Oct 2024 13:04:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DUQ2oryuc7yVhfRmz/p9awoa9dCaap40ifPVk4t9tneLTQMaB7RaYHyFNigqxzN/H3/uSotHEsecYybNreM7qBPl6ezvRjVgb+oUzpRecUtLSXjAnrxISsOJpkUFfVSCceVAAdPCyZ/ZHa5Lfc1JSwZLOFCbS5RpYpl2HSOp/TRdJeKBu1rdm5oBQb15ILUYZfK+ADwfffsW/Q3C9LgiAb6lifotEbv1LQECSAK4CxHPqiWUnBbbQI+Q2+6qgf6RP9qQply86pSjZnywNli//j29wG17+zQPcQfA0YnQpie+9sG1+tF48z/YnmVvBxRbAhHLWRPPc8O0CMxJFxXhlw== 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=5/E6ZalSx1WyXUtJyHoaAgv35vboUBNBJN34NC0yp00=; b=oAKtvA5UQLCfhmPja1NQXpCaFaJOBnkXKRZR4i4ko8i4cYsI20Wa2SiHX6zJbyjZyVA789DkymPxazC6bh1IG+Kdy15HvbwOFhR3mCZ7kY+8h3Pru6X6L+cMLgoQhQ90u8GsSCWGzPu9RKbR9sLrALlzGQ83jXofQzs9lYiNlSDCcsoZFT/q7IECzpv1WA0PRvhZ4NDIz2aIId/RCIJggLn0XKtP8x1e1SMF88aZAeEPkN88seBWecGzYXHLVREKrcE00VmFywgpBUS8qHvBTrPTexL5tPu+bkNGVCq9naoB1eX4gX3mPX7fflT8q53LgxJ2G+1EXMo7/FYZR6tb4g== 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=5/E6ZalSx1WyXUtJyHoaAgv35vboUBNBJN34NC0yp00=; b=dcRcOuh+NXiD09R0EG3Oo2+8G385BPECiUdjIcWWyYw5rXMIwJjrWh84OlxlXjL8EpsHbzbtx3JXUKhhn5TPolpY+FrqOemW6NTdd3nsrh2acWB18Zelp1tWCN1f5EQFWqhzJ0eL/WRREtx3MfOCG438g6B4afump13I/XnbmaOQ3OwtWPB4WTs4FG/jn3iQmeA8JJX1CypWhRPREHNUlRGgaERym3kaItt5YDVxPDMY4rmcaAK5IE50+mi4SxXIbRx2tj+gbb8zO/I479bNSAzzxAMm4CugTDYv+UurTsnXzPPvz9ZjEpimU+At6m5x00gYw5P3YWjzUvF9DNDc6g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:04:04 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:04:04 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Rohit Raj Subject: [PATCH v5 15/18] bus/dpaa: add ONIC port mode for the DPAA eth Date: Tue, 1 Oct 2024 16:33:22 +0530 Message-Id: <20241001110325.4173762-16-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 44b6ade1-aefa-42b2-9ce2-08dce208c330 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: asr6tKNruC/WR31dZ10z3aT2SW9j+ziylX9opYXtvHHo1//Wsp5c7ro4Mg3H2dxova+zZVykW+ca6MO/vM6o24HAkKw00KbmGPq5oKg4194zvvME5EtpNBYwloAAIRMTHa0Mb+7gRM94pX+X8S+MD/vICgjzFyPQ9JkonWeHqRW4fSqjv1rkIubzg8jK8A6pE/R3Il5U1e6betIHey1eSvlKjz3W0F2vMIX8YFYFAQRn5M2WsV6ULCukErjKhz0XR1OEoE28HNLA4InuS83c2p0gMrkCXwSLJWNhbO+8T+Hu7ILZcXMO5OXoytr77Wn5ZA7W15wuY0/Lw3WcLcuWTGv9m5S52DoSKBsvcD9aaq4FrxhVQ/W0BM9Wyr+3PWSYZHjZ5pQ/uFKvuZEjsb5I9Nast9ElwzaRvdMBKughEP0yF4FGXrpsGkCKIgYQlUMR/1OubHfXTBf5pz8/8wICahxmMe4M+Zv1AbrT4v3FnykAWwBtWJuCY1ANmFpoTu4ruzI2NK18T90ecQyD9sfPSDKbf0arfXGdfcHIs0gCqDM3sqX+RVTTcsdJrGgz8U0KbOWPkqobNZ3xgYgGkKH8yHcxUbm8u8ZDrfPJS1X9gvkfnvclH76CFerj00Pq8HJl6Rwz2ZkBRn8knQe+i+R3J17KQWbMgMazUWWxeeG2XXgQM6pUCQb9hfatnLWOe0l3jc/v/ivh1io7w9GUWRGe/wx+ffasKtMdzpVWTgrTyFUcRHXg2ZdBEy/2CDQ65OXv4dewnvXM395SqCOskahiOYN1Pswwwt6rs+U6tkFSvbh7gPKaGzXMOy0BVs8eQsXArN3VKPnRn+k4Lor1YMjMUXLye+uXYZtKFUj2sZp0CqbxhZ1mGz9tpqCQrIGmxC/rEE1IpvU8vRD16hhzzyqwenUBJLIuM2P8JUK1p9bcF3c6G9deispQQtU+Xcj6HpracDYDox8yllORgxketzj2Kada3KuIEhfGMCeaLOE4LwRCuXHSxELKdfs50+z/5ipO7Dzq+P6lWbgCdighDy/9SYNcle+ylflx1u7rOVDyEhxElePF2RaDPUrYphyOZLpz8oGTnbcMqlxeexsJCImIX7MFDI7oEg3UrWCFOxRWQOF14vHpb7OK7Z3BideAhk6fxB+1SmUnldky5JRNd2qJfPYBBBqCca8h4GcFVcbFBkgYd/fMD4veart2gL6hgCX6C31mXRE4KfeL6dkCZ/6idXGKPP20Z5BzssOBwSdGfTFgq1k0GmmKTgqhYUuW4uTRrmyuwr7UzpbP18XREnfMILBNhZiH4e0z8Sgr7o0sP8kVNtsOrLMEz+IbM4u5T7i3V3Y4KcgJ0gvYggwGErEi1A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nDq6kHakylPZyHgSQLC5IG5TNntymMG6UKahgTOULKpJCh7Po0XHxQmGsFcLQHOKiWTh++xYQy64g4rfas/NLgBwPKd4KzXWPzMTo8a8KKmvrOKklF+JM4JdQ88GbGLXvguL6J877Ell88dI4VM+tUrVAyHXB23MJIe4f1TSC9VUaWiqhi8dlw4N2TVnzgHGJfmXPCsmXcriWyl6ffhRT9HzB7B7QMDWKywccdb893LHShlDsq4LOP9+A6BU5Ma39TnV2P4v8GkEhDUtPDS8qg3o3z+f4mlV55Ftx3cMdgdOTeJR1K0WO2b02VKssu/anWU7XdDxyZmckWClyJwhkig/JLNOfMmbyMi/qUVILuSeIfyi8yLaBnJFUN/oeb1v3bzaO0oXTMwpkkMDV2hN+Bm9sjtYRAAYwya4fWH3vKfzryINir64najfPlkdlLscxOYaI6TD8nADMLiGLxTwJf6RUMXDVsCGfWy7zEes20D2XQyxlUk6ZhvqBE4tYlB4WFNP/IK8Abxx6kq76BkSuMl+rLYqW7puH2TcArUEzqBs7WHVHiDaktiJ9sGLxc4eyYa9W3IyUTwx7AHz8psuJ0Xh1YyS4L4BEF74lBgLjnw+0lzGqIKjMiPBmdauu8OO5FOz6QRs+1JZMeUBKiJQDqM/K0qqelhjqU15BJzGocWJA0Er/rJiBh0xSfKqbuNF0Og5VPZ1aPQbgTnmBwc9tFmoJv1kOTUNnRvE8cvtkOWIFEOokV4Oq0e/z6LQvrsDeKL1LkdSkwJ06enY89JPXTk5avI4y8kF6Gm4zR4SLrUqY9KejQNNNS/Nr7Oi+6aNQviaCCek1tgXZILeZAq+b42r1vNZvmTsPb321ANc43s5glhE1fAG2ssTfUWqjXYj171HA5nsf14vZLUX3XhvOCooeboZMm8xSZKZPjKeyg41lFjviBPr8Xs3kNnSNrh7q4gS9sbz30ILfbvUXCkByyw7uomjB4psXS9ItXwETluWyJEl5FChGZOXXPCcasJq3WfnIDhTrEnVi7+NK27MpfAXSNRlQfhvepezJWCmVFunAlnzDTWhkIykZBqsyC/zHkRKlSJdcl5aKIDGtnHDI0aKPrJ3xmGBsAvZUQ/861ZlEp3Yoh+WN4XN21OW48D1To2GgQs6zNCdOiWCReB/KTod8+q//Y1Vjmkk0bgDmlstguqJJ56/YvCIXHH5rM56FY9Jq9aCxHe2KPKjfakSE6qxBEEd/5SN3AtmCdos49W4Dxi3hiiDJmULNifCuqORo1cDv+HCU67aUwCSjPVxH/yb2GGWBcsaZHHPmG/S4Ru7Kd3aCjkY70yoTKvI5wabqDN62P7WXjHEFlF/mNXvDulABVyQItBCwabmOlhjz5GBKQlrouTUr3OJZ57UurCZudcL3dKX3On0yXWVo8S7eobv8OPghh+S27IWNKzLt+tfq+HfYmA4LBGqLSC//HTeHGcKBY/4vNZirlhUD9uEG70vlQivGB/ztwYx7Ksgr99FQLsYXOlc1CfQq/Rr11WRTeU8uOsK5GIUv0LE1PN1Dzv4WqnhozpKTKLZK5MU1Vi8dntczIWmaNhURRHmr3EwyhB1DdEoj6QWcW05/4/+WA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44b6ade1-aefa-42b2-9ce2-08dce208c330 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:04:04.4363 (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: lISz9MHilHh5YmOeoECW1QvOT7HLLklpFoXVSYOOCVtDDBpJCBXJR4iPa+LO+Goq2iZnF0Jeu+AJknsKP5B7gA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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: Rohit Raj The OH ports can also be used by two application, processing contexts to communicate to each other. This patch enables this mode for dpaa-eth OH port as ONIC port, so that application can use the dpaa-eth to communicate to each other on the same SoC. Again,this properties is driven by the system device-tree variables. Signed-off-by: Rohit Raj --- doc/guides/nics/dpaa.rst | 33 ++- drivers/bus/dpaa/base/fman/fman.c | 299 +++++++++++++++++++++- drivers/bus/dpaa/base/fman/fman_hw.c | 20 +- drivers/bus/dpaa/base/fman/netcfg_layer.c | 4 +- drivers/bus/dpaa/dpaa_bus.c | 16 +- drivers/bus/dpaa/include/fman.h | 15 +- drivers/net/dpaa/dpaa_ethdev.c | 114 +++++++-- drivers/net/dpaa/dpaa_flow.c | 23 +- drivers/net/dpaa/dpaa_fmc.c | 2 +- 9 files changed, 467 insertions(+), 59 deletions(-) diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst index 47dcce334c..a266e71a5b 100644 --- a/doc/guides/nics/dpaa.rst +++ b/doc/guides/nics/dpaa.rst @@ -136,7 +136,7 @@ RTE framework and DPAA internal components/drivers. The Ethernet driver is bound to a FMAN port and implements the interfaces needed to connect the DPAA network interface to the network stack. Each FMAN Port corresponds to a DPDK network interface. -- PMD also support OH mode, where the port works as a HW assisted +- PMD also support OH/ONIC mode, where the port works as a HW assisted virtual port without actually connecting to a Physical MAC. @@ -152,7 +152,7 @@ Features - Promiscuous mode - IEEE1588 PTP - OH Port for inter application communication - + - ONIC virtual port support DPAA Mempool Driver ~~~~~~~~~~~~~~~~~~~ @@ -350,6 +350,35 @@ OH Port -------- Rx Packets --------- +ONIC +~~~~ + To use OH port to communicate between two applications, we can assign Rx port + of an O/H port to Application 1 and Tx port to Application 2 so that + Application 1 can send packets to Application 2. Similarly, we can assign Tx + port of another O/H port to Application 1 and Rx port to Application 2 so that + Application 2 can send packets to Application 1. + + ONIC is logically defined to achieve it. Internally it will use one Rx queue + of an O/H port and one Tx queue of another O/H port. + For application, it will behave as single O/H port. + + +------+ +------+ +------+ +------+ +------+ + | | Tx | | Rx | O/H | Tx | | Rx | | + | | - - - > | | - - > | Port | - - > | | - - > | | + | | | | | 1 | | | | | + | | | | +------+ | | | | + | App | | ONIC | | ONIC | | App | + | 1 | | Port | | Port | | 2 | + | | | 1 | +------+ | 2 | | | + | | Rx | | Tx | O/H | Rx | | Tx | | + | | < - - - | | < - - -| Port | < - - -| | < - - -| | + | | | | | 2 | | | | | + +------+ +------+ +------+ +------+ +------+ + + All the packets received by ONIC port 1 will be send to ONIC port 2 and vice + versa. These ports can be used by DPDK applications just like physical ports. + + VSP (Virtual Storage Profile) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The storage profiled are means to provide virtualized interface. A ranges of diff --git a/drivers/bus/dpaa/base/fman/fman.c b/drivers/bus/dpaa/base/fman/fman.c index f817305ab7..efe6eab4a9 100644 --- a/drivers/bus/dpaa/base/fman/fman.c +++ b/drivers/bus/dpaa/base/fman/fman.c @@ -43,7 +43,7 @@ if_destructor(struct __fman_if *__if) if (!__if) return; - if (__if->__if.mac_type == fman_offline) + if (__if->__if.mac_type == fman_offline_internal) goto cleanup; list_for_each_entry_safe(bp, tmpbp, &__if->__if.bpool_list, node) { @@ -465,7 +465,7 @@ fman_if_init(const struct device_node *dpa_node) __if->__if.is_memac = 0; if (is_offline) - __if->__if.mac_type = fman_offline; + __if->__if.mac_type = fman_offline_internal; else if (of_device_is_compatible(mac_node, "fsl,fman-1g-mac")) __if->__if.mac_type = fman_mac_1g; else if (of_device_is_compatible(mac_node, "fsl,fman-10g-mac")) @@ -791,6 +791,292 @@ fman_if_init(const struct device_node *dpa_node) dname, __if->__if.tx_channel_id, __if->__if.fman_idx, __if->__if.mac_idx); + /* Don't add OH port to the port list since they will be used by ONIC + * ports. + */ + if (!is_offline) + list_add_tail(&__if->__if.node, &__ifs); + + return 0; +err: + if_destructor(__if); + return _errno; +} + +static int fman_if_init_onic(const struct device_node *dpa_node) +{ + struct __fman_if *__if; + struct fman_if_bpool *bpool; + const phandle *tx_pools_phandle; + const phandle *tx_channel_id, *mac_addr, *cell_idx; + const phandle *rx_phandle; + const struct device_node *pool_node; + size_t lenp; + int _errno; + const phandle *p_onic_oh_nodes = NULL; + const struct device_node *rx_oh_node = NULL; + const struct device_node *tx_oh_node = NULL; + const phandle *p_fman_rx_oh_node = NULL, *p_fman_tx_oh_node = NULL; + const struct device_node *fman_rx_oh_node = NULL; + const struct device_node *fman_tx_oh_node = NULL; + const struct device_node *fman_node; + uint32_t na = OF_DEFAULT_NA; + uint64_t rx_phandle_host[4] = {0}; + uint64_t cell_idx_host = 0; + + if (of_device_is_available(dpa_node) == false) + return 0; + + if (!of_device_is_compatible(dpa_node, "fsl,dpa-ethernet-generic")) + return 0; + + /* Allocate an object for this network interface */ + __if = rte_malloc(NULL, sizeof(*__if), RTE_CACHE_LINE_SIZE); + if (!__if) { + FMAN_ERR(-ENOMEM, "malloc(%zu)\n", sizeof(*__if)); + goto err; + } + memset(__if, 0, sizeof(*__if)); + + INIT_LIST_HEAD(&__if->__if.bpool_list); + + strlcpy(__if->node_name, dpa_node->name, IF_NAME_MAX_LEN - 1); + __if->node_name[IF_NAME_MAX_LEN - 1] = '\0'; + + strlcpy(__if->node_path, dpa_node->full_name, PATH_MAX - 1); + __if->node_path[PATH_MAX - 1] = '\0'; + + /* Mac node is onic */ + __if->__if.is_memac = 0; + __if->__if.mac_type = fman_onic; + + /* Extract the MAC address for linux peer */ + mac_addr = of_get_property(dpa_node, "local-mac-address", &lenp); + if (!mac_addr) { + FMAN_ERR(-EINVAL, "%s: no local-mac-address\n", + dpa_node->full_name); + goto err; + } + + memcpy(&__if->__if.onic_info.peer_mac, mac_addr, ETHER_ADDR_LEN); + + /* Extract the Rx port (it's the first of the two port handles) + * and get its channel ID. + */ + p_onic_oh_nodes = of_get_property(dpa_node, "fsl,oh-ports", &lenp); + if (!p_onic_oh_nodes) { + FMAN_ERR(-EINVAL, "%s: couldn't get p_onic_oh_nodes\n", + dpa_node->full_name); + goto err; + } + + rx_oh_node = of_find_node_by_phandle(p_onic_oh_nodes[0]); + if (!rx_oh_node) { + FMAN_ERR(-EINVAL, "%s: couldn't get rx_oh_node\n", + dpa_node->full_name); + goto err; + } + + p_fman_rx_oh_node = of_get_property(rx_oh_node, "fsl,fman-oh-port", + &lenp); + if (!p_fman_rx_oh_node) { + FMAN_ERR(-EINVAL, "%s: couldn't get p_fman_rx_oh_node\n", + rx_oh_node->full_name); + goto err; + } + + fman_rx_oh_node = of_find_node_by_phandle(*p_fman_rx_oh_node); + if (!fman_rx_oh_node) { + FMAN_ERR(-EINVAL, "%s: couldn't get fman_rx_oh_node\n", + rx_oh_node->full_name); + goto err; + } + + tx_channel_id = of_get_property(fman_rx_oh_node, "fsl,qman-channel-id", + &lenp); + if (!tx_channel_id) { + FMAN_ERR(-EINVAL, "%s: no fsl-qman-channel-id\n", + rx_oh_node->full_name); + goto err; + } + assert(lenp == sizeof(*tx_channel_id)); + + __if->__if.tx_channel_id = of_read_number(tx_channel_id, na); + + /* Extract the FQs from which oNIC driver in Linux is dequeuing */ + rx_phandle = of_get_property(rx_oh_node, "fsl,qman-frame-queues-oh", + &lenp); + if (!rx_phandle) { + FMAN_ERR(-EINVAL, "%s: no fsl,qman-frame-queues-oh\n", + rx_oh_node->full_name); + goto err; + } + assert(lenp == (4 * sizeof(phandle))); + + __if->__if.onic_info.rx_start = of_read_number(&rx_phandle[2], na); + __if->__if.onic_info.rx_count = of_read_number(&rx_phandle[3], na); + + /* Extract the Rx FQIDs */ + tx_oh_node = of_find_node_by_phandle(p_onic_oh_nodes[1]); + if (!tx_oh_node) { + FMAN_ERR(-EINVAL, "%s: couldn't get tx_oh_node\n", + dpa_node->full_name); + goto err; + } + + p_fman_tx_oh_node = of_get_property(tx_oh_node, "fsl,fman-oh-port", + &lenp); + if (!p_fman_tx_oh_node) { + FMAN_ERR(-EINVAL, "%s: couldn't get p_fman_tx_oh_node\n", + tx_oh_node->full_name); + goto err; + } + + fman_tx_oh_node = of_find_node_by_phandle(*p_fman_tx_oh_node); + if (!fman_tx_oh_node) { + FMAN_ERR(-EINVAL, "%s: couldn't get fman_tx_oh_node\n", + tx_oh_node->full_name); + goto err; + } + + cell_idx = of_get_property(fman_tx_oh_node, "cell-index", &lenp); + if (!cell_idx) { + FMAN_ERR(-ENXIO, "%s: no cell-index)\n", tx_oh_node->full_name); + goto err; + } + assert(lenp == sizeof(*cell_idx)); + + cell_idx_host = of_read_number(cell_idx, lenp / sizeof(phandle)); + __if->__if.mac_idx = cell_idx_host; + + fman_node = of_get_parent(fman_tx_oh_node); + cell_idx = of_get_property(fman_node, "cell-index", &lenp); + if (!cell_idx) { + FMAN_ERR(-ENXIO, "%s: no cell-index)\n", tx_oh_node->full_name); + goto err; + } + assert(lenp == sizeof(*cell_idx)); + + cell_idx_host = of_read_number(cell_idx, lenp / sizeof(phandle)); + __if->__if.fman_idx = cell_idx_host; + + rx_phandle = of_get_property(tx_oh_node, "fsl,qman-frame-queues-oh", + &lenp); + if (!rx_phandle) { + FMAN_ERR(-EINVAL, "%s: no fsl,qman-frame-queues-oh\n", + dpa_node->full_name); + goto err; + } + assert(lenp == (4 * sizeof(phandle))); + + rx_phandle_host[0] = of_read_number(&rx_phandle[0], na); + rx_phandle_host[1] = of_read_number(&rx_phandle[1], na); + rx_phandle_host[2] = of_read_number(&rx_phandle[2], na); + rx_phandle_host[3] = of_read_number(&rx_phandle[3], na); + + assert((rx_phandle_host[1] == 1) && (rx_phandle_host[3] == 1)); + + __if->__if.fqid_rx_err = rx_phandle_host[0]; + __if->__if.fqid_rx_def = rx_phandle_host[2]; + + /* Don't Extract the Tx FQIDs */ + __if->__if.fqid_tx_err = 0; + __if->__if.fqid_tx_confirm = 0; + + /* Obtain the buffer pool nodes used by Tx OH port */ + tx_pools_phandle = of_get_property(tx_oh_node, "fsl,bman-buffer-pools", + &lenp); + if (!tx_pools_phandle) { + FMAN_ERR(-EINVAL, "%s: no fsl,bman-buffer-pools\n", + tx_oh_node->full_name); + goto err; + } + assert(lenp && !(lenp % sizeof(phandle))); + + /* For each pool, parse the corresponding node and add a pool object to + * the interface's "bpool_list". + */ + + while (lenp) { + size_t proplen; + const phandle *prop; + uint64_t bpool_host[6] = {0}; + + /* Allocate an object for the pool */ + bpool = rte_malloc(NULL, sizeof(*bpool), RTE_CACHE_LINE_SIZE); + if (!bpool) { + FMAN_ERR(-ENOMEM, "malloc(%zu)\n", sizeof(*bpool)); + goto err; + } + + /* Find the pool node */ + pool_node = of_find_node_by_phandle(*tx_pools_phandle); + if (!pool_node) { + FMAN_ERR(-ENXIO, "%s: bad fsl,bman-buffer-pools\n", + tx_oh_node->full_name); + rte_free(bpool); + goto err; + } + + /* Extract the BPID property */ + prop = of_get_property(pool_node, "fsl,bpid", &proplen); + if (!prop) { + FMAN_ERR(-EINVAL, "%s: no fsl,bpid\n", + pool_node->full_name); + rte_free(bpool); + goto err; + } + assert(proplen == sizeof(*prop)); + + bpool->bpid = of_read_number(prop, na); + + /* Extract the cfg property (count/size/addr). "fsl,bpool-cfg" + * indicates for the Bman driver to seed the pool. + * "fsl,bpool-ethernet-cfg" is used by the network driver. The + * two are mutually exclusive, so check for either of them. + */ + + prop = of_get_property(pool_node, "fsl,bpool-cfg", &proplen); + if (!prop) + prop = of_get_property(pool_node, + "fsl,bpool-ethernet-cfg", + &proplen); + if (!prop) { + /* It's OK for there to be no bpool-cfg */ + bpool->count = bpool->size = bpool->addr = 0; + } else { + assert(proplen == (6 * sizeof(*prop))); + + bpool_host[0] = of_read_number(&prop[0], na); + bpool_host[1] = of_read_number(&prop[1], na); + bpool_host[2] = of_read_number(&prop[2], na); + bpool_host[3] = of_read_number(&prop[3], na); + bpool_host[4] = of_read_number(&prop[4], na); + bpool_host[5] = of_read_number(&prop[5], na); + + bpool->count = ((uint64_t)bpool_host[0] << 32) | + bpool_host[1]; + bpool->size = ((uint64_t)bpool_host[2] << 32) | + bpool_host[3]; + bpool->addr = ((uint64_t)bpool_host[4] << 32) | + bpool_host[5]; + } + + /* Parsing of the pool is complete, add it to the interface + * list. + */ + list_add_tail(&bpool->node, &__if->__if.bpool_list); + lenp -= sizeof(phandle); + tx_pools_phandle++; + } + + fman_if_vsp_init(__if); + + /* Parsing of the network interface is complete, add it to the list. */ + DPAA_BUS_DEBUG("Found %s, Tx Channel = %x, FMAN = %x, Port ID = %x", + dpa_node->full_name, __if->__if.tx_channel_id, + __if->__if.fman_idx, __if->__if.mac_idx); + list_add_tail(&__if->__if.node, &__ifs); return 0; err: @@ -830,6 +1116,13 @@ fman_init(void) } } + for_each_compatible_node(dpa_node, NULL, "fsl,dpa-ethernet-generic") { + /* it is a oNIC interface */ + _errno = fman_if_init_onic(dpa_node); + if (_errno) + FMAN_ERR(_errno, "if_init(%s)\n", dpa_node->full_name); + } + return 0; err: fman_finish(); @@ -847,7 +1140,7 @@ fman_finish(void) int _errno; /* No need to disable Offline port */ - if (__if->__if.mac_type == fman_offline) + if (__if->__if.mac_type == fman_offline_internal) continue; /* disable Rx and Tx */ diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c index 1f61ae406b..cbb0491d70 100644 --- a/drivers/bus/dpaa/base/fman/fman_hw.c +++ b/drivers/bus/dpaa/base/fman/fman_hw.c @@ -88,8 +88,9 @@ fman_if_add_hash_mac_addr(struct fman_if *p, uint8_t *eth) struct __fman_if *__if = container_of(p, struct __fman_if, __if); - /* Add hash mac addr not supported on Offline port */ - if (__if->__if.mac_type == fman_offline) + /* Add hash mac addr not supported on Offline port and onic port */ + if (__if->__if.mac_type == fman_offline_internal || + __if->__if.mac_type == fman_onic) return 0; eth_addr = ETH_ADDR_TO_UINT64(eth); @@ -115,9 +116,10 @@ fman_if_get_primary_mac_addr(struct fman_if *p, uint8_t *eth) u32 val = in_be32(mac_reg); int i; - /* Get mac addr not supported on Offline port */ + /* Get mac addr not supported on Offline port and onic port */ /* Return NULL mac address */ - if (__if->__if.mac_type == fman_offline) { + if (__if->__if.mac_type == fman_offline_internal || + __if->__if.mac_type == fman_onic) { for (i = 0; i < 6; i++) eth[i] = 0x0; return 0; @@ -143,8 +145,9 @@ fman_if_clear_mac_addr(struct fman_if *p, uint8_t addr_num) struct __fman_if *m = container_of(p, struct __fman_if, __if); void *reg; - /* Clear mac addr not supported on Offline port */ - if (m->__if.mac_type == fman_offline) + /* Clear mac addr not supported on Offline port and onic port */ + if (m->__if.mac_type == fman_offline_internal || + m->__if.mac_type == fman_onic) return; if (addr_num) { @@ -169,8 +172,9 @@ fman_if_add_mac_addr(struct fman_if *p, uint8_t *eth, uint8_t addr_num) void *reg; u32 val; - /* Set mac addr not supported on Offline port */ - if (m->__if.mac_type == fman_offline) + /* Set mac addr not supported on Offline port and onic port */ + if (m->__if.mac_type == fman_offline_internal || + m->__if.mac_type == fman_onic) return 0; memcpy(&m->__if.mac_addr, eth, ETHER_ADDR_LEN); diff --git a/drivers/bus/dpaa/base/fman/netcfg_layer.c b/drivers/bus/dpaa/base/fman/netcfg_layer.c index e6a6ed1eb6..ffb37825c2 100644 --- a/drivers/bus/dpaa/base/fman/netcfg_layer.c +++ b/drivers/bus/dpaa/base/fman/netcfg_layer.c @@ -44,7 +44,7 @@ dump_netcfg(struct netcfg_info *cfg_ptr, FILE *f) fprintf(f, "\n+ Fman %d, MAC %d (%s);\n", __if->fman_idx, __if->mac_idx, - (__if->mac_type == fman_offline) ? "OFFLINE" : + (__if->mac_type == fman_offline_internal) ? "OFFLINE" : (__if->mac_type == fman_mac_1g) ? "1G" : (__if->mac_type == fman_mac_2_5g) ? "2.5G" : "10G"); @@ -57,7 +57,7 @@ dump_netcfg(struct netcfg_info *cfg_ptr, FILE *f) fprintf(f, "\tfqid_rx_def: 0x%x\n", p_cfg->rx_def); fprintf(f, "\tfqid_rx_err: 0x%x\n", __if->fqid_rx_err); - if (__if->mac_type != fman_offline) { + if (__if->mac_type != fman_offline_internal) { fprintf(f, "\tfqid_tx_err: 0x%x\n", __if->fqid_tx_err); fprintf(f, "\tfqid_tx_confirm: 0x%x\n", __if->fqid_tx_confirm); fman_if_for_each_bpool(bpool, __if) diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c index 6e4ec90670..9ffbe07c93 100644 --- a/drivers/bus/dpaa/dpaa_bus.c +++ b/drivers/bus/dpaa/dpaa_bus.c @@ -171,8 +171,10 @@ dpaa_create_device_list(void) struct fm_eth_port_cfg *cfg; struct fman_if *fman_intf; + rte_dpaa_bus.device_count = 0; + /* Creating Ethernet Devices */ - for (i = 0; i < dpaa_netcfg->num_ethports; i++) { + for (i = 0; dpaa_netcfg && (i < dpaa_netcfg->num_ethports); i++) { dev = calloc(1, sizeof(struct rte_dpaa_device)); if (!dev) { DPAA_BUS_LOG(ERR, "Failed to allocate ETH devices"); @@ -204,9 +206,12 @@ dpaa_create_device_list(void) /* Create device name */ memset(dev->name, 0, RTE_ETH_NAME_MAX_LEN); - if (fman_intf->mac_type == fman_offline) + if (fman_intf->mac_type == fman_offline_internal) sprintf(dev->name, "fm%d-oh%d", (fman_intf->fman_idx + 1), fman_intf->mac_idx); + else if (fman_intf->mac_type == fman_onic) + sprintf(dev->name, "fm%d-onic%d", + (fman_intf->fman_idx + 1), fman_intf->mac_idx); else sprintf(dev->name, "fm%d-mac%d", (fman_intf->fman_idx + 1), fman_intf->mac_idx); @@ -216,7 +221,7 @@ dpaa_create_device_list(void) dpaa_add_to_device_list(dev); } - rte_dpaa_bus.device_count = i; + rte_dpaa_bus.device_count += i; /* Unlike case of ETH, RTE_LIBRTE_DPAA_MAX_CRYPTODEV SEC devices are * constantly created only if "sec" property is found in the device @@ -477,6 +482,11 @@ rte_dpaa_bus_parse(const char *name, void *out) i >= 2 || j >= 16) return -EINVAL; max_name_len = sizeof("fm.-oh..") - 1; + } else if (strncmp("onic", &name[dev_delta], 4) == 0) { + if (sscanf(&name[delta], "fm%u-onic%u", &i, &j) != 2 || + i >= 2 || j >= 16) + return -EINVAL; + max_name_len = sizeof("fm.-onic..") - 1; } else { if (sscanf(&name[delta], "fm%u-mac%u", &i, &j) != 2 || i >= 2 || j >= 16) diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h index 377f73bf0d..01556cf2a8 100644 --- a/drivers/bus/dpaa/include/fman.h +++ b/drivers/bus/dpaa/include/fman.h @@ -78,7 +78,7 @@ TAILQ_HEAD(rte_fman_if_list, __fman_if); /* Represents the different flavour of network interface */ enum fman_mac_type { - fman_offline = 0, + fman_offline_internal = 0, fman_mac_1g, fman_mac_10g, fman_mac_2_5g, @@ -366,6 +366,16 @@ struct fman_port_qmi_regs { uint32_t fmqm_pndcc; /**< PortID n Dequeue Confirm Counter */ }; +struct onic_port_cfg { + char macless_name[IF_NAME_MAX_LEN]; + uint32_t rx_start; + uint32_t rx_count; + uint32_t tx_start; + uint32_t tx_count; + struct rte_ether_addr src_mac; + struct rte_ether_addr peer_mac; +}; + /* This struct exports parameters about an Fman network interface, determined * from the device-tree. */ @@ -401,6 +411,9 @@ struct fman_if { uint32_t fqid_tx_err; uint32_t fqid_tx_confirm; + /* oNIC port info */ + struct onic_port_cfg onic_info; + struct list_head bpool_list; /* The node for linking this interface into "fman_if_list" */ struct list_head node; diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index f8196ddd14..133fbd5bc9 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -295,7 +295,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev) max_rx_pktlen = DPAA_MAX_RX_PKT_LEN; } - if (fif->mac_type != fman_offline) + if (!fif->is_shared_mac && fif->mac_type != fman_offline_internal && + fif->mac_type != fman_onic) fman_if_set_maxfrm(dev->process_private, max_rx_pktlen); if (rx_offloads & RTE_ETH_RX_OFFLOAD_SCATTER) { @@ -315,7 +316,8 @@ dpaa_eth_dev_configure(struct rte_eth_dev *dev) } /* Disable interrupt support on offline port*/ - if (fif->mac_type == fman_offline) + if (fif->mac_type == fman_offline_internal || + fif->mac_type == fman_onic) return 0; /* if the interrupts were configured on this devices*/ @@ -467,10 +469,11 @@ static int dpaa_eth_dev_start(struct rte_eth_dev *dev) else dev->tx_pkt_burst = dpaa_eth_queue_tx; - fman_if_bmi_stats_enable(fif); - fman_if_bmi_stats_reset(fif); - fman_if_enable_rx(fif); - + if (fif->mac_type != fman_onic) { + fman_if_bmi_stats_enable(fif); + fman_if_bmi_stats_reset(fif); + fman_if_enable_rx(fif); + } for (i = 0; i < dev->data->nb_rx_queues; i++) dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED; for (i = 0; i < dev->data->nb_tx_queues; i++) @@ -535,7 +538,8 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) ret = dpaa_eth_dev_stop(dev); - if (fif->mac_type == fman_offline) + if (fif->mac_type == fman_offline_internal || + fif->mac_type == fman_onic) return 0; /* Reset link to autoneg */ @@ -651,11 +655,14 @@ static int dpaa_eth_dev_info(struct rte_eth_dev *dev, | RTE_ETH_LINK_SPEED_1G | RTE_ETH_LINK_SPEED_2_5G | RTE_ETH_LINK_SPEED_10G; - } else if (fif->mac_type == fman_offline) { + } else if (fif->mac_type == fman_offline_internal || + fif->mac_type == fman_onic) { dev_info->speed_capa = RTE_ETH_LINK_SPEED_10M_HD | RTE_ETH_LINK_SPEED_10M | RTE_ETH_LINK_SPEED_100M_HD - | RTE_ETH_LINK_SPEED_100M; + | RTE_ETH_LINK_SPEED_100M + | RTE_ETH_LINK_SPEED_1G + | RTE_ETH_LINK_SPEED_2_5G; } else { DPAA_PMD_ERR("invalid link_speed: %s, %d", dpaa_intf->name, fif->mac_type); @@ -757,7 +764,8 @@ static int dpaa_eth_link_update(struct rte_eth_dev *dev, ioctl_version = dpaa_get_ioctl_version_number(); if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC && - fif->mac_type != fman_offline) { + fif->mac_type != fman_offline_internal && + fif->mac_type != fman_onic) { for (count = 0; count <= MAX_REPEAT_TIME; count++) { ret = dpaa_get_link_status(__fif->node_name, link); if (ret) @@ -770,7 +778,8 @@ static int dpaa_eth_link_update(struct rte_eth_dev *dev, } } else { link->link_status = dpaa_intf->valid; - if (fif->mac_type == fman_offline) { + if (fif->mac_type == fman_offline_internal || + fif->mac_type == fman_onic) { /*Max supported rate for O/H port is 3.75Mpps*/ link->link_speed = RTE_ETH_SPEED_NUM_2_5G; link->link_duplex = RTE_ETH_LINK_FULL_DUPLEX; @@ -933,8 +942,16 @@ dpaa_xstats_get_names_by_id( static int dpaa_eth_promiscuous_enable(struct rte_eth_dev *dev) { + struct fman_if *fif = dev->process_private; + PMD_INIT_FUNC_TRACE(); + if (fif->mac_type == fman_onic) { + DPAA_PMD_INFO("Enable promiscuous mode not supported on ONIC " + "port"); + return 0; + } + fman_if_promiscuous_enable(dev->process_private); return 0; @@ -942,8 +959,16 @@ static int dpaa_eth_promiscuous_enable(struct rte_eth_dev *dev) static int dpaa_eth_promiscuous_disable(struct rte_eth_dev *dev) { + struct fman_if *fif = dev->process_private; + PMD_INIT_FUNC_TRACE(); + if (fif->mac_type == fman_onic) { + DPAA_PMD_INFO("Disable promiscuous mode not supported on ONIC " + "port"); + return 0; + } + fman_if_promiscuous_disable(dev->process_private); return 0; @@ -951,8 +976,15 @@ static int dpaa_eth_promiscuous_disable(struct rte_eth_dev *dev) static int dpaa_eth_multicast_enable(struct rte_eth_dev *dev) { + struct fman_if *fif = dev->process_private; + PMD_INIT_FUNC_TRACE(); + if (fif->mac_type == fman_onic) { + DPAA_PMD_INFO("Enable Multicast not supported on ONIC port"); + return 0; + } + fman_if_set_mcast_filter_table(dev->process_private); return 0; @@ -960,8 +992,15 @@ static int dpaa_eth_multicast_enable(struct rte_eth_dev *dev) static int dpaa_eth_multicast_disable(struct rte_eth_dev *dev) { + struct fman_if *fif = dev->process_private; + PMD_INIT_FUNC_TRACE(); + if (fif->mac_type == fman_onic) { + DPAA_PMD_INFO("Disable Multicast not supported on ONIC port"); + return 0; + } + fman_if_reset_mcast_filter_table(dev->process_private); return 0; @@ -1095,7 +1134,8 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, dpaa_intf->bp_info = DPAA_MEMPOOL_TO_POOL_INFO(mp); /* For shared interface, it's done in kernel, skip.*/ - if (!fif->is_shared_mac && fif->mac_type != fman_offline) + if (!fif->is_shared_mac && fif->mac_type != fman_offline_internal && + fif->mac_type != fman_onic) dpaa_fman_if_pool_setup(dev); if (fif->num_profiles) { @@ -1126,8 +1166,9 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, } dpaa_intf->valid = 1; - DPAA_PMD_DEBUG("if:%s sg_on = %d, max_frm =%d", dpaa_intf->name, - fman_if_get_sg_enable(fif), max_rx_pktlen); + if (fif->mac_type != fman_onic) + DPAA_PMD_DEBUG("if:%s sg_on = %d, max_frm =%d", dpaa_intf->name, + fman_if_get_sg_enable(fif), max_rx_pktlen); /* checking if push mode only, no error check for now */ if (!rxq->is_static && dpaa_push_mode_max_queue > dpaa_push_queue_idx) { @@ -1242,7 +1283,8 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, } /* Enable main queue to receive error packets also by default */ - if (fif->mac_type != fman_offline) + if (fif->mac_type != fman_offline_internal && + fif->mac_type != fman_onic) fman_if_set_err_fqid(fif, rxq->fqid); return 0; @@ -1394,7 +1436,8 @@ static int dpaa_link_down(struct rte_eth_dev *dev) __fif = container_of(fif, struct __fman_if, __if); if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC && - fif->mac_type != fman_offline) + fif->mac_type != fman_offline_internal && + fif->mac_type != fman_onic) dpaa_update_link_status(__fif->node_name, RTE_ETH_LINK_DOWN); else return dpaa_eth_dev_stop(dev); @@ -1411,7 +1454,8 @@ static int dpaa_link_up(struct rte_eth_dev *dev) __fif = container_of(fif, struct __fman_if, __if); if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC && - fif->mac_type != fman_offline) + fif->mac_type != fman_offline_internal && + fif->mac_type != fman_onic) dpaa_update_link_status(__fif->node_name, RTE_ETH_LINK_UP); else dpaa_eth_dev_start(dev); @@ -1510,11 +1554,16 @@ dpaa_dev_add_mac_addr(struct rte_eth_dev *dev, PMD_INIT_FUNC_TRACE(); - if (fif->mac_type == fman_offline) { + if (fif->mac_type == fman_offline_internal) { DPAA_PMD_DEBUG("Add MAC Address not supported on O/H port"); return 0; } + if (fif->mac_type == fman_onic) { + DPAA_PMD_INFO("Add MAC Address not supported on ONIC port"); + return 0; + } + ret = fman_if_add_mac_addr(dev->process_private, addr->addr_bytes, index); @@ -1531,11 +1580,16 @@ dpaa_dev_remove_mac_addr(struct rte_eth_dev *dev, PMD_INIT_FUNC_TRACE(); - if (fif->mac_type == fman_offline) { + if (fif->mac_type == fman_offline_internal) { DPAA_PMD_DEBUG("Remove MAC Address not supported on O/H port"); return; } + if (fif->mac_type == fman_onic) { + DPAA_PMD_INFO("Remove MAC Address not supported on ONIC port"); + return; + } + fman_if_clear_mac_addr(dev->process_private, index); } @@ -1548,11 +1602,16 @@ dpaa_dev_set_mac_addr(struct rte_eth_dev *dev, PMD_INIT_FUNC_TRACE(); - if (fif->mac_type == fman_offline) { + if (fif->mac_type == fman_offline_internal) { DPAA_PMD_DEBUG("Set MAC Address not supported on O/H port"); return 0; } + if (fif->mac_type == fman_onic) { + DPAA_PMD_INFO("Set MAC Address not supported on ONIC port"); + return 0; + } + ret = fman_if_add_mac_addr(dev->process_private, addr->addr_bytes, 0); if (ret) DPAA_PMD_ERR("Setting the MAC ADDR failed %d", ret); @@ -1903,7 +1962,8 @@ static int dpaa_tx_queue_init(struct qman_fq *fq, /* Set B0V bit in contextA to set ASPID to 0 */ opts.fqd.context_a.hi |= DPAA_FQD_CTX_A_B0_FIELD_VALID; - if (fman_intf->mac_type == fman_offline) { + if (fman_intf->mac_type == fman_offline_internal || + fman_intf->mac_type == fman_onic) { opts.fqd.context_a.lo |= DPAA_FQD_CTX_A2_VSPE_BIT; opts.fqd.context_b = fm_default_vsp_id(fman_intf) << DPAA_FQD_CTX_B_SHIFT_BITS; @@ -2156,6 +2216,11 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) goto free_rx; } if (!num_rx_fqs) { + if (fman_intf->mac_type == fman_offline_internal || + fman_intf->mac_type == fman_onic) { + ret = -ENODEV; + goto free_rx; + } DPAA_PMD_WARN("%s is not configured by FMC.", dpaa_intf->name); } @@ -2323,7 +2388,8 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) DPAA_PMD_DEBUG("All frame queues created"); /* Get the initial configuration for flow control */ - if (fman_intf->mac_type != fman_offline) + if (fman_intf->mac_type != fman_offline_internal && + fman_intf->mac_type != fman_onic) dpaa_fc_set_default(dpaa_intf, fman_intf); /* reset bpool list, initialize bpool dynamically */ @@ -2355,7 +2421,9 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) DPAA_PMD_INFO("net: dpaa: %s: " RTE_ETHER_ADDR_PRT_FMT, dpaa_device->name, RTE_ETHER_ADDR_BYTES(&fman_intf->mac_addr)); - if (!fman_intf->is_shared_mac && fman_intf->mac_type != fman_offline) { + if (!fman_intf->is_shared_mac && + fman_intf->mac_type != fman_offline_internal && + fman_intf->mac_type != fman_onic) { /* Configure error packet handling */ fman_if_receive_rx_errors(fman_intf, FM_FD_RX_STATUS_ERR_MASK); diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c index cd8b4f51ea..9fd40fa47e 100644 --- a/drivers/net/dpaa/dpaa_flow.c +++ b/drivers/net/dpaa/dpaa_flow.c @@ -646,7 +646,11 @@ static inline int set_pcd_netenv_scheme(struct dpaa_if *dpaa_intf, static inline int get_rx_port_type(struct fman_if *fif) { - if (fif->mac_type == fman_offline) + /* For onic ports, configure the VSP as offline ports so that + * kernel can configure correct port. + */ + if (fif->mac_type == fman_offline_internal || + fif->mac_type == fman_onic) return e_FM_PORT_TYPE_OH_OFFLINE_PARSING; /* For 1G fm-mac9 and fm-mac10 ports, configure the VSP as 10G * ports so that kernel can configure correct port. @@ -961,25 +965,12 @@ static int dpaa_port_vsp_configure(struct dpaa_if *dpaa_intf, memset(&vsp_params, 0, sizeof(vsp_params)); vsp_params.h_fm = fman_handle; vsp_params.relative_profile_id = vsp_id; - if (fif->mac_type == fman_offline) + if (fif->mac_type == fman_offline_internal || + fif->mac_type == fman_onic) vsp_params.port_params.port_id = fif->mac_idx; else vsp_params.port_params.port_id = idx; - if (fif->mac_type == fman_mac_1g) { - vsp_params.port_params.port_type = e_FM_PORT_TYPE_RX; - } else if (fif->mac_type == fman_mac_2_5g) { - vsp_params.port_params.port_type = e_FM_PORT_TYPE_RX_2_5G; - } else if (fif->mac_type == fman_mac_10g) { - vsp_params.port_params.port_type = e_FM_PORT_TYPE_RX_10G; - } else if (fif->mac_type == fman_offline) { - vsp_params.port_params.port_type = - e_FM_PORT_TYPE_OH_OFFLINE_PARSING; - } else { - DPAA_PMD_ERR("Mac type %d error", fif->mac_type); - return -1; - } - vsp_params.port_params.port_type = get_rx_port_type(fif); if (vsp_params.port_params.port_type == e_FM_PORT_TYPE_DUMMY) { DPAA_PMD_ERR("Mac type %d error", fif->mac_type); diff --git a/drivers/net/dpaa/dpaa_fmc.c b/drivers/net/dpaa/dpaa_fmc.c index d80ea1010a..7dc42f6e23 100644 --- a/drivers/net/dpaa/dpaa_fmc.c +++ b/drivers/net/dpaa/dpaa_fmc.c @@ -215,7 +215,7 @@ dpaa_port_fmc_port_parse(struct fman_if *fif, if (pport->type == e_FM_PORT_TYPE_OH_OFFLINE_PARSING && pport->number == fif->mac_idx && - (fif->mac_type == fman_offline || + (fif->mac_type == fman_offline_internal || fif->mac_type == fman_onic)) return current_port; From patchwork Tue Oct 1 11:03:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144826 X-Patchwork-Delegate: ferruh.yigit@amd.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 235D345A79; Tue, 1 Oct 2024 13:06:16 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D794340E0B; Tue, 1 Oct 2024 13:04:14 +0200 (CEST) Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011065.outbound.protection.outlook.com [52.101.70.65]) by mails.dpdk.org (Postfix) with ESMTP id 0080F40DCB for ; Tue, 1 Oct 2024 13:04:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Cw9SWctEubKnK01oftyRJNrrfWMcn9OZmN3xfizIm+kr1UylmpMS6mZ9afK8WW0K0tQmYcv+RCHwrwRDqs8K7FZzd4EzRtrtiWgejC45X0pxPYZt2G+ucMZtLptvtHQgfj0ixnPYUjcXQYMZ1AQDTrVcyIgBrnhF1qGw1+v99vdTwIQOoj4aza7R/HXPr253x/Bhe/9MvuQkUXZYohaA7ELQ3rOqVFYYSl7V3AmAYrBqJgeXS0Rf0ClnQhVGEwoCDDFm8xcD+alGfWD0NYpgKZmWO1EoSmNRI64Y3Gvw3wFGNdpwocYuohOidVQIA6docV1KAqux0ltFVVzCG9XZrQ== 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=5UqHpUgdD3/ltCovT2tDrDlaCV9PzgP+6VziWoXvFQg=; b=d/eT0HAw4YZy03WwnmeIMSuOM4bP4YY8M92yFu5BpXzZNdBl8wXS9pGyhy3R0sJNTzfX0lI0snMd+2krV6dzuG6BkTj6TEnP/qxCvjixE8BIp+Nq89gF1u7vun7ptepGO/koL1hRGjtTHiI8nfbqm/HjLFkiocBDjUH71pHeEowlKc+2rhPbl5kJww5AZsEMGcXxlJKonP3AoX+sEfeJB6MRVv1qI2eDmr7LhlywMX18U1Ls2BH5DElZMTDTJsGbzx51KzL7wkY8rGKV+JFCNPbDveD2JM3I5Lmjckh4pOF9xFWWfLVhhOordMLVV45GoJDIpLMelP2L+3K9bpwItQ== 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=5UqHpUgdD3/ltCovT2tDrDlaCV9PzgP+6VziWoXvFQg=; b=OzOLq4cM9iRez1JNVQkW4zRhKVEMB2hiq8ydZSCjVmxpz0xeYDM2fdqajTghikQTr0fSsBUP6jV6pO3qwUFbZsgiHWGemsNMZb829LLDk+2Jqm4sa8YemmKBhe1Wa7C72kBMZrakDCKwpTiZjEB1UUGhYNWkrNA6FuRhTy2U9wAT2V6OsTKpiul2y/0l7kJDvNgwC8XSRg0EltAWrm9huod+RRGQkmTVSTSUv5vtmvY7S9PWYzMk5A+ofRZ4n2elitfcc9G1m1x7H3sBhTtgD5xG3W31ZDez3Zn4+ordx51YkPzCvsAZmNdqdk3NdS9r/RPsjcWda78AeKwwqVU8bw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by PAXPR04MB8702.eurprd04.prod.outlook.com (2603:10a6:102:21d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.27; Tue, 1 Oct 2024 11:04:05 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:04:05 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Gagandeep Singh Subject: [PATCH v5 16/18] net/dpaa: improve the dpaa port cleanup Date: Tue, 1 Oct 2024 16:33:23 +0530 Message-Id: <20241001110325.4173762-17-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|PAXPR04MB8702:EE_ X-MS-Office365-Filtering-Correlation-Id: 658dd1ce-c637-48d3-1959-08dce208c40d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: JVZ7XrBAdDkcNJD5uNVckUnuZ31o/VFmHHAP73uXt4pGkdd66IR45N7KKS0IJperDyrineV85YIoUwinEt7U7MXMjhxooqALwzW+je0Qr/cq+RxWUdLN47IKQ0WhoHitFdQiIMjniF59ksvkarPRmqDuj2NZt72oZWydkpzMeBKqPdNFM6FTOxMFOZG7PqgQ6By2MkDY61AQzh0BYf2nSk1LJbFHD2PaaQLOXWjYPBfjE7/KAAuhCWF3UwxWBL5Urk5E4OrX6eGm7pFGysyOryTXSiPNR/6tgd4zMGvRPZqQJZtKb9a+/8VDhl1Uyr5UrjkJokj6z3397SKVav1H94UBhtmBymqIQx3Fj3BoYl7sFua7JxnjYAUkjLZqsUkN26vXfe9mucbtZS/NkbAef3z5efXjexZZ0tjGxftd9EFtHhNMGSRK9ynGWsRf5gRXLwhZZojGxS2jHkkYqAa27OlRnx6E3DBo2heFSxZgTwHC0tTjxJqAsXtUjKv9FA0xJURHRNWHwbnRU1yZ/3OOxvHHCCAi0ReW5oivj+fpPtZ/FZ+DYx+P2Zr+g26Ch8p2CTUM6Atk4ebyTVbXjlEVv4g1zcvmJF5SJ7uMRkJ8ra7u5JOp+aQhSQ3M651Q9QYx0AnM0GF4+vzlTwydJjP6CFaaCgChsOSG0cdfo5t+4M7CmmAF6SToD/r2gb0NPfv3svUC7iwpG8TFx08pfN4Gsb1PU6pgt3yM0WPvbciYh+bzokaJaW1ujnzaCk56POLgnC7aTgRP7MUWcvnJxw4JT5/7PuhlR74BSU4OwGZDu22/nMsU/JtJcAecQOvbmknFK4OqLLrv0MI+wIqAK9LTeR0M+s56IX5vrinOf/HiuTD+zXxE8yXNWZbc/cr+8ETtpDZjOVd85cEibsVGc4483RTjp0Yvb1OqcAYn8WsYkoOZB9JRJ7heuz9PeHfi7ny3dZlo6vRPxPGQhyKAWDFlenvV8sfU0WUFqABRhcFRd71LPYUMgpo8N33Gw2b69FfA47sJYSsNvKNHVx9tWM1sfV6rZwHby4Nw8v9pJg1nIDJxuCECZ1fDe8JihpAK+GDf3ZGfqNkDxOoifAWh5cVNvR/LaFqS74kZ4XED6A/Tsb1op8swY2wYXLG1xzXqcPGcKQNNkBrzP67T/PHnJClf0qaGkZNCUKnWDKHt4gIsmcOmACy72+Vk3pgz0/oMpsHn1Ouj/Hf1KKvjeGK/sWlolCTK4aIePZ/7o70Bth0OsjtT1Q0Ctym/y0KAeOLZ7H1C/WrqfTzICShKDsS7yQig/usk13Ujyazh7Con7tFi0kWFsr83fv9NynmyDyLZ5sqbITCwt8DD55EG8a8zKCZ3/g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wKXpHgMSonz+P7dA3FZqIuU7SNend/KNPXIUWlDHL+1rUVnn2W5EQ1nlL2ifd/dqpa/nPkagb5c++BTOX+N/kLQdvFuJD8KAajb2fWiJv/LvULtqTH7sW2vn8Pl9/Gj4UZaoZROSZm+HvD3dGzqTEsCd/V4NTQAho/F1aMa23kEw+cs1vzb1yETsk+d52TrJnKdiSeJ5IfyQZd4Cww01OfXzUF5FmI5GOL8z6GBF9eYqk61txIsm34/LIs7OvqIq4G9E2MoIHvoMj/5qCudtW2PUQ62XakQ/sH2b8TK6b4+e2Rr9lPfuAIwb/2Siri0krD2WCIg4HbNF/rOSfes4566gJ6+EZ0V3TFPcB+L8Xzx/Hob41qlkc0QmPYswgMAXmANzsyBxgiWlL5Mbk5xxQJ0k4Xyq4F+4l0lBEo2sDnhLIQiyCt7vAjGt8Mibym2y5iwstsTUMRam/2GJ6kz6nANy0Jg/jcNaJKtT6b5aICbrlW2+0UHU/gaFNUWCX1EHrBveeNITNEz95rZGo2Cih2ELhvWaJMrG2ASZysWMHrvxcmJbAhx1HnGmHwq+RzUJGNdOQSQOpH4P2M/LESeA9giVAEjBnzZ3kZRvDO+py75QPtT+mNSUMgZ+tJ0xTh56ywqTwFjcbAamt7rFUPs2qEdTqti4aPSyEzUZfnoTbI5TCZGkCTAXdbwCNJdHgtJOqeRN1Cek7Mu8HANABbQFr1umareHW3kKty+85HCEAbUp5hXxDVM7Pg6mRtkoE7ZWg4lBbi11GJJS9cUPMuqCGTZQN0mVMKAViMOSfB0fnNaRv3CBlLBAb93REzWk915t3+8+dxdFW0XN9NL31O5gof/5tOQi3P9RJdVYcV7TLGXG/y1jLA1cgrBMzdZLiY1PuUU71ffi4RQEwmLoXZGg+UcsFICfp+vBELwRNMvlzMCB2t5Wfhtp97UFUJrnlhegEKMNFMWLyB38v3xJLSJ06mw1a7dJNNnJrLgErq9PHwaqVmNAQBN0VwoSxOS6S4aKEwIRDzev4pfq2/gjj+zO3YHHcQlakBzdxj4mGY5jreXQB9IKo2y9XEosfnb9an6BUy9+gyfFio/NcApV7lyR6bxbN0c4wOEbFmqJ6j/wnFmLJIy55bf7I+JvBlVyMNa5vty6ewKT0r1Dr+X6X2vvM/V7rizDaqp0fKAc+J5J8UzE/0As5xhaRM9I2JIqFxD9x0H79e6AgMy+vjYVH61MVhIL9IS2diHnHJmXdaSbDnQbI1ehG8eOZ0GVSo1coltu5Ew+fFE74TYnaVxZ1rkp5c2Wzc0IJFPzrF+AKFAWYr+XUhPvhsGEgQMPablJ6ngZ0v0flnwRKlPKpajDW9dr/aptavgzcwh9BwSPGjksUA8PjtF4WNtcYcyCMZGzaHZUSMSjfR9Ptc4SlVW7FO9QorvGEJtrnCCQQQ+700wfjUYImq8WC0kh58jpRGIZELCsk7UrmrM1PUqrUyQ9Slr+mZs6hGq130KCi7OMA1tres4lmZEu7IEO4YWi2kha5ZcIWyjcng8lk3eNnqfrkSQEUYREdh6sWBFoOAvf3rUvCJYFF7GdgZzXrU3qOSL6a3jnxjTWk+j4x8t8rYUyYWDB2w== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 658dd1ce-c637-48d3-1959-08dce208c40d X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:04:05.7764 (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: 6mjeabDYvp13XlTyLTJEQF2Lv5ejPoxzpbqUA5zH8CdNNZ2c99+YksAFkD8CZFEsZWRqLnzwbBEzdBb0o0GmYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8702 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: Gagandeep Singh During DPAA cleanup in FMCLESS mode, application can see segmentation fault in device close API and in DPAA destructor execution. Segmentation fault in device close is because driver reducing the number of queues initialised during device configuration without releasing the actual queues. And segmentation fault in DPAA destruction is because it is trying to access RTE* devices whose memory has been released in rte_eal_cleanup() call by the application. This patch improves the behavior. Signed-off-by: Gagandeep Singh --- drivers/net/dpaa/dpaa_ethdev.c | 33 +++++++++++---------------------- drivers/net/dpaa/dpaa_flow.c | 5 ++--- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 133fbd5bc9..41ae033c75 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -561,10 +561,10 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) if (dpaa_intf->cgr_rx) { for (loop = 0; loop < dpaa_intf->nb_rx_queues; loop++) qman_delete_cgr(&dpaa_intf->cgr_rx[loop]); + rte_free(dpaa_intf->cgr_rx); + dpaa_intf->cgr_rx = NULL; } - rte_free(dpaa_intf->cgr_rx); - dpaa_intf->cgr_rx = NULL; /* Release TX congestion Groups */ if (dpaa_intf->cgr_tx) { for (loop = 0; loop < MAX_DPAA_CORES; loop++) @@ -578,6 +578,15 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) rte_free(dpaa_intf->tx_queues); dpaa_intf->tx_queues = NULL; + if (dpaa_intf->port_handle) { + if (dpaa_fm_deconfig(dpaa_intf, fif)) + DPAA_PMD_WARN("DPAA FM " + "deconfig failed\n"); + } + if (fif->num_profiles) { + if (dpaa_port_vsp_cleanup(dpaa_intf, fif)) + DPAA_PMD_WARN("DPAA FM vsp cleanup failed\n"); + } return ret; } @@ -2607,26 +2616,6 @@ static void __attribute__((destructor(102))) dpaa_finish(void) return; if (!(default_q || fmc_q)) { - unsigned int i; - - for (i = 0; i < RTE_MAX_ETHPORTS; i++) { - if (rte_eth_devices[i].dev_ops == &dpaa_devops) { - struct rte_eth_dev *dev = &rte_eth_devices[i]; - struct dpaa_if *dpaa_intf = - dev->data->dev_private; - struct fman_if *fif = - dev->process_private; - if (dpaa_intf->port_handle) - if (dpaa_fm_deconfig(dpaa_intf, fif)) - DPAA_PMD_WARN("DPAA FM " - "deconfig failed"); - if (fif->num_profiles) { - if (dpaa_port_vsp_cleanup(dpaa_intf, - fif)) - DPAA_PMD_WARN("DPAA FM vsp cleanup failed"); - } - } - } if (is_global_init) if (dpaa_fm_term()) DPAA_PMD_WARN("DPAA FM term failed"); diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c index 9fd40fa47e..8d0875f5ec 100644 --- a/drivers/net/dpaa/dpaa_flow.c +++ b/drivers/net/dpaa/dpaa_flow.c @@ -13,6 +13,7 @@ #include #include #include +#include #define DPAA_MAX_NUM_ETH_DEV 8 @@ -796,8 +797,6 @@ int dpaa_fm_config(struct rte_eth_dev *dev, uint64_t req_dist_set) return -1; } - dpaa_intf->nb_rx_queues = dev->data->nb_rx_queues; - /* Open FM Port and set it in port info */ ret = set_fm_port_handle(dpaa_intf, req_dist_set, fif); if (ret) { @@ -806,7 +805,7 @@ int dpaa_fm_config(struct rte_eth_dev *dev, uint64_t req_dist_set) } if (fif->num_profiles) { - for (i = 0; i < dpaa_intf->nb_rx_queues; i++) + for (i = 0; i < dev->data->nb_rx_queues; i++) dpaa_intf->rx_queues[i].vsp_id = fm_default_vsp_id(fif); From patchwork Tue Oct 1 11:03:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144827 X-Patchwork-Delegate: ferruh.yigit@amd.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 DFAD245A79; Tue, 1 Oct 2024 13:06:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2CF77406B7; Tue, 1 Oct 2024 13:04:16 +0200 (CEST) Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03on2040.outbound.protection.outlook.com [40.107.103.40]) by mails.dpdk.org (Postfix) with ESMTP id 18DF440B9F for ; Tue, 1 Oct 2024 13:04:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=T3UVb/FEkoHRyaK0NGZlGo7lDec1hfOWoC0ggRnzPq+0HabO4gbI7iXYaN3dy6ox8yw4r8b1o6npAO2cFbcyeXN/JKY5g0r8xUhewNXN44P+g8tFbuOg2DjNJo+Z774Ji7ViHxgP00LcGMCOjAl6xpj24NkcZa1rIYuZpRjLM6Ag0/+nTKwWsXlEg2oox9xv/ISfsTD/gt7gwghPxygbgnSLWVl5YX4nAe5J5yWvYtZKP8nlJZGKVeHk47bLIjkLTlUuml0cdWFTs5ZUdlucFkHpFAQjTFnFxlyIkqmM1urBK80KNMdL3+0SJqvS001Smi9aC82b9vEZw7u+YSm9NA== 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=nIHEYb+iVdZEmKXCeSRSt13eGad6ABBBk7tLqR5BCkU=; b=emnWlPKoIYHSYQtu5BykXPv1txsTDHgrfevO+0cDIVRzQoivxjkR5taWJMcFS/gthBNwVJClLUU3XOCLXF5jJMR32n/Cw/9qxxI19kQhSHlULY0gGl3AIiQPUv0ikMvlsRZFycj09x0WvObQWvQ3PV0e4LWXed6sRxNQs/L3/DR6cioGvvSEm0h3Q/jHknTwa4UdFIELkmHWihH/O7CLFu4gWfdZBd1/+R1w10tDcbuUG/nMeQTV1e8gRK9b/8dxsV3H3wAm0ThD4atrDmsE/SiXkNC6TVu2SH9aFi5WxPZsmOmn4o6AA31b8eXH7ZIHInFUcJhvZs82cdkcerE1yg== 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=nIHEYb+iVdZEmKXCeSRSt13eGad6ABBBk7tLqR5BCkU=; b=NQFyrteI4/IPCZCg7EnduHbeAsjUJtBGFRolkzdCXBV63j/LhtTpS4/m9i0/TIBEe5agFEHKpIID8HBjNM3d7VUZ08js5bWc1LOjBIglBf8njHfGEv152mZBdKYPNm7xtgjRQip0pKd/qTvtADD+R0dwFqBPsDC3WtgNzoxAghh1W7/GPh41KplXA2eXLtbWyuEnYQxkllE7LVcj2tq+7ZgZsgGK3CqDgNajr1WWgDQwo7W8FkrKG4HcZNuT1ox76mkCx+2xTpw6V2F1Y17a65tLokIB0fitW0n8AhWDhgnGBI98YtEhyehR32Fyvp0Ei6iqRKGMKGVraD7EjwxKGg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by DU2PR04MB9196.eurprd04.prod.outlook.com (2603:10a6:10:2fb::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7982.25; Tue, 1 Oct 2024 11:04:07 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:04:07 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Jun Yang Subject: [PATCH v5 17/18] net/dpaa: improve dpaa errata A010022 handling Date: Tue, 1 Oct 2024 16:33:24 +0530 Message-Id: <20241001110325.4173762-18-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|DU2PR04MB9196:EE_ X-MS-Office365-Filtering-Correlation-Id: 86f6e1fd-4534-4924-0964-08dce208c4d7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: J8jnu9aUSfrGdncyyL79+fn79uEbYrC6vlAIhSHglPKKoxNyzPyeymdOpQXHTGW20+MYzQ3tGS/twKDDVc56y/dAtbL1Ksq20F5DDhU7pAW69FGLZtPhq27iIViuJCyUULU5KyPcJeEojGdL2NNU/H4EQsQwJIYurvGYfcf/aJ25TLSgXA7e6PCG08n7BVFixnYP8Dgd6B1XTcPiu9FWcWPJ7nsF5t5Cq96I6/m7xu6ri7XpXrKty7i2V5qIaxDbIIxUDnatpz9UPIImjQDmQZd0TDVRSbkwbyzZIOr62wTV1m7Ax4od7JQXkgkV0YFwVOED2U+wAsqhdH8p/+DT4EtxkWtJGlLFTkkpQTNMIcPFMY4APUvJOzkofTJMNh4mTr3USrWe0tiP60GpitYMMrN/t9nZGagJ+4S+y/FWHBC8QntjjtAZ/K/2P5JZ/Ptygv0suPrKR5BNmYjPMIdnyQuZehdlrW4F8bFKCjZOW7cyxF0+QKK7y134ngDF5jhrqpAZKh6z6Ccju1rzGT8YP3r0tOXYFjTSxTylCBkUlflR7c5Cmo0h70HuojF8ZnOePG8YDEZt01rrvLXBVXNpGW0jAzo8FruR237JZxxIw0jfNbd193ayQmJdgJvrpGoGGXqNYznxRUpfB09JMzSOQ/Mh8VlmprsT7NaraGiUyFblvpt+YT+9wWLQlST2WwITkv3M3SVMBf6Q27BZMCCEJTFmGBCffIhihHnWLkA04XwzJ6GKcNysfGCaFQdKOR9YdX8bH8IEmfIL7qY8Mg1/s4AKRLw3FVx3Cla98x2CZuGICxt6um0XDhw7e58d+DT6Lch1F279q4Bi7lsoQKYDfSGd9LFr6/pjZk2plzV3lkxpbw2hXiEbn5kKv3CNRD/PpEORHXjICM5X4EC05g+3n7hEQZkLNdtYZ8nJU25bq6l95IB09E0wQ1XWguFuzyxz/OmYSAJpBVUTzZyTGWokILLUG3mgDuyAMCqr6tQsUxjs9VrB+ULac5FralWUmPt2rDDCd5zQG2M4oX//V6uiLfyg8veoaVYL64p20l/ZDDrEvXQx20fXxLLfC4GmlG5UgBNrwHlFkT+CQbGAHRphjBHnCwsKsh71b2FpcO85K0l5k8RLmDJxrBnp/yhhRwwquvzRaoSh+T3IP9jiXivAdPoRYOzZyFAitFUMTvZnVBXpDMN0TOeFod/HU1XuEA1cUvIB7tUVZJWBrnLsgKbR4rUeAt1jtqU4tdyVU2xjKlkkRnamvVh/FDH2oTDFl0txQqGTlGp5wf0qVkWgtJp1dGfG5t8kbt3n/rXG6E8iJFmGAmj0S+jXwai6DJmC4l/pCcMaR+aJs1hnvUH4ViT1Jg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qHb9Rt0+TtWgHHgIJPa4CFSIKmUObVa16Sy20fOPH5SY2GkyBaCuFpb52/E4ZS4A08N97AadyiBGRiTL4LeyN7w4swXEJniQFPmfOj9Px/u+2aS5FzvvTtUbaQnK3Z9UvyRF5OglMT2M4aGT8x04KajaH66lhomgmM7SQpxIoAHxXZU4bX4riTtDZwEAVG5wD2Re0gH0TdlLBkPGM11vpm4L3cyh8BNrX/dLAMI/OUII+Fc6SiOja/6ONTbmyvdej0Q1HTIg2FlaUV26g8ZDt6R3NVbPQ+gIaTWi6WymixQBCmIjXzcXhSATp5AFe3fuj0g6ZpKTp1hMCGHFnS0WWZUs7mh5fZxSV5os98JS3fQtXWyEXzVzY+oNNkHd9bXzxguBsRid+CSaInAbHINKW2mAHEPP8qABOgzlR8afEg5TMu4BEg+0dg4dYhgwqMrfFSGIulbKBM0QLKd6siA8wwiIWDH5LN4bA8WDCeH7OG4ksrWuw2SPGMLTWGUVX44yZWV6LwPjviHtDWyB+8ZYY68JCBXbNAsaCWGa+o/fENPowPxxlJ6mlabdOpJMAp6mZMjGs23MrFTCO7tph7lcuLxY12Un4FjCG5GP3SPs5Ws+YYbnx1DlY8RNOq4kiRlZJ0I+grGK2d5THgTe6E5muipQ0q7nfynY6idv/vp4kS0yrVkzIas0dplyXoK35bIqmx6Or7U0Bs3PVyAVeT4RxivcDPEKke62PVhm98sclUBqPNsroX+Ia0FuKXe+W5+7X+tXxGe/NRkQUzl3xqd2Toujc5o8edx3QPSj90vLhtGCvZ8L/OB+oW4pjh0ObNqp3coTwqiNpEoVdyBEU+sI8EQmYXj5mP53yLjv26xFIlq7VyOeL+FK5fb0EO5owFo4fERGRPLsWDVvTI9EU21771s5zJ/TNscDwLIHdeDVvyw5eY7WvF2oc4lswnMys3Q66c7auL6Scx9+ZIN3LGMfyWMUIAT6Yr1oNXJyryWQ7/ozY5E9DhQkgZ8dd1RbhvtdsiFuCjzm7JVKCfs2RsPcZgTlgksqyz6Y0kXRYsAFnIdvH1GQpx/0G4q6bf/sQxqi/wHexjGwHexFpsTX80VwIih1Ndo+o7w2k1/FsVn9nSmDIHxr+pQjeMvC1UJCuRyMdGaHl0VLys/Hg/V+Afe1rLl1uQFWdGs53xcx5yXS1Ndg7XpBd1PW03f21197+h4wUAQASRUs+D12gJOMw4Rzu+Kc7ZCfVR4wlsUOib/zzi1sM20o2llYaJAb8krGvFuycqFJiuuuGIyoee3UfVDuWlyyoBk5n9Le6Y5oBV6oI0+MYELJH9KggiXsEZGOaUMsnVtCMySaU2bKXzx7+akdutghEawwPu0HFH3+u6wGp0u08tN8NiWZ/UgUb9IqTXl9N2t2fve2Y/xl5CXNho+/bF4nPfXF7VwP2sXXOCqs6e72FHwIXZVchPDa6ZiiwMB4Jz5yQk8J/WlETbOLiG7wrr1ZZgeAN1IiesrJomG5/5/5y+SF4Dlwo7GXDW7WI97oLaaX8oBvbdeCD/XAOImK5pvxX++LEQdyfONuOEr6q4FslRw5MzBO3QDcamASkYmC4NkHJejKiylSEIeGeXSyNA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 86f6e1fd-4534-4924-0964-08dce208c4d7 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:04:07.1549 (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: 1h2mlbIjp7VMp+DQjGXqKMEBpaxdv5AHU1qm/iEI76jOWPDJvJKONAbH2YvJ1ljLAjffjmmiD6yn6da/YDvTsw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB9196 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 This patch improves the errata handling for "RTE_LIBRTE_DPAA_ERRATA_LS1043_A010022" Signed-off-by: Jun Yang --- drivers/net/dpaa/dpaa_rxtx.c | 40 ++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index d82c6f3be2..1d7efdef88 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -1258,6 +1258,35 @@ reallocate_mbuf(struct qman_fq *txq, struct rte_mbuf *mbuf) return new_mbufs[0]; } +#ifdef RTE_LIBRTE_DPAA_ERRATA_LS1043_A010022 +/* In case the data offset is not multiple of 16, + * FMAN can stall because of an errata. So reallocate + * the buffer in such case. + */ +static inline int +dpaa_eth_ls1043a_mbuf_realloc(struct rte_mbuf *mbuf) +{ + uint64_t len, offset; + + if (dpaa_svr_family != SVR_LS1043A_FAMILY) + return 0; + + while (mbuf) { + len = mbuf->data_len; + offset = mbuf->data_off; + if ((mbuf->next && + !rte_is_aligned((void *)len, 16)) || + !rte_is_aligned((void *)offset, 16)) { + DPAA_PMD_DEBUG("Errata condition hit"); + + return 1; + } + mbuf = mbuf->next; + } + return 0; +} +#endif + uint16_t dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) { @@ -1296,14 +1325,6 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) DPAA_TX_BURST_SIZE : nb_bufs; for (loop = 0; loop < frames_to_send; loop++) { mbuf = *(bufs++); - /* In case the data offset is not multiple of 16, - * FMAN can stall because of an errata. So reallocate - * the buffer in such case. - */ - if (dpaa_svr_family == SVR_LS1043A_FAMILY && - (mbuf->data_off & 0x7F) != 0x0) - realloc_mbuf = 1; - fd_arr[loop].cmd = 0; if (dpaa_ieee_1588) { fd_arr[loop].cmd |= DPAA_FD_CMD_FCO | @@ -1311,6 +1332,9 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) fd_arr[loop].cmd |= DPAA_FD_CMD_RPD | DPAA_FD_CMD_UPD; } +#ifdef RTE_LIBRTE_DPAA_ERRATA_LS1043_A010022 + realloc_mbuf = dpaa_eth_ls1043a_mbuf_realloc(mbuf); +#endif seqn = *dpaa_seqn(mbuf); if (seqn != DPAA_INVALID_MBUF_SEQN) { index = seqn - 1; From patchwork Tue Oct 1 11:03:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 144828 X-Patchwork-Delegate: ferruh.yigit@amd.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 EBCF345A79; Tue, 1 Oct 2024 13:06:31 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 84B4040E22; Tue, 1 Oct 2024 13:04:17 +0200 (CEST) Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03on2041.outbound.protection.outlook.com [40.107.103.41]) by mails.dpdk.org (Postfix) with ESMTP id 3E28B402E3; Tue, 1 Oct 2024 13:04:10 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=rqzvbCa9ge8AwB2uj52A2zzkkZMHjJjgYW4xzZCeV1UG3wwT1NVsWUWAR4P7XhyijWU1zns95ge1AVn+Wjv2hXoOH019NkuOwOFjvvvj5911FHM6XyBZ8WEm9/kyjegGhehO3GxrN7D+P4huXDpASPLGfOqW2mAVlWT2rfComA306kDtgRd/NkHijuhId+BR7UcK9J+hn8YCufOj0A7AUXmW+pYIiaVn/qawJon6BwgMgE5u72U0SiscdL6Kb2SP/cH+zYyRho48W9Cbl11FPyF3iVMS9jxberXdALWJr7Df0Fc8/38VZGyCpNPzaFjyKqIMClQ6TrdA5D/lyOY3Tw== 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=EBbUSWMhUWs2SBqpL7IeEGcaffwFPxJd5cQ+a9kpbvs=; b=vrqY1QYt3V/68MjHjHp/2EaSzq4zciJRoGNkN7Z+INsKX+hMuPzkSkyi/NawuAxKHL7aUfj2Si9KX6mTSw+TjFloBx72iA8OPsBcPXbkxpBQAx+F3rqIietaVxqrmob/qV8wWEtVwhQwvFbOkEWWvEO3L3lMfsJ5wFwhSweh+99wsApujPAnMZpybYp6gukR43siwZ7UOLiMmkJi3rtQDvuRwFSjK656XAaS2mFQpM/9pTHGoJW5qkeBMSalIEuxW1F6IEHkj8+Nmt3yaxvd6OCxVvO9O4pmwkIM+C079c5RntrvhCJGQ6FpVi1XwR1dvs6Ii5Q3SSuHaiRZxWxSNA== 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=EBbUSWMhUWs2SBqpL7IeEGcaffwFPxJd5cQ+a9kpbvs=; b=g2eJFuiHnec9nH7z0CloXCf4Y+Y9UaX5MUWvIFqhSZflTLm7MBNawE3exWxs4VDMhRppx/eAKlGkzNUtMg1sJvtgGqwZWNxghBmK+8fyPKuwek4WB+iKPQzQGIxvRouLpseSqK3+AaGyaaBidVcDY+Y0/jTdhNbVdYy8p3R/d48KjcJtXEh7K4rszRPat9SuhYeRY+RCtBj7s4Br/3TAqcTX4YXJSPcA9ZAKKPhq8QV1RIgoNk+/l+MEK1Foc6uNfjg75CDx04V7rXwAflnVSPWyfKl4V6DHR01MxhgWrf9XkuXTEzJ+ie+RbDZNb4nFUgUbQqiPt9utoOCoawPhZg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) by DU2PR04MB9196.eurprd04.prod.outlook.com (2603:10a6:10:2fb::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7982.25; Tue, 1 Oct 2024 11:04:08 +0000 Received: from PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87]) by PAXPR04MB9328.eurprd04.prod.outlook.com ([fe80::367:d59:375:fb87%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 11:04:08 +0000 From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@amd.com, Vanshika Shukla , stable@dpdk.org Subject: [PATCH v5 18/18] net/dpaa: fix reallocate_mbuf handling Date: Tue, 1 Oct 2024 16:33:25 +0530 Message-Id: <20241001110325.4173762-19-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20241001110325.4173762-1-hemant.agrawal@nxp.com> References: <20240930121525.3452847-1-hemant.agrawal@nxp.com> <20241001110325.4173762-1-hemant.agrawal@nxp.com> X-ClientProxiedBy: SG2PR02CA0086.apcprd02.prod.outlook.com (2603:1096:4:90::26) To PAXPR04MB9328.eurprd04.prod.outlook.com (2603:10a6:102:2b6::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9328:EE_|DU2PR04MB9196:EE_ X-MS-Office365-Filtering-Correlation-Id: fff81208-f4e6-409d-d854-08dce208c5c2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: 7mnmtQNfl6CpaAuOkee4LF7ryUS6oYYBh0RVgcSQcRuMb8zp3kWqC9MnqWwMxoM2ZWaD8rtp7A+Ro6tRGKt73ZRraYXaSyJombVOdngXG4gh85lD0mF/q9dgA96MrIS7mUbie/tGQTzMI5M1yDotseaUeB4bQ56AtFcT63stlpYFW7cbc2+YEfJ9JXoM3dAs2lrQ4NRcXFP1N63KFnd31Hb8ZTnkE8hud1Xz1FdvNgX/ot0iBEaiSkTlxHUB8wWS3IN2Mepd30IbYMU/OjtLtX4eOls5E96e3Goyi1vyulUUctug27Uw8pfc7TPhdT9hTeLEMnwW9g5CdGK2JkODAvvrybOyHXv2fo3sWjYf2aqZkPO2lBzeSc9ngQNuxwydbybLnrGYixiPMQJdcY69einyODtfAaXWamioUkeS/P6gmvZr1dNqi2Mjbiad58fL8TgFHG/W/DdLddc89A62WRFMBSNA4Z6WIN4jepS3syqL/vgjgfu/Jsx2OtPyf828fqRfh/eLEcTZe8W+Sz/DBW25+mTaAHzBrsqokza9kxtMTtspTXb6sV4+q+yPJWsh6ljinN37gdUcRWGRoK9PWn4Y2r4b0jNz5blv7tov5CH7Ah84dwWXHklVF8aOPbqIs3/46tV2nci2Gfscqy2u1/0u3DVSJef9Kz2dM7tw1MaXYyu5dMxKNf/B0gVBB3Q1yN1xZT5Zun6qkpqiewSP4owqdPa6qDoZIwXitsqmvNMGrCtJ4N8ZkECuDKbloZyUxgzF+mX4sP8TGhQoAKH+kyst/l5jac1ME7KDYWo/K98E/ih/YGIpr/68zJISBHeWRHY+CZszJCwjNUi5ApS90VgthSQkKHz1Xvd1/6klhbGFr8VRFVFVnX4Ib4ZEx8KhDPoeF4j3QCznqgd5ODbDLfVYivzTrHh/Bnd9rpPS1mZMiJ854bLfoEQBP5C/lJlsiI+hjTMXp5aDy7JSOfr1WScaH5PDspYh13fz+GQJgWqHNXAUMFXbbzu2WjhhbcmBIMtpr7fT2LcPM2PCJMTYpr+7mqEG+szqPJhxD1q876mBAGW34+ZTkt47L+kfqf8dRxcYg96yCrfs1afRuTboT+jhFZyluCP9u+KzZHuluPZe+xcZ2FiQP7cRAMb3F/kgrSAbX4zWFGnd0CclbnNJhFw8pbfR51ROrP55llCROkBBe46bTVS+KVtk/OiXDw2ez2vU2jbDaTGKrjlvK6Ms6g6J74JhOHHHldtIdqeoy6LlZTHMdrni+CjUHX2Xd3n0WSWmyzrzrKHk3hyhSyYz160qmRatZCiqEi/CQZ7s4nXd7ak6sBEmvGZReDWvDjUYfgiLClUqDXhWOKUL5QoHBw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB9328.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BY1AMvjQGL8Y7B3+A6hJ63ZJUfhotEgD909/3COThSxikyOUz7NH/hgLgrJ/4BGe7PPe6gUtLgjR08bWNSRF1C0/lOP6pFIf6OMNOG461UUV5mrPrPqhpiVSZpNfFp8G+uVmltDBfT1uzzQV+75z44Z2e0N8IJPOFYIVCAl0jYANdHAFnPsH2vi3ccn9HgCn1MQr79HWGKQzqq7fmzp8HpKupl1f1yg4TJpmf0ao1G9198MlGw8U5Aa3jML2eimaJYSx6sx0K1t7xEWZGwsKN27cR1weUulBD0rAdjQ/dplI23+BrCGndFqo2EKqZUHkOqMSOGh7pEbgEjvWIpkyX0UcaSevNXHZllyYCX7QLB5Kjurb7ctwjaGIaqvJL9o5lkFvLwmQ/wdGCKN62h2Ks8sv83h2hb4AdwCMsSq37VZrL0SgXcAzDEsp5gBPhVtsZ3wqSXKqpYFLj/YDxGoy5liF8Xmvjb4x2cBCu8mDJqQGchsOGSWm/6dTTnXofE9hKq1QmQ7BsZSJHRbHnP2pfWjhsRTuVrmzATlZ4o5d821oqBlMzoae+9Uj9vJrBvADmtdcEBHsqIsErQu//4PE3Bho3oMuRR8XBWAorLVpIVaI6uq4JEEZuohAD0aEYOZt9fBPgjo1muhrCQfEtXcaEohH9NQx3wmaLQrA9kNFJb0vUvFApqYPvPoRu4kJ/f/hnrueb0ImKb5bUbpkmeLUEeMh9FaBNQRkZgYS+HhM/n5M3yfdEuBvc9gYtX7CnEsdwUjLYmhe6Jr6kJ1v9q0X73J4uhoieEc07nqMeyvonx7cduOjdYaBd7yWDbD89l3/K7AdVfVYsjQW6r3udt7+SsapgCvTtGyyK1et//BcgvtWwYUBwN9PKeP/yP1QRBVuhWRvkW63rIOTZUCtIWwpfNiIGAl+MI0Xbp64kBeSq3O+5g3xMHsRt6+/AmP3lvJkbKCpPomHNcIRUN0D1IaJmAx1vEektPsOPNSLZxSdZiuTvQQ1P8FsDYr7KebrD71xqcYVjN37KfrPTaJcIa9x/5oOtOjMi+x6J7vuQVjstRIBlF8vWj7aJlyN33DBbh8OotqF6D4D7GsVitVS2xpwjlhaG5F60JAGd6Wdab5uS6JKeFCYzTC2Ea3+YPbhGvppnabo0wMWCefZx3BVEldi99pncizNV5zkIa4YqSSAE9lSflJwDLvxIKGlyvVqn+2LFQ0WzVSM/2jj1mDncaNc0vOmWHwxN1N14rLH8KgfnWJ+ilQ4sPGoNj2OJhJ/G+a6lYP2GfmHc3P90HVmCW3VscF7v6ZOAfYXUnbyWnf58DDm5gwJ9DiTpmvYW3suAsSd0gElt4JpofHaD3m6DE9N/QD7AQB1DcknH0ttPWwGgF8GazX3ctnE85wGxxydHAj+BHJcIylU1q+kbNzUH2ymcU1EtCTkBzYa5waq8H2GybgmaSggIiv9JjIqGtl4vQHEguhzNjEdV5Y5TokAsv5NYAX3IwO4/c/N4kaMKIyCSavHk+hUEfhdJQ6ABW7rpIr9xeSUn8WmGAf40YKn/e3vWMc966wADDchdsSe7EYHzcvWj0CxTikOVvYj2lYVCkgCl0WJA19ElCMX04XAukh/qQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fff81208-f4e6-409d-d854-08dce208c5c2 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9328.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 11:04:08.8069 (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: lTBHi8eQQd1RdVEjasqleILBy5Em/Uv9kimc9r0XbhNwV3oM+dc0+mSsGo2HJZSwzvPn/Qi8omDN6tFPh5GaaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB9196 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: Vanshika Shukla This patch fixes the bug in the reallocate_mbuf code handling. The source location is corrected when copying the data in the new mbuf. Fixes: f8c7a17a48c9 ("net/dpaa: support Tx scatter gather for non-DPAA buffer") Cc: stable@dpdk.org Signed-off-by: Vanshika Shukla --- drivers/net/dpaa/dpaa_rxtx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index 1d7efdef88..247e7b92ba 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -1223,7 +1223,7 @@ reallocate_mbuf(struct qman_fq *txq, struct rte_mbuf *mbuf) /* Copy the data */ data = rte_pktmbuf_append(new_mbufs[0], bytes_to_copy); - rte_memcpy((uint8_t *)data, rte_pktmbuf_mtod_offset(mbuf, + rte_memcpy((uint8_t *)data, rte_pktmbuf_mtod_offset(temp_mbuf, void *, offset1), bytes_to_copy); /* Set new offsets and the temp buffers */