From patchwork Mon Jan 15 02:54:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 135863 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 D5580438C7; Mon, 15 Jan 2024 03:54:54 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D4A52402DD; Mon, 15 Jan 2024 03:54:48 +0100 (CET) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2100.outbound.protection.outlook.com [40.107.236.100]) by mails.dpdk.org (Postfix) with ESMTP id B977B4029F for ; Mon, 15 Jan 2024 03:54:46 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DkXqcVBNkX9/fBmDoMlT2RJH2jZOU9g795YXGdqQegaP18rySMmdWAqp6TPJtRxnheQ7KRAGYXZ9Uyu1Fcg/s6VsKwvyAWEiI8ASmwNHs0z8djwCMnZxZt1puMOTEkNKIgSIKuPbiEwCZhbyJ/l25JIMr8TWoo2GB084DfL23rbo9iZtVBYbOjxjK7mzJH5iF5M6bNuKphIR/YbxTw8tHydUOoR9WZLHuCvvuwUaz+xC2fS2DoFfzsWjQuAvfzGgIxB9l08WTL6ERbIklk9M2JIiPa9EC7l39jRe2hpl7jIWFssQhCHmiDxwLkWAkyZNFeb1blUh2G+16XV0mS6lYw== 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=g2rUrRanMFNQAtywkoGoi10rGALFuCyhXU6M04ESaE0=; b=XbtwoIRYldpBaw49QQqEjkXtPiEh51j8H0b9etE+52vOf8vABDuYAGvhoYo5N6fhoFXGGESNg1hX62BE3kZm1l7hjQjjDAwteM0XOYUNnw4AHmRdkOCLVcCWyoUkF+lAahxICTJ8SXAEZXe3ZFyR/To1FtGt6hWeNm3c5COM5GhuMOg5Oz24elk1coNpz5yWx40OTF7tAxEYul7b4b5zZx7nxERE14XhTpCkHWKDKz/EFSf6woTGmKqW1W9PxlHYHO3Qqh3Zvgg6UGxjX2xftYXIO4KCGCGaJZYZ+fMVrrt/YTrBYHrAcV2KmXnlRN79ovtO2JDYHXdzupDblVPQnw== 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=g2rUrRanMFNQAtywkoGoi10rGALFuCyhXU6M04ESaE0=; b=XJyBcUoSY37tKvF+pA/stjU05msiAEivZ57PvjrmUIOp+JD6vKbvyKa4buJZU/hyt3RfQqA47KFfVvP4joE8paRNHUPGPXf5d1ZeBwrEhhPP7Ou/rWPE6Y3b5D1VibRSfkCoLnON+1f4oob4nnjzVbEjQcjEw2UUtu9E6FUKtK8= 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 BL3PR13MB5242.namprd13.prod.outlook.com (2603:10b6:208:345::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Mon, 15 Jan 2024 02:54:45 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa%7]) with mapi id 15.20.7181.026; Mon, 15 Jan 2024 02:54:45 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Peng Zhang , Chaoyong He , Long Wu Subject: [PATCH 1/8] net/nfp: add the interface for getting the firmware name Date: Mon, 15 Jan 2024 10:54:12 +0800 Message-Id: <20240115025419.2447759-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240115025419.2447759-1-chaoyong.he@corigine.com> References: <20240115025419.2447759-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH0PR07CA0025.namprd07.prod.outlook.com (2603:10b6:510:5::30) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|BL3PR13MB5242:EE_ X-MS-Office365-Filtering-Correlation-Id: 7bba8319-cb67-4eae-f0e3-08dc15755476 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: L5kFlvjF/66tzdpLXxCMD9/RDOpNrJ1gSXJgp1VcvbQxtNEhLyNMA6f8Kcge3XM3RA7S0JPzu8xc7x94eY3C+XW6CzkSUzG4xE+G4eUx7m4du+5cVy8Orupd7kiD8ciUj1iAgpSf05UolcmXZISgwc9JxFtTJl0+DmWxY5sq68W4eI4Chc2W1soZhadFn/mpaL2TUjzXhFFvrWb2+lZwk+BCi8pCtI1qGrojzTbllHPt3ga4Ne0OKVzIPZ27aCgnEzYPzesnqq58rdi0di51SNiLVSLiaCmIdflPk60hObx6m955hwgU9/mTEltCCZzUQJKv4acYITMbRL/NI20BuhZAHwLq/hXkWCkO+f4cbGfXxid4XKwDpB4VXk5IyFO7YtAwpbF3nZdzpAhLsedLOPCGGmtO9R6p4OTE87iXic6ojCcq2jUWq49nMZN7dRaQw/TmG2kUNjPGRALz4Z9mjBYY8UrNVgV/86VBSrmWsLVJYDcZDBxeVnpzptznouAJp3Pfn1H2ltCfZ1xkUWmdafupZCLSlYRLcBckyHzTEZTE+WHng1DCpyOCLU8Y/xlVZBuIm/8vhvzeTJGvFYXDM5k0UocfhRxQ7fuUvno171QhFR3RbQrdUSGulw9fWgfe 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)(39830400003)(136003)(396003)(346002)(376002)(366004)(230922051799003)(1800799012)(64100799003)(451199024)(186009)(6512007)(2616005)(26005)(1076003)(107886003)(83380400001)(54906003)(6486002)(316002)(52116002)(8676002)(4326008)(66476007)(478600001)(6916009)(86362001)(6506007)(6666004)(66556008)(66946007)(38100700002)(44832011)(8936002)(38350700005)(41300700001)(5660300002)(2906002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mRUtGSDCo8+OyvDU9NHwslMj6wMx5AM7+Nuz4uAfJPGX5cUSJ14PQxse1dSCzoYO+ahrw4W9r4s2aOU9zkDXe05dpROhjt8JxAlAfKjIj1Uv1NhZb9Wu36KcrXPgwmiiGgynGLiuhrh3AO6HHTFRItY6E8uWpIH2GrYlhzgmso9Zv7BASSOUg70Q6nyCh9dN+jyDroh2mO9OEakoaKqt11rgwdTScVyMHEhQfK4AcgZhobh53/G4LaxByUaLG+3HenK7ew6416SbDhmS9wUMicxhaa9YAADqbIg+YJvhPtVQ0KOau8wTaC77oD35sxti1pIoxjHs5YeFugEwvJG3H/opT99wOCcwSNyQqurG/Wphxe0cjdCUxqYiqlE+FDzLKjEI4EBEkJkCe2on0PAThb4ZEwOTISMhK2x31A8H+5MoYWKeoj0WWKtF/9+FnfU9WExZEzILkpTryZ9tJJ6X9wuju7/xFIwvNskkQbTTfD927I2gc6hKRQRExhBrXEiQlxX9Ax3MWGZfIyHwfWuf3sqkIbCCs7KsVAdqUxC5KIF/68wkdXi3yaaJCh1frP2/te5Zb3vIpjPznQAAEnk5WwURodrZbqGSW++zSlbAG7WeRvmHqKEcDbjN859KF6tZlbc0mNr/vIgXfOtbYjYOTe81vSOWIpjX9GOBbHcQ5ODIu2clcxFYZNsPs2oPAHGEXFHby6p7w8qG0JlhNglWFL8oRKml3aW7R30xKvBiBRCxClIEQoXHVdzS2/fFYciUmq28iA1AeN5/rEajHT1v+YP6pc045KQ5ivJLBQd+NzG0aT1x8C+GturlpUsvpCF9GOMsrFceWPjlKPrDahAvx5lMgUsgocAcA2RnDAYbmUo4tK6Yd7xe0UnV9yA9s26MnJDKZepdWCyD9gUEh8ZLKYICRig3KcOJR5Yl80uqwLv60/OZdDT/VvVa2EmlQGxaEmsQfXOkJcflHhvaEH8I1GAZaOt2k3lCzZaIg11p+Nj73Ap9wxKT+IrHmGSqw4q/gcs2UK5BSmllsL+MZhD+X+6AZQqBXQ6aBgybLcMq3ipdwuzzoILLFJ+g4X+Xt4dB2zkvr114+eZRQelsTZDnmhNjwgy2sFHvXIg6eaNBdqTIV8Z1U6SYm190RPbbva3qeJeIAvaxUiX9dBTKOJyl3dthh4rwzeZoSvjqmW4ru/pgw9BSUolVBO65wRcRn4Q1phuQDJJbm/2254V//rVSO6jaVoKWE0h3wVfLzlrKDKpAqipElKdQ5YjEuV+jT7eVpFZWc1OCjSWSgiOanv9yyNURCiPdkQvFIjYhSnVt9CdGRwSGCWAF19jRgVZpKQJ/ZYtBBZvsHZ7KP5/H77slAvWFf2cbexBy3gXoLnREKy5A5WHya40YI7UfGNDhyGAbwar7uTQhEeZEoF3FcKnkKVyi+E8H4BmTfSL/YkTAk8DJYiYMCCYbblwB0YFCfSz3F1C7WjdW7akAOs6cbYyf9dTkD8Tqt/4hOCWSQb8CpP3hlUQY9be4I3e9/Rj+uwsyYei1U2Y+PRIawmrwW97JTsURbZU7oGFtmJV5x5lYCR1wT0mc4C2ot2oTNe263ATljCb+jhhtZQyUHX5w+ZWdqg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7bba8319-cb67-4eae-f0e3-08dc15755476 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 02:54:45.5021 (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: 7cjexKmk3tKvUPVPtUmuKgV/pS9wY6pTscSsKKa8mzQgBt5TtHafwyq/QCWb8FAHDNUuLBJlf7TsZFiz9IOiAIxN1ieWbZqP23AVWkdnTFs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR13MB5242 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 the interfce for getting the suitable firmware name. Signed-off-by: Peng Zhang Reviewed-by: Chaoyong He Reviewed-by: Long Wu --- drivers/net/nfp/nfp_ethdev.c | 79 ++++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 31 deletions(-) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 886b568d96..434d664573 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -954,14 +954,13 @@ nfp_net_init(struct rte_eth_dev *eth_dev) #define DEFAULT_FW_PATH "/lib/firmware/netronome" static int -nfp_fw_upload(struct rte_pci_device *dev, +nfp_fw_get_name(struct rte_pci_device *dev, struct nfp_nsp *nsp, - char *card) + char *card, + char *fw_name, + size_t fw_size) { - void *fw_buf; - size_t fsize; char serial[40]; - char fw_name[125]; uint16_t interface; uint32_t cpp_serial_len; const uint8_t *cpp_serial; @@ -980,30 +979,43 @@ nfp_fw_upload(struct rte_pci_device *dev, "serial-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x", cpp_serial[0], cpp_serial[1], cpp_serial[2], cpp_serial[3], cpp_serial[4], cpp_serial[5], interface >> 8, interface & 0xff); - snprintf(fw_name, sizeof(fw_name), "%s/%s.nffw", DEFAULT_FW_PATH, serial); + snprintf(fw_name, fw_size, "%s/%s.nffw", DEFAULT_FW_PATH, serial); PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); - if (rte_firmware_read(fw_name, &fw_buf, &fsize) == 0) - goto load_fw; + if (access(fw_name, F_OK) == 0) + return 0; /* Then try the PCI name */ - snprintf(fw_name, sizeof(fw_name), "%s/pci-%s.nffw", DEFAULT_FW_PATH, + snprintf(fw_name, fw_size, "%s/pci-%s.nffw", DEFAULT_FW_PATH, dev->name); PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); - if (rte_firmware_read(fw_name, &fw_buf, &fsize) == 0) - goto load_fw; + if (access(fw_name, F_OK) == 0) + return 0; /* Finally try the card type and media */ - snprintf(fw_name, sizeof(fw_name), "%s/%s", DEFAULT_FW_PATH, card); + snprintf(fw_name, fw_size, "%s/%s", DEFAULT_FW_PATH, card); PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); - if (rte_firmware_read(fw_name, &fw_buf, &fsize) == 0) - goto load_fw; + if (access(fw_name, F_OK) == 0) + return 0; - PMD_DRV_LOG(ERR, "Can't find suitable firmware."); return -ENOENT; +} + +static int +nfp_fw_upload(struct nfp_nsp *nsp, + char *fw_name) +{ + int err; + void *fw_buf; + size_t fsize; + + err = rte_firmware_read(fw_name, &fw_buf, &fsize); + if (err != 0) { + PMD_DRV_LOG(ERR, "firmware %s not found!", fw_name); + return -ENOENT; + } -load_fw: PMD_DRV_LOG(INFO, "Firmware file found at %s with size: %zu", fw_name, fsize); PMD_DRV_LOG(INFO, "Uploading the firmware ..."); @@ -1034,14 +1046,13 @@ nfp_fw_unload(struct nfp_cpp *cpp) } static int -nfp_fw_reload(struct rte_pci_device *dev, - struct nfp_nsp *nsp, - char *card_desc) +nfp_fw_reload(struct nfp_nsp *nsp, + char *fw_name) { int err; nfp_nsp_device_soft_reset(nsp); - err = nfp_fw_upload(dev, nsp, card_desc); + err = nfp_fw_upload(nsp, fw_name); if (err != 0) PMD_DRV_LOG(ERR, "NFP firmware load failed"); @@ -1049,9 +1060,8 @@ nfp_fw_reload(struct rte_pci_device *dev, } static int -nfp_fw_loaded_check_alive(struct rte_pci_device *dev, - struct nfp_nsp *nsp, - char *card_desc, +nfp_fw_loaded_check_alive(struct nfp_nsp *nsp, + char *fw_name, const struct nfp_dev_info *dev_info, struct nfp_multi_pf *multi_pf) { @@ -1077,13 +1087,12 @@ nfp_fw_loaded_check_alive(struct rte_pci_device *dev, } } - return nfp_fw_reload(dev, nsp, card_desc); + return nfp_fw_reload(nsp, fw_name); } static int -nfp_fw_reload_for_multipf(struct rte_pci_device *dev, - struct nfp_nsp *nsp, - char *card_desc, +nfp_fw_reload_for_multipf(struct nfp_nsp *nsp, + char *fw_name, struct nfp_cpp *cpp, const struct nfp_dev_info *dev_info, struct nfp_multi_pf *multi_pf) @@ -1095,9 +1104,9 @@ nfp_fw_reload_for_multipf(struct rte_pci_device *dev, PMD_DRV_LOG(ERR, "NFP write beat failed"); if (nfp_nsp_fw_loaded(nsp)) - err = nfp_fw_loaded_check_alive(dev, nsp, card_desc, dev_info, multi_pf); + err = nfp_fw_loaded_check_alive(nsp, fw_name, dev_info, multi_pf); else - err = nfp_fw_reload(dev, nsp, card_desc); + err = nfp_fw_reload(nsp, fw_name); if (err != 0) { nfp_net_keepalive_uninit(multi_pf); return err; @@ -1121,6 +1130,7 @@ nfp_fw_setup(struct rte_pci_device *dev, struct nfp_multi_pf *multi_pf) { int err; + char fw_name[125]; char card_desc[100]; struct nfp_nsp *nsp; const char *nfp_fw_model; @@ -1157,10 +1167,17 @@ nfp_fw_setup(struct rte_pci_device *dev, return -EIO; } + err = nfp_fw_get_name(dev, nsp, card_desc, fw_name, sizeof(fw_name)); + if (err != 0) { + PMD_DRV_LOG(ERR, "Can't find suitable firmware."); + nfp_nsp_close(nsp); + return err; + } + if (multi_pf->enabled) - err = nfp_fw_reload_for_multipf(dev, nsp, card_desc, cpp, dev_info, multi_pf); + err = nfp_fw_reload_for_multipf(nsp, fw_name, cpp, dev_info, multi_pf); else - err = nfp_fw_reload(dev, nsp, card_desc); + err = nfp_fw_reload(nsp, fw_name); nfp_nsp_close(nsp); return err;