From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2AB0045495; Wed, 19 Jun 2024 12:01:37 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E7D2542E77; Wed, 19 Jun 2024 11:59:28 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2102.outbound.protection.outlook.com [40.107.243.102]) by mails.dpdk.org (Postfix) with ESMTP id DC1BD42D7D for ; Wed, 19 Jun 2024 11:59:27 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JqnTv7fGF1KOxMjRBY7BbGmTqoN4tz4VPmGM4RO62iEIivLiQD8B1oeMzaM2LBfrjbzHxq6cidG+rgVvAlUm3zWuYXQJhSX35YCa4jdodS4d02b8zywFYd6x9t6k35r+KzZKk4jyebtrwHajnxKlyrRAfn9P4FuA0MmLGox8svdURc0HDBQhTjD2CnXeJqTY+EJ33gu6PzXLX5PkHTbqdkBrPi0m7YWFMQsWJ41GLsQ+cPIzf9YYqcYOD5Ud4jqb8Bm5XIVfFLbfEFcIBEJzm8Txkf1MjWB8o6dYhvZfWj+KyH9UFcinLcIr1/LDFKxRmA3AzutBHtKBnfVAW0Oq3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=999WHqQuGz/WpV7KThItqeHZmNAkk4bx09PVp2u8cVY=; b=ggJgzPc5XVB6zYg/otQCscPAX2E/bdX8m42ggTuDXAxrnGOOx6f1LsH1vJVkriGcMG+LRs2IvMlD9dHjoUkySRHkD8oBXrXAHXc+mxGYfJhQvOGYm9/RjesQhMj/qs1K4vQp04+45MO8QBHuu2D7focIEiyLl914igykMU2H+5wu8c9fKB5IvM68FgdBVAmaJcU5JVDlJr5yIkZfBS2i2cy71bLbtI8+sQgr5eIZwrU/AaJ8prFjzVZnvBkqBs8IK5E5sMMyJRCsw2+S10m4IGhkTbQKp3ve2ljSk0zMs+7GxyVMAYkO0Fkljch2o48qtkroAqCy0pCiwYMcwOg0yw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=999WHqQuGz/WpV7KThItqeHZmNAkk4bx09PVp2u8cVY=; b=HEFHhRAXTEgPkdrq5/VXRd7OA4C8YvLgaJ7cqNwWJpfkC1COHJVOYtH67hU9/VOWgyO9zv/JYcRP9fc3qHPO5f4GXKvEznyg3xLybw9HNx+M60l7x/W5URU87f32O6bxJFSZD0WljSeW6/P8sFyTtRxkL9/UFN6jtVDiRJmrs2o= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by MN2PR13MB3912.namprd13.prod.outlook.com (2603:10b6:208:263::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.31; Wed, 19 Jun 2024 09:59:26 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%4]) with mapi id 15.20.7677.030; Wed, 19 Jun 2024 09:59:26 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Peng Zhang , Chaoyong He , Long Wu Subject: [PATCH 19/23] net/nfp: add support of ring pop and push Date: Wed, 19 Jun 2024 17:58:26 +0800 Message-Id: <20240619095830.3479757-20-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240619095830.3479757-1-chaoyong.he@corigine.com> References: <20240619095830.3479757-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SJ0PR13CA0057.namprd13.prod.outlook.com (2603:10b6:a03:2c2::32) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB3912:EE_ X-MS-Office365-Filtering-Correlation-Id: 58054bb2-d526-448c-8396-08dc904680a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230037|366013|376011|52116011|1800799021|38350700011; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?PXIwqrLRgYZ9Z1ZuBZQU+6db6fCL572ifDtFDvEaASg8Dkl2pgVGctaEwXE+?= =?us-ascii?Q?aATspKwIHU0m17Hx8vuxMdPri0DeD73fwYQYMK/7RNwj2cwWdUDisC4qP6H1?= =?us-ascii?Q?kkdXwSR1qJUkcHjSIr2gV8an5FLytVHUTpjHaYvlmXUoyQPczJl/BWYGVjs4?= =?us-ascii?Q?7OEswL1SWA+DiUL3guf3O0hPfiOlpkANYx1hcYfsRgqGKtrw9+F8oMHZw0vd?= =?us-ascii?Q?hwopv4pWaHArma4+HNQNm0L0LsNk+Z3TBdA8tNt4LbXgV0338DwBFaiYL537?= =?us-ascii?Q?FN51+Gx8FcKCdjVfDZwa6AeOQsgOP8I/at1p7QzGtAVdVmIGjjS7ZZ0GFLmQ?= =?us-ascii?Q?+KzFH2Qnyk0m5Bklsg/QIZz1UWAKuEITas6KoSjtZG9Z5cUI8ZMX2Y+Rn/qK?= =?us-ascii?Q?7ULBaOQnxwsMefC84+IdNZ7iaN8AImk4xS4OsDwpFN4EC9FwohvG6wQNLGZt?= =?us-ascii?Q?8am4Dx2G7P110brPJxs4oY0IX2m14nTvAMrsx4CPxjtpKpaxJ2uIFPSvZJCC?= =?us-ascii?Q?ARhOKnJ7ESLwn8zfu2NPlz101/Fdl+ZR+gF1wWoFoVWWy4jfJU95pkF9Coqr?= =?us-ascii?Q?ATh9ii5JIJ2mR2kcT5oWc9KdfTnSI2W06OyuHSiTEOFTtreeJMTcowNozX2N?= =?us-ascii?Q?RNOnzrBsf8PsRk39wz8dcu6dnYVEr+SKEQAFW8FOMb4s+prKmqO55klcNRQi?= =?us-ascii?Q?lV/ATsvzoE48RkwQS+kFtQj5HeLnsYlWJ/kk6SxklHdPSSuendOSbAaUcXVX?= =?us-ascii?Q?J/aZKa3DmhlgqBDksRIGa/u8SojpAUc7e4g+0Q7jtI7QMkOEJLxxnYPLWMle?= =?us-ascii?Q?U79uDB+Po62D9liTn5yxH3Uqr5fKwEr6lM/ZTcedH6+Ox3D8iPwwjHaACXOc?= =?us-ascii?Q?IvyRrcCYyw/+qnlIZTjGyF3xhvicQQyuEAmfwB/SyUS6T57hGHYDqEa9wQuA?= =?us-ascii?Q?72wpchKVAm4RMGbHHB+ncoJ0l95gnV376SccJvuSjc0EgiBMFZvw00b0ODd5?= =?us-ascii?Q?DDkkgHMp2wNVaeNA6NbSBoo4fP4ptsjSuXYYNfk21/SA91GsPcdzPvZ/K47h?= =?us-ascii?Q?bAZEg9ES7rKlEOjm6A7RYFg1VLYeJv3oumMoZSAZpZrmDLdhjI9IG/ikxhkX?= =?us-ascii?Q?k6k8OOOU1dQYVSBxiwo++63gnbRWCs8EivjLMCjL5nhZdqq/+h6sZTbv95Rt?= =?us-ascii?Q?l0Ug/kwduh9rKfyxz22QGiHo0GC5iJcGF6GCgQerFTghm9KLAmXcCbz6X4lR?= =?us-ascii?Q?bZSUZV4gteO9l3P6975fviQotMQFF1SZqDCtwkd53HRnUoZ+6GoC51JZj7pM?= =?us-ascii?Q?oYOhw7oAesp+Gps0ZqObWpDbl16YsJCft/FH8kQG4GsuUGS/GDI+YK/ZIpN6?= =?us-ascii?Q?nreuA8Y=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230037)(366013)(376011)(52116011)(1800799021)(38350700011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XK3oH1QNCiylDDMdcc67bQveC7SoBxdLPtunEkbGmdeUNv+vV13m3bz7b55i?= =?us-ascii?Q?WuF54qOy2mAL97f1j2kBtiUFcDAtH37q3LXGUUd5MXqgz18gozW7qmMclzY/?= =?us-ascii?Q?z5i5MnRsx1cCyAzNta39pNRN94ljA7lfCgQPo0diHpoK/GuFCRBt6EtLsoI+?= =?us-ascii?Q?9jtsoXRsiWLwBBmtUXDATcg37TVArq3kJilBUeVkvrRD1x3Rd3xT/2N+TvMo?= =?us-ascii?Q?1wXbFwS3Bj5sfMganDrnPHFhdh9Sh97o3STyI/7OEcJo6TTNyrWSRPws9bge?= =?us-ascii?Q?3/eTjIJUFekT3MQk/DFXPnbjSs8YIdzVSjwK3GJFfXHtWf+ZQb4F7LQ1csQj?= =?us-ascii?Q?KF/ZRIAFkEP8PBwjgf12XnFr47Qc6cMs37+7389sPXV7GPWxjX4h38IiFfNj?= =?us-ascii?Q?vgI2ecqEw8GI0FiCJWH+t4MrdoywCWatmIp2zTCKSSbMPa8kNf80kv9NNH2k?= =?us-ascii?Q?BR6vUCngNlmk6i/ggGe0tPSlrBxmUamj07hNK6B1+6/V7NfvtYU+lagLSukn?= =?us-ascii?Q?DdaSL7Zi8/ahaDbYJK1XwzlWr9pd74Y3ADfUjtP5ULP2WElZxfVPJuMf3sh3?= =?us-ascii?Q?c10RlPCyjWf6XkPFervDtmFBmhM+JJS/QHBQTFf4k9SrKIn7TMg3rynYYqgL?= =?us-ascii?Q?X4fOdU6y8OlOwFq009MuIR3bYeg+tpl2bdcRNdhXA6V7Wj+POv8LLxwyDsRt?= =?us-ascii?Q?qeOBA2lSDwrE72Qcl9SuJZ9q4QvEPh4TXkrIH32q8suMjWarRPjwF4oIt2Pl?= =?us-ascii?Q?601AK9TJG3uJ2ILnCEKDZ5GLZOah+klx21xe0zg6NX93ZJp4N0PqReixJ4QM?= =?us-ascii?Q?Y24ILOdmT1eo+bFLiuODAxvArlXkZwTuc/bpVrjRQSRY5+CctXQJEsPEdqIj?= =?us-ascii?Q?YDU+s7UUfpoJu8GtwgXj08ulZswh+AIQVy252vxlQnFBRgGvFLA8ZTV28I+D?= =?us-ascii?Q?AmUAkFHNv+gPybbGEgPMwyrVREern006tMxJc904vQg7cfBA9rDuYx3mOZxj?= =?us-ascii?Q?PZIJN2WLF25rgHtCV7DcPgy7RrJI7wBlidedyDh84M+999gRbm4XkgjmHbpX?= =?us-ascii?Q?pq2SVMRyCIU+XH6dJSjTOQpbvTD8Em0rBZlsCU9zehj2KPqw20mwAVTdBXBO?= =?us-ascii?Q?dYEnmFE3i6yDWKdrlk3DkmuN7coswf4PsO5FCoPLjcDB9Tpb6kihhsZhy747?= =?us-ascii?Q?QBtgoTbMnaFCV59Al8c0qbI08GVi83CAXSfMY7YB9mqLmL/36S4fuoS5iOeg?= =?us-ascii?Q?KCA3o9Cf7VG4LMf3+JOt6VxCfzoaEqseKXERDHkvD5bSg86TtbFwOyANyLIY?= =?us-ascii?Q?rlHvgPLmmR5Yq5pPIckxwkFKJTh6bRWV7nnfkPvyxHsq4A14tUkqNfWkUsro?= =?us-ascii?Q?N2s/J+tH33rEv7ye5DAZRmpDc/WhNnTUu1FxTG/h3TxFRZDFhSDEz0h8gtDs?= =?us-ascii?Q?B3oxHUPU4L9aWjuPoXsaQzWkEJ0TL2ElluQbuAnMk4+ozBd9uiF6Elo6TuU/?= =?us-ascii?Q?YzIxFaNCWG85UJ935VCkzG/YZNKa/kTm1x93Op563HiEkufZIPAiKxAZnsOS?= =?us-ascii?Q?YvPUf4/IQ4c+saNN4Rs3vFFWFL3lBuLswL7+l9qoX62BfR4hY/T2sDMCbOdF?= =?us-ascii?Q?XQ=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58054bb2-d526-448c-8396-08dc904680a4 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2024 09:59:26.3154 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: G4MJAMIIRXwtvh0OPoj9L8KRuc7HTZ0Co2lJEkm8nwAg3VLwW5E1MoRjhaidaQvFUtn5cU9K5QIUapr5diw3VyH+X8EuQ9xwwBuEsluLz10= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB3912 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: Peng Zhang Add support of ring pop and push, the ring memory is in firmware side, we add this support to make it is possible to share resource between PFs. Signed-off-by: Peng Zhang Reviewed-by: Chaoyong He Reviewed-by: Long Wu --- drivers/net/nfp/nfpcore/nfp_rtsym.c | 103 +++++++++++++++++++++++++++ drivers/net/nfp/nfpcore/nfp_rtsym.h | 4 ++ drivers/net/nfp/nfpcore/nfp_target.c | 2 + 3 files changed, 109 insertions(+) diff --git a/drivers/net/nfp/nfpcore/nfp_rtsym.c b/drivers/net/nfp/nfpcore/nfp_rtsym.c index 2fedd4d9af..7d9cfb0d42 100644 --- a/drivers/net/nfp/nfpcore/nfp_rtsym.c +++ b/drivers/net/nfp/nfpcore/nfp_rtsym.c @@ -706,3 +706,106 @@ nfp_rtsym_map(struct nfp_rtsym_table *rtbl, { return nfp_rtsym_map_offset(rtbl, name, 0, min_size, area); } + +/** + * Pop a simple unsigned scalar value from ring + * + * Lookup the symbol table for ring base and address, then pop value base on + * the ring with cpp read and write operation. + * + * @param rtbl + * NFP run-time symbol table + * @param aux_name + * The auxiliary rtsym table name which can ensure ring base and address + * @param name + * The rtsym table name which can handle the ring + * @param value + * Pop this value from ring + * + * @return + * 0 on success, negative errno otherwise. + */ +int +nfp_rtsym_readl_indirect(struct nfp_rtsym_table *rtbl, + const char *aux_name, + const char *name, + uint32_t *value) +{ + int ret; + uint32_t cpp_id; + const struct nfp_rtsym *sym; + const struct nfp_rtsym *aux_sym; + + if (value == NULL) + return -EINVAL; + + aux_sym = nfp_rtsym_lookup(rtbl, aux_name); + if (aux_sym == NULL) { + PMD_DRV_LOG(ERR, "Failed to find symbol %s", aux_name); + return -ENOENT; + } + + sym = nfp_rtsym_lookup(rtbl, name); + if (sym == NULL) { + PMD_DRV_LOG(ERR, "Failed to find symbol %s", name); + return -ENOENT; + } + + /* Ring Pop */ + cpp_id = NFP_CPP_ISLAND_ID(aux_sym->target, 22, 0, aux_sym->domain); + ret = nfp_cpp_readl(rtbl->cpp, cpp_id, sym->addr, value); + if (ret != 0) + return -EIO; + + return 0; +} + +/** + * Push a simple unsigned scalar value to ring + * + * Lookup the symbol table for ring base and address, then Push value base on + * the ring with cpp read and write operation. + * + * @param rtbl + * NFP run-time symbol table + * @param aux_name + * The auxiliary rtsym table name which can ensure ring base and address + * @param name + * The rtsym table name which can handle the ring + * @param value + * Push this value to ring + * + * @return + * 0 on success, negative errno otherwise. + */ +int +nfp_rtsym_writel_indirect(struct nfp_rtsym_table *rtbl, + const char *aux_name, + const char *name, + uint32_t value) +{ + int ret; + uint32_t cpp_id; + const struct nfp_rtsym *sym; + const struct nfp_rtsym *aux_sym; + + aux_sym = nfp_rtsym_lookup(rtbl, aux_name); + if (aux_sym == NULL) { + PMD_DRV_LOG(ERR, "Failed to find symbol %s", aux_name); + return -ENOENT; + } + + sym = nfp_rtsym_lookup(rtbl, name); + if (sym == NULL) { + PMD_DRV_LOG(ERR, "Failed to find symbol %s", name); + return -ENOENT; + } + + /* Ring Put */ + cpp_id = NFP_CPP_ISLAND_ID(aux_sym->target, 20, 0, aux_sym->domain); + ret = nfp_cpp_writel(rtbl->cpp, cpp_id, sym->addr, value); + if (ret != 0) + return -EIO; + + return 0; +} diff --git a/drivers/net/nfp/nfpcore/nfp_rtsym.h b/drivers/net/nfp/nfpcore/nfp_rtsym.h index 3e8acdd38e..5b1ea53bea 100644 --- a/drivers/net/nfp/nfpcore/nfp_rtsym.h +++ b/drivers/net/nfp/nfpcore/nfp_rtsym.h @@ -42,5 +42,9 @@ uint8_t *nfp_rtsym_map(struct nfp_rtsym_table *rtbl, const char *name, uint32_t min_size, struct nfp_cpp_area **area); uint8_t *nfp_rtsym_map_offset(struct nfp_rtsym_table *rtbl, const char *name, uint32_t offset, uint32_t min_size, struct nfp_cpp_area **area); +int nfp_rtsym_readl_indirect(struct nfp_rtsym_table *rtbl, const char *aux_name, + const char *name, uint32_t *value); +int nfp_rtsym_writel_indirect(struct nfp_rtsym_table *rtbl, const char *aux_name, + const char *name, uint32_t value); #endif /* __NFP_RTSYM_H__ */ diff --git a/drivers/net/nfp/nfpcore/nfp_target.c b/drivers/net/nfp/nfpcore/nfp_target.c index ea5b39a4b9..0e7a5cbb05 100644 --- a/drivers/net/nfp/nfpcore/nfp_target.c +++ b/drivers/net/nfp/nfpcore/nfp_target.c @@ -264,6 +264,8 @@ nfp6000_mu_emu(uint32_t cpp_id) return PUSHPULL(P32, 0); case NFP_CPP_ID(0, 18, 3): /* write_queue_ring */ return PUSHPULL(P32, 0); + case NFP_CPP_ID(0, 20, 0): /* put */ + return PUSHPULL(P32, 0); case NFP_CPP_ID(0, 20, 2): /* journal */ return PUSHPULL(P32, 0); case NFP_CPP_ID(0, 21, 0): /* get */ -- 2.39.1