From patchwork Thu Nov 2 02:23:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133758 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 F3DD843267; Thu, 2 Nov 2023 03:25:16 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3686542E95; Thu, 2 Nov 2023 03:24:08 +0100 (CET) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2110.outbound.protection.outlook.com [40.107.220.110]) by mails.dpdk.org (Postfix) with ESMTP id 4888F42E86 for ; Thu, 2 Nov 2023 03:24:06 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E2A12NHujtnUYqn+F/nGc40lOJvbQlQe8KOgAK36Sn97DEq9Ar2CwFyNd8lKuTtMKTeSDlb3qDqnmLdRyBSfA6BI9hpDQkrzCWvB+G/W3TcEKDE0TM28dayUYjDpU9FCMnrdSIR76j7BztSVIOfuQQDsEtxA6cHB/3ids5xMPRyXse095jG6QSsKbQulFa7wfEUfKX/KaIx3ClnBS3Gh2oBFPRTY5eVW44UOIDEyMjNeWsJ6fKHzw4o9x6UVpLTxppYIw+zHtXjxCcHIo6xANRv4HZNmdrrrVOK07npKsQil5sOjJ9+c0bl0XY+e1Yj9LHJTRgNla5IRs57sjJn2vA== 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=UDp3tDsKTtTexA+KHj3QDi52dte7tToYuSTSOVfKSqY=; b=cl7YEir3iGF6xY4SQoqtafiptHDvJHiZQyY2QNl/dXD/fp9oxNZQtdx2JHI4reCX7TUoW8NHx0i/O3Tv8I+jakNzgGpgHpeXDVyDXo1JQgRVpPLiYecu0zoD5loOJoHC/AJO7FbqFktzUCWIm7YCg9ygranFHDzksfnKPlEV33IRU52HNlblTi/INV1F5JUNmLexBm60/X0pXVmOGWdeYvTxSCHu4s+tshiXWjha6SRGshN+SktIiwgZrL9cRSyy671GHEunt6xwqV9biHbvcRlhdaBWzg76a3aiHCb3/5hD/asA//zvxTwXLlqlXNq+7tNaz3XI5hJzdOQ2UJjUxQ== 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=UDp3tDsKTtTexA+KHj3QDi52dte7tToYuSTSOVfKSqY=; b=JvfyjRP00zo7i4M6s8q9FwAtWpNk1Ja99RVLifpuH74wRwDQtbH1b/e/okjFvWNsxz4ABFxYJ9EkZ7K00AARsOQ4Whwx6Zorp+Fxg6gIxJCWxsnJ0OmyzEYHBv5q4pUeh3voHgKrYv3dUPpKVXMVuXosTEaKI3ar9Aa3SkZEiug= 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 MN2PR13MB3709.namprd13.prod.outlook.com (2603:10b6:208:1e1::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19; Thu, 2 Nov 2023 02:24:04 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.6933.027; Thu, 2 Nov 2023 02:24:04 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Peng Zhang , Chaoyong He , Long Wu Subject: [PATCH 11/11] drivers: enable multiple PF in application firmware Date: Thu, 2 Nov 2023 10:23:21 +0800 Message-Id: <20231102022321.2254224-12-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231102022321.2254224-1-chaoyong.he@corigine.com> References: <20231102022321.2254224-1-chaoyong.he@corigine.com> X-ClientProxiedBy: BY5PR20CA0030.namprd20.prod.outlook.com (2603:10b6:a03:1f4::43) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB3709:EE_ X-MS-Office365-Filtering-Correlation-Id: 46adc254-576c-41b9-a35f-08dbdb4ac890 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ffg9uLg9fCKnWOH82MWO2ZeqEK1ykCV4fgRDpmptA9cHIfINjKnzOkIrs8Pe6rCNOXrlocOf35HkRRMXfQZdZveT7V5oioNI2Uu1yOQkm1BUnxYxLgib8YyPEcRj9/O3QHlmXenAL81MRSzJPXTr5DBuQMUB5cq5TQpRatGtohz2zj38oL0bsNMYfMiKXa8PQgoO2wL1ezu+SWMSKnBexNL4DaYWx1IdH3oyErgXc+NN2Co8GELz9qV5sT24VfGz0vbQmZNZBAVbU6WN/C7fVTSEUJevjj5BzQeBH81anpp+XPXBMQ6ItwA3/oY0xCJ2XcqNOxiulN4KFdOaJft3ZFxtvAAUGLzYk+q3n5Nowqi1u27JKlAqZo56GfSjg7y/y8j1mJGl9vx8Tz6Os+HyGzNRRrKB+BwO/fdmvoOoMgd/gC+0C0knbFja0qpNQVZE+bzG0YsQb+7+Zc9RE1AFNIyxCsY4fyqPendcRtN/lzydmF/PGBNdtgdBHqDALsHTXA9VSoEkQZd3UyrRtgsUdWAmEkHSkIbse8bbROddF80RGYWBNC1l9vuj3ldEnpEkXAJWkfcG7KC62iZaOIAZh6M+uJFJVkZAMgfsCa9AQQhRd4a01suJSqW1bCwe7A5CyIBnAmOQqzJNCMPVF1zKLFx159YoyzUXM8ye3kV9yU4= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(346002)(136003)(376002)(366004)(39840400004)(396003)(230922051799003)(186009)(1800799009)(64100799003)(451199024)(38350700005)(478600001)(52116002)(36756003)(6486002)(6506007)(107886003)(38100700002)(83380400001)(41300700001)(6666004)(4326008)(8676002)(8936002)(2616005)(44832011)(2906002)(316002)(1076003)(6916009)(86362001)(26005)(66946007)(54906003)(6512007)(66556008)(66476007)(5660300002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wBB+47JNQR9sp94F7dlsUJXBp+5MX6tHd4GH9pGbqospClX4FuQjSakEEBqJDteoineRy2OePWnfQqZXPslEWISAGCzrzM3Gm81shCmx5hRsG6O+W2hI1IZ4ns3vkCRxJAeVZyk9KsXl3s5Di02bHTLEWJrj7+fMabWo41ppYoUAXMzvGIh5bL27nPQxgSrbrTC9yJ9+TFq2IQKqZHDF288iVgOFYcetSLT+iyNSKW4L2O2ndKtFeKqOhlf6/OMLqs6LA/4kESOZDKVjAgMNfZ8RGrK7CB3AnRfoikX6BXthv76NW4NAcbTmJAnKpKHohhqPWcR1oqDYnDplb9MNFILvx+PKiVZLDV0lm1QtT6aLWMFFa5IhssZxL33Hne4DU+t04vGRTfuI35NowzGC8UjU/uJ+eC8iMATU6VOu0mUqQpQVqBEkdHIeYVDoJ0TQdxSdfik1yb8MRBhso3+8nmlVFXqHSlFOSNQfYTkBCk6pJRe5HAkHgz/fzigp0/dZDT9g9y1qYuxKCKuWnJIpbt7YclinT7uZetmCpM8zmqEkPmdZCsZgxOizmOyo7blDBtH5u46mjg1QkV1Gbeg/jNjQI1BPC4KIak8wbpyjSm2vMcFgux2zAj7hnfc3a8im1iaw2oY7WLAC9EOAG113VLQ6NSnjeZMv8sSTPjaeXSAWk4Q0eOJ7EfOBJezciPM6e/r6Sp5WDvcTXvH4VwiaoTGufaCn+AHDNRPdcxkcqPZ+z4LtuXunOU51ZSG7g8fC9FXUU59Yub5fCLUH7Z1uQCz89QfFJV1Xbc9QXDcPcBggM7u1bxBQFVOGX0v9mK7P59lxuLDQBPoji1Iotg48uvoZ9IUKW+TEtUcWO9l+95qYY6AZmp5QFiPUjBiGHKRHKmSMoI0KdU+O2KQCPcgP8zWiitP9o4AQY2HiyrQ5tQJnGaxTZvdVFMApMtmOj0ESD2llrYiCPBBawbRvG6OxdhNvtPY4iDqbs8P5tAwNyLv7aDtm1Ey5WR/3jdj5P0f3RYsrg4EYalOMr7nJRcoRrwzl1LyY1I4Gpr7nO5AqJlZHf4cMvmUL++/fLG9dAc59VuMAper6GcW55I4uqAzODAuGSr7kse4lOMoIHbkLmBz+qreSTRKilqfBxnCDBhFSlP6I2JGBqdf193o1zfQ7SkeCGpcRm2qYrTSXuANN4sNYrpcxz1hrn00VZ9IUOoP9Wv1FdvgZ1AlOnQg4vwjcoG2DNo3LgdacUQ0cQXtW9DzmRJYdl4NmVK1Z0yHQlhDPt+xAH+GxTo+X1/B7Lc6hsdyNGumminKOIsbSAxPGRmNn+CFm4QdlGLL773MVwmAGE2Sx84zBROc5rMDtydB2EOLd3Pnb6lRmqeyNIt49b++D1pCbBIATQSOx9b+4rw0mfZ9l7DotPw8lahD3f/IlVF/Q3WOuSI/xvm7JoSnxOUe2pWJz45pM6O61PqwcJyjYNGfl6Hchbedf1TYJRvuB3F+yYBNkZjtsusXwWpJ11Nbp8POwvSM7pijYPuxqseohA281GPIqLuvS/nZkhZiPjgM97/T0WW7/lPNbUNYKWTeP0WitEUikQeB2ktlUo/O2s3jewMr866Q//vY4G1+r+A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46adc254-576c-41b9-a35f-08dbdb4ac890 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2023 02:24:04.4827 (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: osx6/yiet0afYObvz95kdXaGAfRdY5NkpA0GcZftVyrMTf7NfbNHig+M48YxJ9/xg5CSvjlkY/pODneeW+DQr/ObqHmM/TtmlccGfOaWfd0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB3709 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 For backward compatibility concern, the new application firmware is designed to support both single PF scenario and multiple PF scenario. Thus driver should inform application firmware which setup current is. This should be done as early as possible since the setup may affect some configurations exposed by firmware. Signed-off-by: Peng Zhang Reviewed-by: Chaoyong He Reviewed-by: Long Wu --- drivers/common/nfp/nfp_common_ctrl.h | 1 + drivers/net/nfp/nfp_ethdev.c | 50 ++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h index 7033c8ea00..8a8a2c5efc 100644 --- a/drivers/common/nfp/nfp_common_ctrl.h +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -221,6 +221,7 @@ struct nfp_net_fw_ver { #define NFP_NET_CFG_CTRL_IPSEC (0x1 << 1) /**< IPsec offload */ #define NFP_NET_CFG_CTRL_IPSEC_SM_LOOKUP (0x1 << 3) /**< SA short match lookup */ #define NFP_NET_CFG_CTRL_IPSEC_LM_LOOKUP (0x1 << 4) /**< SA long match lookup */ +#define NFP_NET_CFG_CTRL_MULTI_PF (0x1 << 5) #define NFP_NET_CFG_CTRL_IN_ORDER (0x1 << 11) /**< Virtio in-order flag */ #define NFP_NET_CFG_CAP_WORD1 0x00a4 diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index bbc0109f5f..e5f1d9f6f1 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -935,6 +935,50 @@ nfp_check_multi_pf_from_nsp(struct rte_pci_device *pci_dev, return flag; } +static int +nfp_enable_multi_pf(struct nfp_pf_dev *pf_dev) +{ + int err = 0; + uint64_t tx_base; + uint8_t *ctrl_bar; + struct nfp_hw *hw; + uint32_t cap_extend; + struct nfp_net_hw net_hw; + struct nfp_cpp_area *area; + char name[RTE_ETH_NAME_MAX_LEN]; + + memset(&net_hw, 0, sizeof(struct nfp_net_hw)); + + /* Map the symbol table */ + snprintf(name, sizeof(name), "_pf%u_net_bar0", + pf_dev->multi_pf.function_id); + ctrl_bar = nfp_rtsym_map(pf_dev->sym_tbl, name, NFP_NET_CFG_BAR_SZ, + &area); + if (ctrl_bar == NULL) { + PMD_INIT_LOG(ERR, "Failed to find data vNIC memory symbol"); + return -ENODEV; + } + + hw = &net_hw.super; + hw->ctrl_bar = ctrl_bar; + + cap_extend = nn_cfg_readl(hw, NFP_NET_CFG_CAP_WORD1); + if ((cap_extend & NFP_NET_CFG_CTRL_MULTI_PF) == 0) { + PMD_INIT_LOG(ERR, "Loaded firmware doesn't support multiple PF"); + err = -EINVAL; + goto end; + } + + tx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); + net_hw.tx_bar = pf_dev->qc_bar + tx_base * NFP_QCP_QUEUE_ADDR_SZ; + nfp_net_cfg_queue_setup(&net_hw); + rte_spinlock_init(&hw->reconfig_lock); + nfp_ext_reconfig(&net_hw.super, NFP_NET_CFG_CTRL_MULTI_PF, NFP_NET_CFG_UPDATE_GEN); +end: + nfp_cpp_area_release_free(area); + return err; +} + static int nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev, const struct nfp_dev_info *dev_info) @@ -1222,6 +1266,12 @@ nfp_pf_init(struct rte_pci_device *pci_dev) */ switch (pf_dev->app_fw_id) { case NFP_APP_FW_CORE_NIC: + if (pf_dev->multi_pf.enabled) { + ret = nfp_enable_multi_pf(pf_dev); + if (ret != 0) + goto hwqueues_cleanup; + } + PMD_INIT_LOG(INFO, "Initializing coreNIC"); ret = nfp_init_app_fw_nic(pf_dev, dev_info); if (ret != 0) {