From patchwork Thu Nov 2 02:23:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 133748 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 7301843267; Thu, 2 Nov 2023 03:23:54 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7A57342E4B; Thu, 2 Nov 2023 03:23:49 +0100 (CET) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2105.outbound.protection.outlook.com [40.107.96.105]) by mails.dpdk.org (Postfix) with ESMTP id 5F0B6402D9 for ; Thu, 2 Nov 2023 03:23:46 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PT/X4AiRfrg4v0Qd/Mi31o9qmMO5tSXaiZg6Bo0oU4u8yPTO1L7/p01gypitBiNvOb8goeyaPJ99OKruJmRqxKHgszphQ4euFZQqLH88OHgv6NAiyW48lMqNIWhxb7xgXpTabmsz/3Y1+x5taOZxVXJatRl8V1GScb0Nhs4n32AXfwQi0bmNkIe4LKVck7ewCrFdzFHRJJxVyLUU2+hc8WnyIEZOIii60TWMjtEC9RZQxKOH7FCS4TNMdpHn/eleF//LbOFkJ/WznXplp2PBuMzUJ0fEN019zeLvJrOoBInTllod+XenGiUR4yscwyYQIA0H8A3rzXKhiMbZ43QslA== 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=M8IUbLqnMH475+n5W6fhe/87botfZzwbcxd2MJhSF4o=; b=Q0YcZ5g7TY/MEMEC6D7h2pe9igQf6fv3HmUj2ddCz/TqjlGXsCvzwx2cIeD505vuc3ajKKbCKLqVyzUjsOP8v7CLvYiJAV5yt/xjTk/TPsIVg3lxwG4lOhcOvEu7GQwiGsju7h4T/hpsy0osWHaqi+nNkBTYet9K3JzMq64YR49kbzROoU9CUSGk+p6Cw8t7ZPRXmvqT5MFzqPks6yPFV3DJSgy3cx+UQbreI/89GCNuyHGqZ/gpwc1Nmj8h9RoLBaH7yaSNsmXUsbxsH6412iFSLNJsKRiRNCM3LG3A9sw5Wk8V4K1bvibmh7nFabgy77Ka/SOAiUZMVdPlI7huqQ== 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=M8IUbLqnMH475+n5W6fhe/87botfZzwbcxd2MJhSF4o=; b=BMnu7nJrpKQVGYp5+uYK2eL/xjEF2JrPmSwvYSn8pYpFIDg6J+d4PHyYWGZfHQwv2myLRpELf5cyR0aa86zi0H+gUG0xw8+jRQY7iXUlmgbq8NR9DveF+qzxt4z6ah52DQQRrStfrWtq4fs5iYP+BRVjYVQ/E828Zb8DsM0SJnY= 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 BY5PR13MB4455.namprd13.prod.outlook.com (2603:10b6:a03:1d4::17) 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:23:44 +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:23:44 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Peng Zhang , Long Wu Subject: [PATCH 01/11] net/nfp: refactor the probe logic of the secondary process Date: Thu, 2 Nov 2023 10:23:11 +0800 Message-Id: <20231102022321.2254224-2-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_|BY5PR13MB4455:EE_ X-MS-Office365-Filtering-Correlation-Id: f9b9b9e0-64aa-4f2c-f177-08dbdb4abcb7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gx2SWtUp1akS/J4YuQGjFD0xOmXZhB9/7m2U/+M5/29bNB8LuqtemdDl8dyovKKynJTcd6EkoPBMSQ0llCcdh4bnz5tKlsiKG1n6RD85lirUPENsatGYAuIdWBPnooc4G914Cu3Kqbn7r5M4+o8KuAeQV9Z3hylxAs0FfE25Zn31JlZTpOA6opAgBmRacy/X0LBxb5NnlKKcz9xNmYDaM9yQ60Ynk+7ScLiZwQc7RzSO19TkM62AddkRtPzhXfdNLIetDxiYCZ0WpdM6mz+T2ERGTFx0VJSiKqzNoOJjrmpg+gRbTkI/B5WrX/ddrgvWWzHRBJWUat2AIS9LuwSf1OnoVJp8kMYuRHQ5LySukv8A7Se1rFoXeGikcc9RY9cwWxWlX+ODWduQ61FVtKgJZgckivjmgzHTQhz5UM5Ozq7LAU0+DZKbsizBlGuqJOc808MpKdx9Y6VF+FMYJiLKomG3wB2w97mBD7obMCfZkgPaHPKsf3WC0XyAyTCtctAHojZcFbkRqP4GNbdxcw3EjiW8JpQE1cYRuF0eMgZdP9odjIX2ZURtlyLUDVqaDEvoQtefnnfNUuCxh7wurMYJkvhiYd85q7A3jWDl7XEwCS6ZnJOE36I5nS5895M6JDwyaCJYDKMLF/2FemE3igE9/+HzbPnMxQGIHFv3cktT5uc= 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)(396003)(136003)(39830400003)(376002)(366004)(230922051799003)(451199024)(1800799009)(64100799003)(186009)(2906002)(8936002)(4326008)(8676002)(44832011)(6666004)(41300700001)(6486002)(478600001)(66556008)(316002)(66476007)(6916009)(54906003)(5660300002)(66946007)(6506007)(52116002)(107886003)(1076003)(26005)(2616005)(83380400001)(38350700005)(6512007)(36756003)(86362001)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xnKTnORJNvdMtjbxgpwGGC6ZptMXZ+CxaE5UBXq0FFgpS5g6YoFz1/29J6lRZ+ddo/knCnld0z81PdrQkgM9zAOtPZwj4hOzSV/AU8juOmr+rbb0PU170h57TTZqJ2iWB8ONiLsPabmBKYLZqgnhvP4kMs9awSrClMbE4ScOQ+42Kc3Nz3esa5n0tiMoZx7oTQlzG2pZ8IBWKo0R0mkdc/kR8EXMHnT3oIgEykUppCby9xp23J+FncmgVc/EFXHmIrI6NsrYE904wmB1j/4VeeqCWlcuanaRhvwAqD3XbQN8skxQmSnW4qT59LDAHtYF8GroaWXBKpJdEvGF2rk5ZNQKj70WjLFRjvflvJDPxyF/jq2ZbIKlVdq5SGhi59SN+iwTQD7iEacLi/GuxTM6lLVYJMvk3GPwj4Bpxi28f0h8FyMZcUrwmemMUyOrXoKAC6eHpEHawcYM9aNzp97Ifk1s0BH2Qu4vZ7F9dKg8fW5hAnNYsy132C7/a4vym3dzyQaKgGkkERW2Nj2kjKnwLEyMNloFQkGLMnYC5GPfaaYUvPhxwYG9JPR6i+8MyjNsIrgUY6ekQPK3iWgUpwGC5jbbh+6vPwsoJElUqYpgJEXWdqx/UUpSheg0DBqA1NC/rH8gk/RFwRFecmSqSsqC2MZcUhbJ8NrM4gSjvdqLZ+jsqY73e3aeSgnVgpAJ7lTFaObbPte83yI9PSXBc3QBRe1+b40u27eVGt7ItadxCsAt7Lb/tOm6FvCmLMfrNMpo9VZwVK22DHNd48knob5/l5pdbqxDpxu8itHkyokTi4L1HDxVhdy2AzKzTuRE+bhDKREgidTX0kwhV572wXlRYfkIqjP5bH4BRKK43cNs7geomgKnsX4UsPffIJW6Ovz3+yRMuVv/DI5TJ5iwgPZKS/xWIB5KMCP6VkuOxIi/raTbzRmMGHzTksLZZilc3NSQx5tUZSD4e1bU3Jy09QyxYwzQjeoU2lhZc73M8wS3ph1g490x/M+5V5jV8AK9WpFDbZ5le7Wg9Ev3YGxLwX2zxuXTDoG7nvorvvtsxdMvtXF64HUfDK5P9HQYgfgcJ+T7yRKq//y9uOvti4vFz6/ZXvz+cmfdhZb/WWL9hIozS73Q2CkTkAhOUHDDq1Ga8WjS8S5vepL5CKf6gG6GgVHb3FsHwDwVPMoLc4xh/ReiGoFCaYY2dKOHuJrvipZSH3oerT+gwO+EeoEeRKzVBniSe3PuWR1W8zZpLoh1k/37zSj++ToJdOSZFPnA2FRzXTQgxXd3hAmRC/JBdM/cead35ujMkBvACqPydM25oBqbR5jypPeb97Vx9tDoqeskz8pZeAXG3kjywrmqwCAvZEMWfPjs4q4CdaOuM+JU4UdkkUlpQPcl3wax+A2d41bbp2JGI0ExtHgfeUxUQKgKi5whZ4ld0aals0INyvil4dKqctTXFeUwztN/7NOvuCcLAiRSPK95NjnzfSN5pdWK2Cj9O0q0H77UBLIWwhe6+H+6X27IUcz0EjuW7LP12vXunN3bmDUVTBmgrkyY4Jx6XBYY+Y48WFx1UMoRPrZzhZlaEoNzxQi8T6kAWohRYowU9Ndfp0d4kKPPZnB9j1sj18PyKg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: f9b9b9e0-64aa-4f2c-f177-08dbdb4abcb7 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:23:44.6463 (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: W/4vyqkIbwpenX9RaxlSLX4t2iiOvT0xMIAgQ5OqcnTriqxU5Xielu4BTYgl4nmbcvPwe3vNTUIvYcqql9pcsKVngu5Bnyhvp42FTyCiMp0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR13MB4455 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 The probe logic of the secondary process of PF PMD now is not very similarly with the logic of the primary process, which cause we need two different logics when we add new feature in some case. Refactor the probe logic of the secondary process to solve this problem. Signed-off-by: Chaoyong He Signed-off-by: Peng Zhang Reviewed-by: Long Wu --- drivers/net/nfp/flower/nfp_flower.c | 4 +-- drivers/net/nfp/flower/nfp_flower.h | 2 +- drivers/net/nfp/nfp_ethdev.c | 42 ++++++++++++++++++++++------- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index f2e6eb6a6f..6b523d98b0 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -859,7 +859,7 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev, } int -nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp) +nfp_secondary_init_app_fw_flower(struct nfp_pf_dev *pf_dev) { struct rte_eth_dev *eth_dev; const char *port_name = "pf_vnic_eth_dev"; @@ -872,7 +872,7 @@ nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp) return -ENODEV; } - eth_dev->process_private = cpp; + eth_dev->process_private = pf_dev->cpp; eth_dev->dev_ops = &nfp_flower_pf_vnic_ops; eth_dev->rx_pkt_burst = nfp_net_recv_pkts; eth_dev->tx_pkt_burst = nfp_flower_pf_xmit_pkts; diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h index 220b714018..6f27c06acc 100644 --- a/drivers/net/nfp/flower/nfp_flower.h +++ b/drivers/net/nfp/flower/nfp_flower.h @@ -106,7 +106,7 @@ nfp_flower_support_decap_v2(const struct nfp_app_fw_flower *app_fw_flower) int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev, const struct nfp_dev_info *dev_info); -int nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp); +int nfp_secondary_init_app_fw_flower(struct nfp_pf_dev *pf_dev); bool nfp_flower_pf_dispatch_pkts(struct nfp_net_hw *hw, struct rte_mbuf *mbuf, uint32_t port_id); diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 4fae2e5540..705465046c 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -1006,9 +1006,7 @@ nfp_pf_init(struct rte_pci_device *pci_dev) } static int -nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev, - struct nfp_rtsym_table *sym_tbl, - struct nfp_cpp *cpp) +nfp_secondary_init_app_fw_nic(struct nfp_pf_dev *pf_dev) { uint32_t i; int err = 0; @@ -1017,7 +1015,7 @@ nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev, struct nfp_net_hw *hw; /* Read the number of vNIC's created for the PF */ - total_vnics = nfp_rtsym_read_le(sym_tbl, "nfd_cfg_pf0_num_ports", &err); + total_vnics = nfp_rtsym_read_le(pf_dev->sym_tbl, "nfd_cfg_pf0_num_ports", &err); if (err != 0 || total_vnics == 0 || total_vnics > 8) { PMD_INIT_LOG(ERR, "nfd_cfg_pf0_num_ports symbol with wrong value"); return -ENODEV; @@ -1027,7 +1025,7 @@ nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev, struct rte_eth_dev *eth_dev; char port_name[RTE_ETH_NAME_MAX_LEN]; snprintf(port_name, sizeof(port_name), "%s_port%u", - pci_dev->device.name, i); + pf_dev->pci_dev->device.name, i); PMD_INIT_LOG(DEBUG, "Secondary attaching to port %s", port_name); eth_dev = rte_eth_dev_attach_secondary(port_name); @@ -1037,7 +1035,7 @@ nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev, break; } - eth_dev->process_private = cpp; + eth_dev->process_private = pf_dev->cpp; hw = eth_dev->data->dev_private; nfp_net_ethdev_ops_mount(hw, eth_dev); @@ -1057,7 +1055,9 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev) { int ret = 0; struct nfp_cpp *cpp; + struct nfp_pf_dev *pf_dev; enum nfp_app_fw_id app_fw_id; + char name[RTE_ETH_NAME_MAX_LEN]; struct nfp_rtsym_table *sym_tbl; const struct nfp_dev_info *dev_info; @@ -1075,6 +1075,14 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev) return -ENODEV; } + /* Allocate memory for the PF "device" */ + snprintf(name, sizeof(name), "nfp_pf%d", 0); + pf_dev = rte_zmalloc(name, sizeof(*pf_dev), 0); + if (pf_dev == NULL) { + PMD_INIT_LOG(ERR, "Can't allocate memory for the PF device"); + return -ENOMEM; + } + /* * When device bound to UIO, the device could be used, by mistake, * by two DPDK apps, and the UIO driver does not avoid it. This @@ -1089,7 +1097,8 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev) if (cpp == NULL) { PMD_INIT_LOG(ERR, "A CPP handle can not be obtained"); - return -EIO; + ret = -EIO; + goto pf_cleanup; } /* @@ -1099,20 +1108,29 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev) sym_tbl = nfp_rtsym_table_read(cpp); if (sym_tbl == NULL) { PMD_INIT_LOG(ERR, "Something is wrong with the firmware symbol table"); - return -EIO; + ret = -EIO; + goto pf_cleanup; } /* Read the app ID of the firmware loaded */ app_fw_id = nfp_rtsym_read_le(sym_tbl, "_pf0_net_app_id", &ret); if (ret != 0) { PMD_INIT_LOG(ERR, "Couldn't read app_fw_id from fw"); + ret = -EIO; goto sym_tbl_cleanup; } + /* Populate the newly created PF device */ + pf_dev->app_fw_id = app_fw_id; + pf_dev->cpp = cpp; + pf_dev->sym_tbl = sym_tbl; + pf_dev->pci_dev = pci_dev; + + /* Call app specific init code now */ switch (app_fw_id) { case NFP_APP_FW_CORE_NIC: PMD_INIT_LOG(INFO, "Initializing coreNIC"); - ret = nfp_secondary_init_app_fw_nic(pci_dev, sym_tbl, cpp); + ret = nfp_secondary_init_app_fw_nic(pf_dev); if (ret != 0) { PMD_INIT_LOG(ERR, "Could not initialize coreNIC!"); goto sym_tbl_cleanup; @@ -1120,7 +1138,7 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev) break; case NFP_APP_FW_FLOWER_NIC: PMD_INIT_LOG(INFO, "Initializing Flower"); - ret = nfp_secondary_init_app_fw_flower(cpp); + ret = nfp_secondary_init_app_fw_flower(pf_dev); if (ret != 0) { PMD_INIT_LOG(ERR, "Could not initialize Flower!"); goto sym_tbl_cleanup; @@ -1132,8 +1150,12 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev) goto sym_tbl_cleanup; } + return 0; + sym_tbl_cleanup: free(sym_tbl); +pf_cleanup: + rte_free(pf_dev); return ret; }