From patchwork Mon Dec 11 03:08:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134995 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 72F45436C3; Mon, 11 Dec 2023 04:09:32 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AC54940A6E; Mon, 11 Dec 2023 04:09:24 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2124.outbound.protection.outlook.com [40.107.243.124]) by mails.dpdk.org (Postfix) with ESMTP id 229E0402B2 for ; Mon, 11 Dec 2023 04:09:22 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D/N1TVHMlYLJ1F1zrOOmNiBURaJhNhuyLlrAArk9bCGB8egkcodH+WVzS4cHWcljVQVl6xTL8q5l/FGHSAEh0wAuWEFM+jPPWy5HbvHn9l9VM2/1twuz6MiR7FbpFo61X4/PSHGEP6t5uVLb55WNeW9xbkfc2jrxkPtv1lqL/9XU9QwLsMt5P9n2iCt4qW/SJUDN9rmbjdYIHkQdWeyqzbZehG26q1c90nl/DE6oK7r+0j4miLSVxpI0+MFEyly/TJFpIbXDP7r8lWPkH6co2w7yEuwS2Fe95hZd+ympTgKuC6YiQS3Cy/e1mzVSQuB/TmjCc5Ixi8rTQtbK52dpGQ== 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=mt+yinRuCYD8AvWITK3IEJwuR8+75Lew3Sjhn8uyzT4=; b=i8Al95P4OUp7gFi0/8tQPalb/icG7iQsHOHtwqtyPFU9VKS50pNqNgOK5HvZR+9SS2byAxU7z4GX8nmZEQKCJEroCHC3StzYcLGz88cQniCzYfTV3UOiXXYD2+I2u2eemo6vm6d2YvEN3bvuR8vH7dCQeI6DWLyvtSve6gGXlOaHwRBuQxrNU35ty2RojLiLHg1Y+zdhIwl823N8//fUA3ZDvvZw4y4majoXwWqEZrAQslQms1sUSGCTMNrZUqNxHws1RBJARjCTJugpO3CI+rPD1BW6YufL3il0KUlmsM0P74ScasDxAeiTOmoVfdNd4O+RpfkmuXWY49Pym1ovCA== 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=mt+yinRuCYD8AvWITK3IEJwuR8+75Lew3Sjhn8uyzT4=; b=okctvaX4/NEOGwDWXkQc9Q0exuIwvVuWUXgziqs5MbWdVPFGnisXXK+kqzs4vftvmFzxN1ej/vWg736CnzjjasVTPJcZK9jrK0THbVb5P97+ZNiCO4BvMxIiVVGESymbGUyGt7sngWpOUcsEIoGUEmMLHIHId87rLXgz3TZN3eI= 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 PH0PR13MB5666.namprd13.prod.outlook.com (2603:10b6:510:111::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 03:09:20 +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.7068.031; Mon, 11 Dec 2023 03:09:20 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Zerun Fu , Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH 1/7] net/nfp: set a new parameter to hwinfo Date: Mon, 11 Dec 2023 11:08:52 +0800 Message-Id: <20231211030858.1693240-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231211030858.1693240-1-chaoyong.he@corigine.com> References: <20231211030858.1693240-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0166.namprd13.prod.outlook.com (2603:10b6:a03:2c7::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: 62ed89b2-5951-47f2-9766-08dbf9f6914f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jKCpJfZffDR5p7RFlm2463t17u+RVkdCbAnLdwy6NfFOleoKzAJSMAUa5x4xrUiIQPnV/pnE4YpSsmT1EF8vmJsQT06IGHDj2uo83lhYJe7q0cWnwSvFtT9KGtfSNwbA7wTFegPeLM8xYq8DIugh3rq3FOKinz7Wdy6tU9wdgBC/AkrtbcctvwAIfULMix1QzL7ZiTdenhzfTudNJuIaReTxuGJ/BY5TgX/2MdSE6QjWHpStPTYnA1OlKhzaoIskdtNvhMqYOXzLoIvQAGgShpeyDk3dwpTvtyivvMYCuwJJp61QQaPsEsy7oxBxMPKiuwsNChcFioEk/6ZJQs2NUILLw+70GTvAuvsScyfZOPOAoaWNTwNqnr7Gx+lwGf5TBgMxBHAMAttlMBHjTqnNS9dK783Qk4YZHzmr3seFDY5ep91Nj4K20c5Ydfp6jwK0+dn0qczvxDZnxVd9cpjCnx1FkU6LyGRJLoyvi5o7uAOmSdnWYauzGp2Ha4B9IJKfLOsSzczqMkgWy4XuLXuCeFtmUdDsLGvQE+A36pT7+2VJBFtncO9TbBu3w/YgBTDnmmuQwmPJAMjJojyL79GSc/e/1SXmAMiXRgfJ2H0Gw0bWDmsdTzR5v40afTNrX/mZylToiwFPR3T3ymAW72iSZY/wpmdyA3lTonaiyzUs97Y= 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)(376002)(396003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(5660300002)(38350700005)(2906002)(6512007)(6506007)(107886003)(2616005)(1076003)(6666004)(52116002)(36756003)(478600001)(6486002)(38100700002)(83380400001)(26005)(8936002)(8676002)(4326008)(86362001)(6916009)(66476007)(66556008)(54906003)(316002)(66946007)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hNCm+oXDYnc/Zj2I4CdquajbI+/4xGg03fXeBnXCi5S6pSue7QiNN54jFqnBExrWhQBQc66f7w8ZvFPD0eIFHM0bnMSltxAxZ5IatXHILguaH0vMuwkpeyR1hiQzpNyCf9MX+5mkz/W4UQQmbJ68FjZU57q5zp4F728VGn825aThw1Rh2TMKysKzSWt1nCUL0fHSsHTqElL+xeoyutezEisKeCu/XmoUyT9xQ2/TATq5LTqo87XzgiIttVh5GAd5LXmb3Lg+WExaLZAiBdvZ/vdFeLql6IZQSYuw6Xarq+exxXDvux5z+CRU7uahlaSOmSpFVkjZFPbTPRslDPACecLfZi2FOmEnw1ngegO411YCvk3Por63/ZcrP2U/hUzrXVHRTwwTVzWT/MdOW72Z35aK3JMqH+1t/8BJRLf23CdSefOaVbVwKkNEXtMIVF7fjF9YsMBDrsTW8p49QhEOlc63uuHKIedA7Ha+8DJYYGdHo3AudN++pwH5T/ghB3LTu8u/mbKgMpgW57X6CjSW2zEiDkZOEpUIhcD3Ynqr8G0p6nsEwrT2YP5PQDPDAdhGK/04+Oq6kpXmBHHEiP4gpAyMOHkqw2xRY85zqwfJiyivRwSMqEd8zXmNnjqjSc8IN7okjZ9eIrDiNBzbE8mDGG3gdluepRJVSUH3p/+1sYcnKs/4BK4NbtPGXpxWUeag44sjW0A4gWquEfqz5tD2il1YmUeJCzwhZjffdsyX55ykMsgmRf7uJgu162xosxi3ThkV1sf6ILlwVmD+/7ouRIYvrCZGXxay5W14hhEDf7UHOAB9ojonLGEzQ+4hnXdAHPPIpboC/xM+efS0gxMi8wcfygpM8uPzWSNtSLQBo+tXoY85kFmy58ycIIJFKTbhT8dAysc7se/TDbhXR/hR9QUIBw/VaxdvbtJzjnj1Cj1u/qY56KKw1DeAvydDcGRVsX2+Q5IK2XSCenW0xS3j4GZy0tzJcDgvVEGabFhr7BGewA5pnagJrTCsOIeC7oP4muftIns6mbDVT1jGOf3dy2pHDGtxezFBm7unUX4xQDU4qzdYk0TCN4Rv+A77LULPXjid3lkIZxtuYSpAZP5uavvxR2p24/6YLrW0CXjBDWnhU3ejUzd0jZB3MyI0VWP02tWQLd6vyVBFYxwmV/QOkZom44qTIuAVl5ypP85qOoZUqIAsb/2UoLs3w5EfYXfbdYTdybMaqe5Se6g1a3SJvMux7b5Ok06GLwOIAdAdqx049MaXDXN1ZxU6KW6ZIBb0qX/pEzqXU4o+QbuZuHbUCYlLHAzKQPemBFQwmTnitALNklqoo0y4rILrLgLJ89ewh6hhQ6bIvavz78VixvfnNElQvVNmcbtwRByO4EF65aAdbL91z21h0J+wnsSAPdtr79yJSOCCYjfOGMYGKaGTK0HQOnz9emSEr+9FA4nhcz1pcIVXpbhNfrNkvt/My5OEG6U5j/hDFxq6aCzxN66lAreiksekr0Q0YhXmjsR+GTgjW+GlhrjsCVhx3gQ5HJl65ooNH6WA7ExCwZTe33D3jshhSLhf4ZJf/i0U7hi1CaKI4PxNAu9E0WcfFhmbjYnlLnB080CrsTZSGvB5/qgIlg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 62ed89b2-5951-47f2-9766-08dbf9f6914f X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 03:09:20.1298 (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: t+Zn+Zygmz+R7wx9dny8VhTe/jLJwnjtq2DYpPzSnKS8QbjV8nu52qZzExkWbZRpimYxCv3xk/vgjT0Zm4dJX+G3Hh/5DJBdgGgy5whmZX4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5666 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: Zerun Fu When switching speed the BSP needs to be informed whether the firmware needs to be switched. Considering that whether application firmware is indifferent to port speed is a firmware property instead of port property, now use a new rtsym to get the property. So 'sp_indiff' is written to hwinfo to notify BSP. Signed-off-by: Zerun Fu Reviewed-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- drivers/net/nfp/nfp_ethdev.c | 51 +++++++++++++++++++++++++++++++ drivers/net/nfp/nfpcore/nfp_nsp.c | 17 +++++++++++ drivers/net/nfp/nfpcore/nfp_nsp.h | 3 ++ 3 files changed, 71 insertions(+) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 336d18491e..ef0b0dcd48 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -25,6 +25,9 @@ #include "nfp_logs.h" #include "nfp_net_flow.h" +/* 64-bit per app capabilities */ +#define NFP_NET_APP_CAP_SP_INDIFF RTE_BIT64(0) /* Indifferent to port speed */ + #define NFP_PF_DRIVER_NAME net_nfp_pf static void @@ -1227,6 +1230,46 @@ nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev, return ret; } +static int +nfp_net_hwinfo_set(uint8_t function_id, + struct nfp_rtsym_table *sym_tbl, + struct nfp_cpp *cpp) +{ + int ret = 0; + uint64_t app_cap; + uint8_t sp_indiff; + struct nfp_nsp *nsp; + char hw_info[RTE_ETH_NAME_MAX_LEN]; + char app_cap_name[RTE_ETH_NAME_MAX_LEN]; + + /* Read the app capabilities of the firmware loaded */ + snprintf(app_cap_name, sizeof(app_cap_name), "_pf%u_net_app_cap", function_id); + app_cap = nfp_rtsym_read_le(sym_tbl, app_cap_name, &ret); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Couldn't read app_fw_cap from firmware."); + return ret; + } + + /* Calculate the value of sp_indiff and write to hw_info */ + sp_indiff = app_cap & NFP_NET_APP_CAP_SP_INDIFF; + snprintf(hw_info, sizeof(hw_info), "sp_indiff=%u", sp_indiff); + + nsp = nfp_nsp_open(cpp); + if (nsp == NULL) { + PMD_INIT_LOG(ERR, "Couldn't get NSP."); + return -EIO; + } + + ret = nfp_nsp_hwinfo_set(nsp, hw_info, sizeof(hw_info)); + nfp_nsp_close(nsp); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Failed to set parameter to hwinfo."); + return ret; + } + + return 0; +} + static int nfp_pf_init(struct rte_pci_device *pci_dev) { @@ -1337,6 +1380,14 @@ nfp_pf_init(struct rte_pci_device *pci_dev) goto sym_tbl_cleanup; } + /* Write sp_indiff to hw_info */ + ret = nfp_net_hwinfo_set(function_id, sym_tbl, cpp); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Failed to set hwinfo."); + ret = -EIO; + goto sym_tbl_cleanup; + } + /* Populate the newly created PF device */ pf_dev->app_fw_id = app_fw_id; pf_dev->cpp = cpp; diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.c b/drivers/net/nfp/nfpcore/nfp_nsp.c index e5aaef8d55..e57176adb3 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.c +++ b/drivers/net/nfp/nfpcore/nfp_nsp.c @@ -711,3 +711,20 @@ nfp_nsp_read_sensors(struct nfp_nsp *state, return nfp_nsp_command_buf(state, &sensors); } + +int +nfp_nsp_hwinfo_set(struct nfp_nsp *state, + const void *buf, + size_t size) +{ + struct nfp_nsp_command_buf_arg hwinfo_set = { + { + .code = SPCODE_HWINFO_SET, + .option = size, + }, + .in_buf = buf, + .in_size = size, + }; + + return nfp_nsp_command_buf(state, &hwinfo_set); +} diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.h b/drivers/net/nfp/nfpcore/nfp_nsp.h index 9f506a0b2e..f99ca941d5 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.h +++ b/drivers/net/nfp/nfpcore/nfp_nsp.h @@ -169,6 +169,9 @@ void *nfp_nsp_config_entries(struct nfp_nsp *state); struct nfp_cpp *nfp_nsp_cpp(struct nfp_nsp *state); bool nfp_nsp_config_modified(struct nfp_nsp *state); uint32_t nfp_nsp_config_idx(struct nfp_nsp *state); +int nfp_nsp_hwinfo_set(struct nfp_nsp *state, + const void *buf, + size_t size); static inline bool nfp_eth_can_support_fec(struct nfp_eth_table_port *eth_port) From patchwork Mon Dec 11 03:08:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134996 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 36EE3436C3; Mon, 11 Dec 2023 04:09:39 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B9A2F406B6; Mon, 11 Dec 2023 04:09:26 +0100 (CET) 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 2851840A7A for ; Mon, 11 Dec 2023 04:09:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jcWoV0M2K5uNL5O2kwzFlWeas+7jRaJTVh3zceSQ8toitOojv0qE3lJMS72uRBcxBPvZmk93ywLouVn+5FSfMNDFU/M9fwyvG5XN5OuPmZx/wZ2RUSEKfv0kvmRrR4xFQdB5+5YBpRErx0ZtxJnQVkarps7mMOqxyDq90Panv0QeiUqhud97dBkzJopA7xXIU/ynsjKR37ZnqT+vKFzD1QXI1EpaqK+Nay95Vyac6DHXaCpQjFikDVLwdvPyERNWUA1agBfyoQ7VCViY8lZhuWRttlxtWwyUipbCZ0hIEm30NQGWeH5JXr72BQZQz5XWhj7atw0PWV0mgrM3F4AYpw== 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=Gun0K2NZuMs5VTHXAwg0/b+1MOzRAVwCCyQmIvvL/hg=; b=Od5ZErDetiRDh7LQsP7bvZu7kw+CZziYeiA8IdJLyOSzVA/Bgn9weNVXVLNDy1ZIEnhRQH+YwoBKxOW0VYbDYQgjFCgr6wZLFR2rzL5ixYM5vWVJvAzfLK2k0JmwhM9JKj7dHiKsiGVOCZZ//yWinHpX2AVtbB9FNvMhXA/9A6J1hqatAPNAh49z7cMR+jeWy/riXETS7p0dUDahYg4YXW7dRpFtm0Dw2PJ6ZKsVgTR6mBZo+zHCX+JTHm6vvlMTI9tOpBizHlg4IIXq6qBOVsMl8ptcAGie1eVkyG9wGdIlTK/4XIlwYCeDEj1pjEqntvsioz9ccRgzdYRralMyWg== 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=Gun0K2NZuMs5VTHXAwg0/b+1MOzRAVwCCyQmIvvL/hg=; b=l8KxYuIzCnhFhd+9PWpcFR+fT245H8Hh2zQvakJoMWCgc1giC3/tR6Hlo5QFZv+oUBjBLf+/Cx+bw4tzhhuugz9xiwZTkwzkmoLxJh5P/diPbkEYC6s47jmaYuSuBDfYnOIoJniYlbCFovzX8jT8Q5KalWTzsZZeURRFUDlXHqE= 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 PH0PR13MB5666.namprd13.prod.outlook.com (2603:10b6:510:111::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 03:09:22 +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.7068.031; Mon, 11 Dec 2023 03:09:22 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Zerun Fu , Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH 2/7] net/nfp: support getting speed capability Date: Mon, 11 Dec 2023 11:08:53 +0800 Message-Id: <20231211030858.1693240-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231211030858.1693240-1-chaoyong.he@corigine.com> References: <20231211030858.1693240-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0166.namprd13.prod.outlook.com (2603:10b6:a03:2c7::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: 7a4c5fa6-3504-489b-290f-08dbf9f69283 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EJi/7Af6dXEzD+qGButzBEyeVplBUSyq51fL24pxR/pO+ZAgmb3ITwP5PEyPqzf1r3tlEc+RoYkeZcrSFb1IzUaXPxIYdqQkT6DdwZXzhUCHs426yZAJpqjicIJ2sYguOz+nhVggcJeGA0Jp3oNv1WZ4ZDEO77M+bX1VJaYQ91NZmdGj6sFioqcXR8hWRiD8cQzBEdI0Xn8PfbsSWBca2uX286QBEQ8HQHDy12PuOMkd3rNKd1ooyClOfU7GiIygud/MPtq2pXMWjcTL18LzwYj3Syh6Y6cG5XfS5hArrJbpp0fgjEm05N0DMVndg4D17dcZw2BosXx7I/fU0JYqco655mB09+O3r7KnrUbEpxTUVz2feZWhzupiKnIwBwclAqauPRF93EvG8/H0awMX6cstvFKHy/amud1A5KkHI7cFC/azrhhghxbnNBaQpSXu3s9CXz9hbaeiC3V4RcQPcKAKNd1w2OoZQU/rYv3XHhBPbZaAveJoVwmlDUdthRD6rdFO6SJms8sJ4x4WZ0GRcaMfXidEWzOXwdycezK0WUrVg7U3iuu53PrZMiyEMIGy7iSCtiKuxislzSsjIWmIfleUlF4nqS91jisg6Afxcs8B7UrkJR2lgsA5Gvwn4aqC8VAiVbF7FVW/3N/oVRbuglXS4ArWb2RKmTazxjp9qQI= 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)(376002)(396003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(5660300002)(38350700005)(2906002)(6512007)(6506007)(107886003)(2616005)(1076003)(6666004)(52116002)(36756003)(478600001)(6486002)(38100700002)(83380400001)(26005)(8936002)(8676002)(4326008)(86362001)(6916009)(66476007)(66556008)(54906003)(316002)(66946007)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: h6Moze+WrHA1CkB3qjwTKQf30JWRMrFeBEHqT2KhAENbpRkeofef2r4wvoYIRu0aIAN7XreqBIopBzCGanURIxV4s1Pdcc1LIbjUskjfAmcK+OxuuRzfHHa4C15/rXzk73co6Yizzi3l8eKkGXAAI70yvHgnRnvswNW00PPti5ApzfKlgVz5KwUDP/mhVOvtyAVl58yIjcwphfnROdAJyO3ibqji9nFmwYgVptjcQ/fGAN2j1yRXCljn0rWQ2J5RcoUUURqTst0YFRlq7ybwmlB8Ki/kxcEYSbB6JirVWK/I8giwzb463icPZozkO3z0Jw//T1oKv26m9RpAlY6Fbm2nDnq1FojTx+NV+h9rRZ45PQXKCUFLMeVKK8OLiYLVF6AsbH4Pq7q1WoPIZtMMgRPRlIWFewr5NNncPmI08u+gA6TYli3G5LzodV/YPd5OcP0Ns1urdX2Oqy6IHxaQQqpP0BvABxfZvMaxoS2WzCzk+6B6+Mz7hKusoNu59cu2vbOhol9EGSRo0OL1MJC3kbs9Gj9Ybg5ZlL/IH16qwH6IwlU3E59vrMhUGHZzFey2IHcMIQGR2w+g9z7yfdAR4PBMnTeIuR43/PJ5hfER7Idbctqzet2cdtG+XFicPSp3N/+YqhHl3vKrtNplgKnl5b8N+n4hyZesov2E0rIehMmk2Q8J273Z0WdMbABKbd/KQHHBb5+urxSS4Y6YbUk8hCKzJNugI+ci3/z+FcrB3QzC28L6Z/DnpESschDXes68IDS6Oe9cMceVDVTXXf8TBmtnAac87Yw+dWOf2QRcOiLyMqk0RgQ7o4trs9KQaAL5NN3Wg6lV6H8Sxl5Yh1XJLK4hsbqPd59tPbZl8FncG09OzxmhP0e6UIWxIuBx5z6kOnG9lITKbhELOO6AssWT6fcwtcU2whjsrv1yHOSFl+NkqG6YcpopDOpWUaLLVB60X/pGttnQEtwbyPulaC+Q66pToLUz7gFzcVMHrS9BbXu/t2ie6XHfyM6+Sm1mSJn1C97U21Ryi1L4VJYw9QMcPJLDCFlBF3TUkZiDQXdPRAqKzzXTASDSboeYZM2bf3rvcgi02JNN+04SM5ZnV5ZieDtzkH0QnRA2FRuyYkvjbGOQ6OWaMk5deOdUIokTyFuLrkGByblg7xax/JBghTi9z6yhsfxotV8a4BfTlSqPYh3U9gDrtT6UmvqKu97Amhwjt0ko+mk2ludZ2otJrPw2pTrr4FTq7P99pM8Ot7Qu0HgcaU1ETZxVU/m24kMNCh81lm4Z8ibhNB7mYtGhdS4k09XvSjIuqlhlPd0xfpCRwInvWZiD/3rnH1V+cGowZC4RUOaPkozzZ+whAaNvYSSlvBZ1zkQUwahGVLu6VjrJHXbYmglforIetx/16BJbqSEBP11tB7+pEkZGL6iSp/fNneKH/V/TfEomkhLKT0R+OnsEuTva7HVSfrP4kmsExw2bSlXfBcd42CGk+6nU0rk8YfHH4y7UiqWd0/006SZ1YH/AJ589IW1cS7fsrJbtGk/ZDZcmbDbPiga3K6qnpOyzoqQKYirLpEpjLbcQIktTPOYzs4sfuXn16pT5wg+q/xyZZN2C91xG6waQx39fSbYWlg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7a4c5fa6-3504-489b-290f-08dbf9f69283 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 03:09:22.1153 (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: Ht9FSF3Ksto13szqiHlK2YlbhIOZEEG/sjHBYxidkOra+D7ZfuQ3+ySNN3T7RViPDTpEjXvgsheXan7DspHV0m86vgv68IGfcrUFilaQ9mw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5666 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: Zerun Fu Get the currently supported speed value from NSP. And the VF can not get the speed capacity now. Signed-off-by: Zerun Fu Reviewed-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- drivers/net/nfp/nfp_ethdev.c | 121 ++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_common.c | 9 +-- drivers/net/nfp/nfp_net_common.h | 3 + drivers/net/nfp/nfpcore/nfp_nsp.c | 17 +++++ drivers/net/nfp/nfpcore/nfp_nsp.h | 55 ++++++++++++++ 5 files changed, 199 insertions(+), 6 deletions(-) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index ef0b0dcd48..591c2de53b 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -1270,6 +1270,116 @@ nfp_net_hwinfo_set(uint8_t function_id, return 0; } +const uint32_t nfp_eth_media_table[NFP_MEDIA_LINK_MODES_NUMBER] = { + [NFP_MEDIA_W0_RJ45_10M] = RTE_ETH_LINK_SPEED_10M, + [NFP_MEDIA_W0_RJ45_10M_HD] = RTE_ETH_LINK_SPEED_10M_HD, + [NFP_MEDIA_W0_RJ45_100M] = RTE_ETH_LINK_SPEED_100M, + [NFP_MEDIA_W0_RJ45_100M_HD] = RTE_ETH_LINK_SPEED_100M_HD, + [NFP_MEDIA_W0_RJ45_1G] = RTE_ETH_LINK_SPEED_1G, + [NFP_MEDIA_W0_RJ45_2P5G] = RTE_ETH_LINK_SPEED_2_5G, + [NFP_MEDIA_W0_RJ45_5G] = RTE_ETH_LINK_SPEED_5G, + [NFP_MEDIA_W0_RJ45_10G] = RTE_ETH_LINK_SPEED_10G, + [NFP_MEDIA_1000BASE_CX] = RTE_ETH_LINK_SPEED_1G, + [NFP_MEDIA_1000BASE_KX] = RTE_ETH_LINK_SPEED_1G, + [NFP_MEDIA_10GBASE_KX4] = RTE_ETH_LINK_SPEED_10G, + [NFP_MEDIA_10GBASE_KR] = RTE_ETH_LINK_SPEED_10G, + [NFP_MEDIA_10GBASE_CX4] = RTE_ETH_LINK_SPEED_10G, + [NFP_MEDIA_10GBASE_CR] = RTE_ETH_LINK_SPEED_10G, + [NFP_MEDIA_10GBASE_SR] = RTE_ETH_LINK_SPEED_10G, + [NFP_MEDIA_10GBASE_ER] = RTE_ETH_LINK_SPEED_10G, + [NFP_MEDIA_25GBASE_KR] = RTE_ETH_LINK_SPEED_25G, + [NFP_MEDIA_25GBASE_KR_S] = RTE_ETH_LINK_SPEED_25G, + [NFP_MEDIA_25GBASE_CR] = RTE_ETH_LINK_SPEED_25G, + [NFP_MEDIA_25GBASE_CR_S] = RTE_ETH_LINK_SPEED_25G, + [NFP_MEDIA_25GBASE_SR] = RTE_ETH_LINK_SPEED_25G, + [NFP_MEDIA_40GBASE_CR4] = RTE_ETH_LINK_SPEED_40G, + [NFP_MEDIA_40GBASE_KR4] = RTE_ETH_LINK_SPEED_40G, + [NFP_MEDIA_40GBASE_SR4] = RTE_ETH_LINK_SPEED_40G, + [NFP_MEDIA_40GBASE_LR4] = RTE_ETH_LINK_SPEED_40G, + [NFP_MEDIA_50GBASE_KR] = RTE_ETH_LINK_SPEED_50G, + [NFP_MEDIA_50GBASE_SR] = RTE_ETH_LINK_SPEED_50G, + [NFP_MEDIA_50GBASE_CR] = RTE_ETH_LINK_SPEED_50G, + [NFP_MEDIA_50GBASE_LR] = RTE_ETH_LINK_SPEED_50G, + [NFP_MEDIA_50GBASE_ER] = RTE_ETH_LINK_SPEED_50G, + [NFP_MEDIA_50GBASE_FR] = RTE_ETH_LINK_SPEED_50G, + [NFP_MEDIA_100GBASE_KR4] = RTE_ETH_LINK_SPEED_100G, + [NFP_MEDIA_100GBASE_SR4] = RTE_ETH_LINK_SPEED_100G, + [NFP_MEDIA_100GBASE_CR4] = RTE_ETH_LINK_SPEED_100G, + [NFP_MEDIA_100GBASE_KP4] = RTE_ETH_LINK_SPEED_100G, + [NFP_MEDIA_100GBASE_CR10] = RTE_ETH_LINK_SPEED_100G, + [NFP_MEDIA_10GBASE_LR] = RTE_ETH_LINK_SPEED_10G, + [NFP_MEDIA_25GBASE_LR] = RTE_ETH_LINK_SPEED_25G, + [NFP_MEDIA_25GBASE_ER] = RTE_ETH_LINK_SPEED_25G +}; + +static int +nfp_net_speed_capa_get_real(struct nfp_eth_media_buf *media_buf, + struct nfp_pf_dev *pf_dev) +{ + uint32_t i; + uint32_t j; + uint32_t offset; + uint32_t speed_capa = 0; + uint64_t supported_modes; + + for (i = 0; i < RTE_DIM(media_buf->supported_modes); i++) { + supported_modes = media_buf->supported_modes[i]; + offset = i * UINT64_BIT; + for (j = 0; j < UINT64_BIT; j++) { + if (supported_modes == 0) + break; + + if ((supported_modes & 1) != 0) { + if ((j + offset) >= NFP_MEDIA_LINK_MODES_NUMBER) { + PMD_DRV_LOG(ERR, "Invalid offset of media table."); + return -EINVAL; + } + + speed_capa |= nfp_eth_media_table[j + offset]; + } + + supported_modes = supported_modes >> 1; + } + } + + pf_dev->speed_capa = speed_capa; + + return pf_dev->speed_capa == 0 ? -EINVAL : 0; +} + +static int +nfp_net_speed_capa_get(struct nfp_pf_dev *pf_dev, + uint32_t port_id) +{ + int ret; + struct nfp_nsp *nsp; + struct nfp_eth_media_buf media_buf; + + media_buf.eth_index = pf_dev->nfp_eth_table->ports[port_id].eth_index; + pf_dev->speed_capa = 0; + + nsp = nfp_nsp_open(pf_dev->cpp); + if (nsp == NULL) { + PMD_DRV_LOG(ERR, "Couldn't get NSP."); + return -EIO; + } + + ret = nfp_nsp_read_media(nsp, &media_buf, sizeof(media_buf)); + nfp_nsp_close(nsp); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Failed to read media."); + return ret; + } + + ret = nfp_net_speed_capa_get_real(&media_buf, pf_dev); + if (ret < 0) { + PMD_DRV_LOG(ERR, "Speed capability is invalid."); + return ret; + } + + return 0; +} + static int nfp_pf_init(struct rte_pci_device *pci_dev) { @@ -1396,6 +1506,17 @@ nfp_pf_init(struct rte_pci_device *pci_dev) pf_dev->pci_dev = pci_dev; pf_dev->nfp_eth_table = nfp_eth_table; + /* Get the speed capability */ + for (i = 0; i < nfp_eth_table->count; i++) { + id = nfp_function_id_get(pf_dev, i); + ret = nfp_net_speed_capa_get(pf_dev, id); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Failed to get speed capability."); + ret = -EIO; + goto sym_tbl_cleanup; + } + } + /* Configure access to tx/rx vNIC BARs */ addr = nfp_qcp_queue_offset(dev_info, 0); cpp_id = NFP_CPP_ISLAND_ID(0, NFP_CPP_ACTION_RW, 0, 0); diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index eb480667c4..ed410a7313 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -1208,12 +1208,9 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) dev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ; } - dev_info->speed_capa = RTE_ETH_LINK_SPEED_1G | - RTE_ETH_LINK_SPEED_10G | - RTE_ETH_LINK_SPEED_25G | - RTE_ETH_LINK_SPEED_40G | - RTE_ETH_LINK_SPEED_50G | - RTE_ETH_LINK_SPEED_100G; + /* Only PF supports getting speed capability. */ + if (hw->pf_dev != NULL) + dev_info->speed_capa = hw->pf_dev->speed_capa; return 0; } diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 305b221a15..aec3c51bdf 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -106,6 +106,9 @@ struct nfp_pf_dev { /** Multiple PF configuration */ struct nfp_multi_pf multi_pf; + + /** Supported speeds bitmap */ + uint32_t speed_capa; }; #define NFP_NET_FLOW_LIMIT 1024 diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.c b/drivers/net/nfp/nfpcore/nfp_nsp.c index e57176adb3..f67572be87 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.c +++ b/drivers/net/nfp/nfpcore/nfp_nsp.c @@ -728,3 +728,20 @@ nfp_nsp_hwinfo_set(struct nfp_nsp *state, return nfp_nsp_command_buf(state, &hwinfo_set); } + +int +nfp_nsp_read_media(struct nfp_nsp *state, + void *buf, + size_t size) +{ + struct nfp_nsp_command_buf_arg media = { + { + .code = SPCODE_READ_MEDIA, + .option = size, + }, + .out_buf = buf, + .out_size = size, + }; + + return nfp_nsp_command_buf(state, &media); +} diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.h b/drivers/net/nfp/nfpcore/nfp_nsp.h index f99ca941d5..41e8402154 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.h +++ b/drivers/net/nfp/nfpcore/nfp_nsp.h @@ -172,6 +172,9 @@ uint32_t nfp_nsp_config_idx(struct nfp_nsp *state); int nfp_nsp_hwinfo_set(struct nfp_nsp *state, const void *buf, size_t size); +int nfp_nsp_read_media(struct nfp_nsp *state, + void *buf, + size_t size); static inline bool nfp_eth_can_support_fec(struct nfp_eth_table_port *eth_port) @@ -221,4 +224,56 @@ int nfp_hwmon_read_sensor(struct nfp_cpp *cpp, enum nfp_nsp_sensor_id id, uint32_t *val); bool nfp_nsp_fw_loaded(struct nfp_nsp *state); +/* The buf used to receive bitmap of link modes */ +struct nfp_eth_media_buf { + uint8_t eth_index; + uint8_t reserved[7]; + uint64_t supported_modes[2]; + uint64_t reserved_2[2]; +}; + +/* Link modes about RJ45 haven't been used, so there's no mapping to them */ +enum nfp_link_mode_list { + NFP_MEDIA_W0_RJ45_10M, + NFP_MEDIA_W0_RJ45_10M_HD, + NFP_MEDIA_W0_RJ45_100M, + NFP_MEDIA_W0_RJ45_100M_HD, + NFP_MEDIA_W0_RJ45_1G, + NFP_MEDIA_W0_RJ45_2P5G, + NFP_MEDIA_W0_RJ45_5G, + NFP_MEDIA_W0_RJ45_10G, + NFP_MEDIA_1000BASE_CX, + NFP_MEDIA_1000BASE_KX, + NFP_MEDIA_10GBASE_KX4, + NFP_MEDIA_10GBASE_KR, + NFP_MEDIA_10GBASE_CX4, + NFP_MEDIA_10GBASE_CR, + NFP_MEDIA_10GBASE_SR, + NFP_MEDIA_10GBASE_ER, + NFP_MEDIA_25GBASE_KR, + NFP_MEDIA_25GBASE_KR_S, + NFP_MEDIA_25GBASE_CR, + NFP_MEDIA_25GBASE_CR_S, + NFP_MEDIA_25GBASE_SR, + NFP_MEDIA_40GBASE_CR4, + NFP_MEDIA_40GBASE_KR4, + NFP_MEDIA_40GBASE_SR4, + NFP_MEDIA_40GBASE_LR4, + NFP_MEDIA_50GBASE_KR, + NFP_MEDIA_50GBASE_SR, + NFP_MEDIA_50GBASE_CR, + NFP_MEDIA_50GBASE_LR, + NFP_MEDIA_50GBASE_ER, + NFP_MEDIA_50GBASE_FR, + NFP_MEDIA_100GBASE_KR4, + NFP_MEDIA_100GBASE_SR4, + NFP_MEDIA_100GBASE_CR4, + NFP_MEDIA_100GBASE_KP4, + NFP_MEDIA_100GBASE_CR10, + NFP_MEDIA_10GBASE_LR, + NFP_MEDIA_25GBASE_LR, + NFP_MEDIA_25GBASE_ER, + NFP_MEDIA_LINK_MODES_NUMBER +}; + #endif /* __NSP_NSP_H__ */ From patchwork Mon Dec 11 03:08:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134997 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 2F58B436C3; Mon, 11 Dec 2023 04:09:46 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EB88340C35; Mon, 11 Dec 2023 04:09:27 +0100 (CET) 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 96FB540A87 for ; Mon, 11 Dec 2023 04:09:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=An/7C+IaWiVsocZxpb9BSW7DKcbKfKhQIsppqaeZg1JQybkxVxn2e5kxJKzR8ExYFGAt7vFzzMfkRs/opS9hW+0W6AvSAB2VSQtxV8IXdYeY8j5APZb2uLn9vek5pjLrMy4eMXTrx20MEVPF0lP+xkyEsGG98+b3RS8nOl3bFvk+hIhm2EywpMxSg2n81bgdLsMFEma/lfJLCoGVGjiNBzF4p1LX4htBC6+D5th3Y8A8s0w0MhSpmMjadFM/zR7yoCvgFcVTovh8+gj2afFLnjouKj/Ibrq/L+1VAgOpdizNHXNr278gZTAHmUGp+6fJ0EWF0ySk+oqJMaBscV78Yw== 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=odrBTa+71s9DVWPzCdFkU7SQpi3QnQfvHYGQ3l4/agk=; b=VZwzXiENNhJREAjbnDnOgty0QQpIq8TUiWT4v251BAed12MJRZNZVTO6gifofxr8oD3JkP1OVsAxCyL7/Pu8gKz9lY5s6Gr5nCcp9AU95Sjjdc4r65eBBe93o/qczOPANYZzeMm7p2+WDndio3TjLexHqUoBv4IGtds89xl3MrRpLEoymPkXR/T2O1Iob1zdPmCuDcQGYZV2dejWgkg7FxU+6h+CIwo2hAPPA0NofcRQywPCUIuad7NUpGi6skjYr8Tj0/FqQ+I1rwh1WX4T+8FT2D+SbCYGMUkX+DSiS3+2/lR5ymmTW6GIyKB0Hrlks8DOZWpCFJoproGhTj0NpA== 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=odrBTa+71s9DVWPzCdFkU7SQpi3QnQfvHYGQ3l4/agk=; b=U1FGhdd1QpkphJ3BfjEaL7Xz9oGr9ekXyiDSVVuhuejJ2AW+OkGuyiqFeO7I1b96HZQyOIoCtjNCB9Hz6d8OWKxQmNh9w3+OvIeQBpKJB1aRpq856RsySWWe+SZP6tQpr0DkZjYsxk4Wa7aOc53v9nXZ5RFau/oWQyVBbRHMZPo= 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 PH0PR13MB5666.namprd13.prod.outlook.com (2603:10b6:510:111::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 03:09:24 +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.7068.031; Mon, 11 Dec 2023 03:09:24 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Zerun Fu , Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH 3/7] net/nfp: support setting port speed Date: Mon, 11 Dec 2023 11:08:54 +0800 Message-Id: <20231211030858.1693240-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231211030858.1693240-1-chaoyong.he@corigine.com> References: <20231211030858.1693240-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0166.namprd13.prod.outlook.com (2603:10b6:a03:2c7::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: 95bb0a53-50a0-4089-544e-08dbf9f693b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aZcTIMq4ToOq1+BalPN4cooYiAYAZGC37/Yo5zPqcqYw8GZHJ2wDnAnTMP74WhqNiUVR9dDskwFuUu6pC62CyB5w7SAoFtJWXrNDNMUCU8/XIbCvEJAgJq9QuiYWBTffobfApKEPZXh8kjGwzMG8A0eC2RdLGP2NN2Z9B/z2D/It3nBYabVK4x/fZFGahEqpBe6QD9xQpomwzfAIQQ+0zRVe8sSGwQNxS6zeBW0L9Ue8wIPTFshCg4Na8bfJ9yvmWRLJPEXzWE7Zx6FE69YzcmkUOz5VKCC++0S87JP+LLgUaBv6Rv1RNbuVnM338FcdOU/N0F5lyH3qJlyrdFJIY9c+0p/PqmZ1O77Och8/h2dLlrSAkicS3WPrVuTfQqEH2/KZe7Da3QFGgybDnVAi5BKyuZ/5AO2OqlSLfJkhrhKJx0jdo7UHOr8SMq2ECsQfHHMaDpg3XltZEpdz2LrL7OKwOSnRr92WGt4EQCEgM3asokj0uGeyZIIcqqIZQjoKuGCNWJva0NNtfAlfmyeqLhAQ2SjMZ6L/fobtGBZmaid8zighEXif5w1C0OBjVyb4OBYeJL7UGI2hxd9Q6ppcncwlCIKHjmsLJFulWLZQfNJNfvpYs+mtw3AVJJZnvXM4urGZqD3a6eAusmCR8nx/bPF3Z7JZ1bbknpKvMQZH7XA= 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)(376002)(396003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(5660300002)(38350700005)(2906002)(6512007)(6506007)(107886003)(2616005)(1076003)(6666004)(52116002)(36756003)(478600001)(6486002)(38100700002)(83380400001)(26005)(8936002)(8676002)(4326008)(86362001)(6916009)(66476007)(66556008)(54906003)(316002)(66946007)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: OtvjUcXgxj5uYNq4QV0CV190xtiStYqkR65vSU7KAxVCxk6qAegjxfiX+83KMPpyUBGEgCVr3EyZ9EAboMuucUiQUXdIlNI28XutSEiDdHK7wLzMfvWPr5hXmFv3PmVHi7rfbiRHFmTrDwTRYL5R0msUSWwSIGLBAzq2Cm6aygOOiPiB963+D6nSqbpDu1VhZqVwBuk/rFYRPzm9aubAy5GkIYkc++2Q3UR6MDOORlrRLjsySlS+kwfcYMp+lSS97wYN9x8Kcnskhz8TsKSDI98hbFsCn0/Y+oLfAZQ4KMJ8rQZUJKh7/0970IgRNF3PHujBu4Sii/reJfp5DAHd9F0NgcUJ8nmGMgfxrCmayeR9EYOeQy4sGxiSShgias+nz9BaZ2KO3bve2hhX6Au7dcWYjwHHXhr+Q0AkYG1boE2XjGW2ZHy4kd2vS36a47vt6yNBeSPZhwo9Eg3dxlKATHllimOFiPRG8T24pdSnMBeSXLAza70dTyrVPgG/AD7G1h31PaZ7H/N5FiowICCAZFtRRWFmfWOMW2+Y9q8OzB0VjZmLKocT8ar3rhEMixDNJTBU/7ZvEQepTqatE94KgwStTjj5aDbSQSvdtaba1wGt/ycdio5kRIj9MqbD0ERbb7vyrHFfsdxA55kV65KjpV3XVYdgcdfAT++EUpc8/lVp3e5CCVe/1JMpLDDMz19EW3aJbkzhRIee9np4P23loR45V16p5IRX/s09DEVyqHm+GqroyfO8Qsz+meZfABUL8vyd8GIZ30SZLocIshhHKjMPd6EnjJqVXYFRE6Zv4M+vY+yRS3mRj/MgpQXXLWbIsdphBXGRpfMkMpLG8G5CTN1yasPwe6iOlAlBCYAMUH9QlGkSfGaYIjbINxOe3hq5pQNI+eNUl7ua1e3fK1EmyPQqeUSWnD1Ua3BMDEBXpnM8qC0caBh3BB0a9Kn5S/qi39MWM2lts5uh82YASAGMTOvxiaV3xgLdwuiF49NAaA6pIEIIMrbnaJmNqTrHveB7Xo6M1PqUPQ9TcvzhzxMrXTjFH4dRJhxpqVKfPPiQkIZfkMLNTZzUJs5WPmcSFrVF0EW0CoMCzL9XaJRH0ASplFFd7y1vR/wB7p4nCvSz/KMH3GRKKHrPmUD+JdlxcdiNDOt52dUy1qJt9ZhyfLyZaIv70K2CZgihFI6LsLcW8tM7FLlxqaLthynRc3mcAfQNJvqME0C9oZAMnyfAVWe6kdLPyeR2C4OOCPe7cjlbEsYT12YLCAH+RE5FHjrlYpyO3PdUzkFms1Al81+lToHdfD0nF9MEcZR50rSe5gXTCE+FDI8E5KWes0FBCn/De4m2GuEyHy5/5o4yKkxAdJ6brx7Y8oLfHOcdWrWgkW+GvdyU6HwvMelbgh6tiBItNcud9ERkVtjxt8JKmvysqHjbA7Yy81mhQONMebFXj7Du8ugLTCC9juDDMa4nY7nSfxVO60q4EbmkyTDoRrqNmAmqjwseFkVBUNJotV/RzG807hnbdB7QtoCUlWfCl6HTmp+JocAeSvl4weMvwJ5WZdm0xTJApRwmG0x1HyitcVxBVSKTjYfcAFEcAt2qgvTAH6h2dPgZdhSefid9JtDb2OuqdQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 95bb0a53-50a0-4089-544e-08dbf9f693b4 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 03:09:24.1060 (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: P7UmgHFOlNlIax12UNb0/lYGpFlh3UDWgPdwo1OlFyN5h1rLXmOtrXYy/XdH97Y/InSMM4WtjB9YF5Xhre72a0MxC8uVFjBXlRi5fF3ZGP4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5666 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: Zerun Fu Add support of setting speed of port. This feature allows to set any currently supported speed. When the port starts as default, the auto negotiation mode will be set if it is supported. Signed-off-by: Zerun Fu Reviewed-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- drivers/net/nfp/nfp_ethdev.c | 151 +++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 591c2de53b..54d018870d 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -45,6 +45,150 @@ nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic, rte_ether_addr_copy(&nfp_eth_table->ports[port].mac_addr, &hw->super.mac_addr); } +static uint32_t +nfp_net_speed_bitmap2speed(uint32_t speeds_bitmap) +{ + switch (speeds_bitmap) { + case RTE_ETH_LINK_SPEED_10M_HD: + return RTE_ETH_SPEED_NUM_10M; + case RTE_ETH_LINK_SPEED_10M: + return RTE_ETH_SPEED_NUM_10M; + case RTE_ETH_LINK_SPEED_100M_HD: + return RTE_ETH_SPEED_NUM_100M; + case RTE_ETH_LINK_SPEED_100M: + return RTE_ETH_SPEED_NUM_100M; + case RTE_ETH_LINK_SPEED_1G: + return RTE_ETH_SPEED_NUM_1G; + case RTE_ETH_LINK_SPEED_2_5G: + return RTE_ETH_SPEED_NUM_2_5G; + case RTE_ETH_LINK_SPEED_5G: + return RTE_ETH_SPEED_NUM_5G; + case RTE_ETH_LINK_SPEED_10G: + return RTE_ETH_SPEED_NUM_10G; + case RTE_ETH_LINK_SPEED_20G: + return RTE_ETH_SPEED_NUM_20G; + case RTE_ETH_LINK_SPEED_25G: + return RTE_ETH_SPEED_NUM_25G; + case RTE_ETH_LINK_SPEED_40G: + return RTE_ETH_SPEED_NUM_40G; + case RTE_ETH_LINK_SPEED_50G: + return RTE_ETH_SPEED_NUM_50G; + case RTE_ETH_LINK_SPEED_56G: + return RTE_ETH_SPEED_NUM_56G; + case RTE_ETH_LINK_SPEED_100G: + return RTE_ETH_SPEED_NUM_100G; + case RTE_ETH_LINK_SPEED_200G: + return RTE_ETH_SPEED_NUM_200G; + case RTE_ETH_LINK_SPEED_400G: + return RTE_ETH_SPEED_NUM_400G; + default: + return RTE_ETH_SPEED_NUM_NONE; + } +} + +static int +nfp_net_nfp4000_speed_configure_check(uint16_t port_id, + uint32_t configure_speed, + struct nfp_eth_table *nfp_eth_table) +{ + switch (port_id) { + case 0: + if (configure_speed == RTE_ETH_SPEED_NUM_25G && + nfp_eth_table->ports[1].speed == RTE_ETH_SPEED_NUM_10G) { + PMD_DRV_LOG(ERR, "The speed configuration is not supported for NFP4000."); + return -ENOTSUP; + } + break; + case 1: + if (configure_speed == RTE_ETH_SPEED_NUM_10G && + nfp_eth_table->ports[0].speed == RTE_ETH_SPEED_NUM_25G) { + PMD_DRV_LOG(ERR, "The speed configuration is not supported for NFP4000."); + return -ENOTSUP; + } + break; + default: + PMD_DRV_LOG(ERR, "The port id is invalid."); + return -EINVAL; + } + + return 0; +} + +static int +nfp_net_speed_configure(struct rte_eth_dev *dev, + struct nfp_net_hw *net_hw) +{ + int ret; + uint32_t speed_capa; + struct nfp_nsp *nsp; + uint32_t link_speeds; + uint32_t configure_speed; + struct nfp_eth_table_port *eth_port; + struct nfp_eth_table *nfp_eth_table; + + nfp_eth_table = net_hw->pf_dev->nfp_eth_table; + eth_port = &nfp_eth_table->ports[net_hw->idx]; + + speed_capa = net_hw->pf_dev->speed_capa; + if (speed_capa == 0) { + PMD_DRV_LOG(ERR, "Speed_capa is invalid."); + return -EINVAL; + } + + link_speeds = dev->data->dev_conf.link_speeds; + configure_speed = nfp_net_speed_bitmap2speed(speed_capa & link_speeds); + if (configure_speed == RTE_ETH_SPEED_NUM_NONE && + link_speeds != RTE_ETH_LINK_SPEED_AUTONEG) { + PMD_DRV_LOG(ERR, "Configured speed is invalid."); + return -EINVAL; + } + + /* NFP4000 does not allow the port 0 25Gbps and port 1 10Gbps at the same time. */ + if (net_hw->device_id == PCI_DEVICE_ID_NFP4000_PF_NIC) { + ret = nfp_net_nfp4000_speed_configure_check(net_hw->idx, + configure_speed, nfp_eth_table); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Failed to configure speed for NFP4000."); + return ret; + } + } + + nsp = nfp_eth_config_start(net_hw->cpp, eth_port->index); + if (nsp == NULL) { + PMD_DRV_LOG(ERR, "Couldn't get NSP."); + return -EIO; + } + + if (link_speeds == RTE_ETH_LINK_SPEED_AUTONEG) { + if (eth_port->supp_aneg) { + ret = nfp_eth_set_aneg(nsp, NFP_ANEG_AUTO); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Failed to set ANEG enable."); + goto config_cleanup; + } + } + } else { + ret = nfp_eth_set_aneg(nsp, NFP_ANEG_DISABLED); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Failed to set ANEG disable."); + goto config_cleanup; + } + + ret = nfp_eth_set_speed(nsp, configure_speed); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Failed to set speed."); + goto config_cleanup; + } + } + + return nfp_eth_config_commit_end(nsp); + +config_cleanup: + nfp_eth_config_cleanup_end(nsp); + + return ret; +} + static int nfp_net_start(struct rte_eth_dev *dev) { @@ -75,6 +219,13 @@ nfp_net_start(struct rte_eth_dev *dev) /* Enabling the required queues in the device */ nfp_net_enable_queues(dev); + /* Configure the port speed and the auto-negotiation mode. */ + ret = nfp_net_speed_configure(dev, net_hw); + if (ret < 0) { + PMD_DRV_LOG(ERR, "Failed to set the speed and auto-negotiation mode."); + return ret; + } + /* Check and configure queue intr-vector mapping */ if (dev->data->dev_conf.intr_conf.rxq != 0) { if (app_fw_nic->multiport) { From patchwork Mon Dec 11 03:08:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134998 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 CDDE9436C3; Mon, 11 Dec 2023 04:09:54 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 79CF340E13; Mon, 11 Dec 2023 04:09:30 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2135.outbound.protection.outlook.com [40.107.243.135]) by mails.dpdk.org (Postfix) with ESMTP id 6E4DD40DCB for ; Mon, 11 Dec 2023 04:09:27 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kSv5lxth8fzBq6UHHHyrd1pwXDSQRmf7/NIuxSm4Fw5LQiW9UhNaKWmRvFBpK5s70XhhWSz3lmrRT4t1VQxKbdNoQ+OQ2wDG9/FTWdjBWRis9oDOMrfmSQ8EJIVSQSQpk5Jrlq5ws8ziqY8HU2iEuccqzti94vhMp8ADXVxAS3NNIRGm9R9Hul4lTumpHBQBWhdmaNYzzP22GmsVDYnUXUmQ19uRB2aNH/ak5YvgJKWcQ30I87NMS03nMsSlFHEkO3LycioowkqEgnNEVwFFsTCIHnl+M51eBuUj/kcQFSdqBQYsS5jg4AbTZSDx6C8z+lygrl6IPe7EhYMGht6vEg== 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=rtepOQN/A5Z+1I8Tc41ZkmRL0AJd36e1ySLqB0MfS1k=; b=fF8vZ+8wOD/S5cR6fmv+6P2IC+y8eWRkq05fuKEffs+fdLcnaXvQMs0E7UuLBfvALOW15iOapSyr96wHmW54e5dbE8iptuf+fgQJXhIZWBwQo3phXqBzWv0NFWP2Oqy4B5cp8RIFRG32pBnNtK04IBMmD60YRWTVLkl0XJrpuqkr5kXE2I247vcpUpgZtj4KJZTQqSGRFch2LC3X3t4vui1gh68zjBG2QPlr3HgAGwETMO3xeSmLiwTYLbURqlrZ44c3DKJLkqwElCfVa0xRO62D8O3aSHBU3P/N56Hc+bUMWQ+sorw1hQ7fwSxUeAnAP+LG+2INsotA6HseiDKhIA== 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=rtepOQN/A5Z+1I8Tc41ZkmRL0AJd36e1ySLqB0MfS1k=; b=daDV/J6bYU0gCahzAZA3pB9ZBGOuwACvTHIjFM5RL2QgC0Inu/vJpOQEAPoW6nGn1MEOAF1wjx76OkOZR65hOImEIH7H645SYQdiwNSV8e/GckfNKjFRd1ylKLw+EFf+6mgur9Z2dc3iOM8kIX7ciO7sgslz60n8D8XxkQtCLvo= 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 PH0PR13MB5666.namprd13.prod.outlook.com (2603:10b6:510:111::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 03:09:26 +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.7068.031; Mon, 11 Dec 2023 03:09:26 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Zerun Fu , Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH 4/7] net/nfp: modify the link update function Date: Mon, 11 Dec 2023 11:08:55 +0800 Message-Id: <20231211030858.1693240-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231211030858.1693240-1-chaoyong.he@corigine.com> References: <20231211030858.1693240-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0166.namprd13.prod.outlook.com (2603:10b6:a03:2c7::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: 5605b60f-cc7d-4e52-bce7-08dbf9f694e0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GnoIi74XfANMv/3NmrjW+fZEiGPs8y/HKBi5GnRKR6XCnPvNWSDOfUxefJCeNGffDnJTlCk20JNENAw3VQKyPfFHxhgi73RkocVfHXkdQPTYNabrSmn4NPbWP0sKCUnHCAl50Joj0zruMF6kRP1Fq0UAoievkX10+lBpPI1N1I5JTV76cycmDcVegvUQqZ2PGrsXOY2ksgKRCEX4sOtJKlwgpVUP3DonALgS4ecpaSWK5V/Uai20hRALFGOnjyx/XWenY0vgQPGOgZSnksdZsF8rIYA5NqY9CIWyvz3iR9hX+NPrOd8OomcXNQiLm2Yfyd7CTOj2XXFQVU8mfcnyEbXDBLxZGJD09cjtpeGIgVv8GVT37EMxF8LHhI8uBt+ZSs/r24seFx8+0sES/A/vp1dkfYFo4/R9YpUlIzhuFTk57J3WgUip1h86mgXmBATr6Ce6MeQFSfsFz0dWj13aaf1GtpoCCxc3WRQH0G8TTJ1NhbAs151FBNlbsfIWIQo3uJI1JnZGUg3SoX9J/umGbFwSYdy+sVLpWiN/futgwC++wmk93aZ/nlRLAes/zVBJHN0Vrj48WZmxWWe581b6LGO7//YNV5L+2z4zA5B4m/3KPNypxjofd+ylEz1KSeegX4GVvJHJeYgAFMdQovNfEDjzeGhi7Q0Bn0D42W9/KBs= 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)(376002)(396003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(15650500001)(5660300002)(38350700005)(2906002)(6512007)(6506007)(107886003)(2616005)(1076003)(6666004)(52116002)(36756003)(478600001)(6486002)(38100700002)(83380400001)(26005)(8936002)(8676002)(4326008)(86362001)(6916009)(66476007)(66556008)(54906003)(316002)(66946007)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Omcn9vbPgDC8mFeL9k/ypB71h1l8WSNYtlwaIVvYY9HOLAeTpO1pLWXFeIibAUnmW6iXNlb05xH5XTepOfBdxvU5NBXyoXVss9z2XQGCgfElPdLG+xwRxfmpMMDzYbB7IvJ6TFWFvt1J37ta1H7id8aIcHtTpGbYsuaOouS3U86acOWyO0+bQpTuN7XZDOkG/CyZeVUQMbZo9QOJpkgYQgRjxO2T2vpfWXr9rPUNABUNh4YZk3HrkU1YF0Lua4pGKwiyXKvR3dZdKgwi/I9L5M+KZ2U8cD8kUqmZ74m2eBYM5cqUsjNb2PUJMEvTNZ7agFzI2QxN01cowU/YfQMvFlmxguDYajtkin9E860GxGLsLzWN+5prczET9esoOc+q+pyMxlV7EqtS+Wsp22by5+GOOPuwn5xgsnZyyw5Jgk9GivM9/pvK4XXC+ai1WEpGpoLoCGRxSDRmySY6OKWmXHAmLj1QXVylOMWg1y5GT3O8b/gpgVOy5GB7ArR3w0YhFohnxVnqM5UJ24V2g3nHtCNrqCOGaiOlRT/P1AOWbHwsPJxR4fwj9Urlc/33SPsn7b51+FuyaFFjelF1hDnwbaJj2XFTL5cFQKUUmoTaeUhmzSQhO4/gI71Lpnv46pKuNVoU36OWnpLW+MpK8YK5uyaxFgEwNsUKoIxPO7y9phzo1y3zXVxae9btV0HjHoQKlGs1Diewo24p4tdprWtC5RADRJNrD+8mqCiQDCDcMP+hw+UpNIeCGSGfMZYbZVFPuBuY9yaovFQfjpQxQBL24Zu7TbeWirpHQJys0qsrf4+VxkmYkiFShrtSHP+LWZ3Z69o/RmXnNEDpgjqdEYOplnY85D1SDkEWuOpHZM+U15qaewRkL1vosJMrLR2IWXl7B2J3BEYlwY1h5TADcyuSQJUa1jH3YcNvNW/KtniOpVaImJBnwYPb8Dc6IIM4wKolUPChmV8KDD0rGWOejO3JORkZx9597hsKQimY4rsbE55F+MBIbWRxDqtMIxTGPicaNZM0hJ+yfYU79K00q6E76ZKyn09LzcoBIMHDdbrrCzSoAnk6X+DydTkU68xmdHpQccz6ATpWIrqnEvup64EteUqRSKlsZJrJ+CFH1Hfh44QKKog2OA4jxpbTS+ZKdzQqwg5uya6eA1/2aOoDAC0WK2Enr80uRGEmxpnaomBW5VO1/yYy54nNFXOzgHr9cQMkoboQpoQtUpNfCEQE9tUwLG4cLxOTYRzGLsBzFUYu6dc5uDfODbpRGYFw34WBpoiWnw9NG/GNW4lOE0eS+MsJVxZmyEvK90RuvwORT4Aut+v3nnpGoZE71Lhy2V0IQeUSIcp0gwl8PHZ8TCUw5OfqGejMH1L42Wx7Q8xdY20/SaFpQzdIneIZ9XwXjvERq5ZQeKIXeleAKeRY8l6TEzPRJmyyevQBiTRgof1pRpjsTqVr23gGvEDg/c+Zxk2vRcZ3KSxDF3JItkej6+WPHJ8Ci6tj/pw/tCZLRUMvzBoIMJjHmhxTK8QOm5B2zJQDyHDd2ruV++a0QImkQ3h2uB3A9N79R+nVrWdnKMfjv1YNjOqVgzWPSvwNIN52+Kgv+zfbJ1FpDFFMo62FESnbHE8eHA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5605b60f-cc7d-4e52-bce7-08dbf9f694e0 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 03:09:26.0950 (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: lxlW3Jc0EFN3Iohq49CICeT4miW0DSDmsa14c530xdPC81Dx2lfCfDtiVp5c3j3kzXHR2RbFNuQrNKoKk+IYh3UVgeTAOREuSgKSbgmdMsU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5666 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: Zerun Fu Modify the link update function to get the new port speed state after the port speed is changed, including the new speed and whether the auto negotiation mode is enabled. Signed-off-by: Zerun Fu Reviewed-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- drivers/net/nfp/nfp_net_common.c | 59 ++++++++++++++++++++++++------- drivers/net/nfp/nfpcore/nfp_nsp.c | 4 +-- 2 files changed, 48 insertions(+), 15 deletions(-) diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index ed410a7313..1658cc7d3c 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -643,6 +643,46 @@ nfp_net_allmulticast_disable(struct rte_eth_dev *dev) return nfp_net_set_allmulticast_mode(dev, false); } +static int +nfp_net_speed_aneg_update(struct rte_eth_dev *dev, + struct nfp_net_hw *hw, + struct rte_eth_link *link) +{ + uint32_t i; + uint32_t speed; + struct nfp_eth_table *nfp_eth_table; + struct nfp_eth_table_port *eth_port; + + /* Compare whether the current status has changed. */ + if (dev->data->dev_link.link_status != link->link_status) { + nfp_eth_table = nfp_eth_read_ports(hw->cpp); + if (nfp_eth_table == NULL) { + PMD_DRV_LOG(DEBUG, "Error reading NFP ethernet table."); + return -EIO; + } + + hw->pf_dev->nfp_eth_table->ports[hw->idx] = nfp_eth_table->ports[hw->idx]; + free(nfp_eth_table); + } + + nfp_eth_table = hw->pf_dev->nfp_eth_table; + eth_port = &nfp_eth_table->ports[hw->idx]; + speed = eth_port->speed; + + for (i = 0; i < RTE_DIM(nfp_net_link_speed_nfp2rte); i++) { + if (nfp_net_link_speed_nfp2rte[i] == speed) { + link->link_speed = speed; + break; + } + } + + if (dev->data->dev_conf.link_speeds == RTE_ETH_LINK_SPEED_AUTONEG && + eth_port->supp_aneg) + link->link_autoneg = RTE_ETH_LINK_AUTONEG; + + return 0; +} + int nfp_net_link_update_common(struct rte_eth_dev *dev, struct nfp_net_hw *hw, @@ -650,23 +690,14 @@ nfp_net_link_update_common(struct rte_eth_dev *dev, uint32_t link_status) { int ret; - uint32_t i; uint32_t nn_link_status; - struct nfp_eth_table *nfp_eth_table; - - link->link_speed = RTE_ETH_SPEED_NUM_NONE; if (link->link_status == RTE_ETH_LINK_UP) { if (hw->pf_dev != NULL) { - nfp_eth_table = hw->pf_dev->nfp_eth_table; - if (nfp_eth_table != NULL) { - uint32_t speed = nfp_eth_table->ports[hw->idx].speed; - for (i = 0; i < RTE_DIM(nfp_net_link_speed_nfp2rte); i++) { - if (nfp_net_link_speed_nfp2rte[i] == speed) { - link->link_speed = speed; - break; - } - } + ret = nfp_net_speed_aneg_update(dev, hw, link); + if (ret != 0) { + PMD_DRV_LOG(DEBUG, "Failed to update speed and aneg."); + return ret; } } else { /* @@ -718,6 +749,8 @@ nfp_net_link_update(struct rte_eth_dev *dev, link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX; ret = nfp_net_link_update_common(dev, hw, &link, nn_link_status); + if (ret == -EIO) + return ret; /* * Notify the port to update the speed value in the CTRL BAR from NSP. diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.c b/drivers/net/nfp/nfpcore/nfp_nsp.c index f67572be87..6a2ba709ab 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.c +++ b/drivers/net/nfp/nfpcore/nfp_nsp.c @@ -221,7 +221,7 @@ nfp_nsp_check(struct nfp_nsp *state) } if ((reg & NSP_STATUS_BUSY) != 0) { - PMD_DRV_LOG(ERR, "Service processor busy!"); + PMD_DRV_LOG(DEBUG, "Service processor busy!"); return -EBUSY; } @@ -258,7 +258,7 @@ nfp_nsp_open(struct nfp_cpp *cpp) err = nfp_nsp_check(state); if (err != 0) { - PMD_DRV_LOG(ERR, "NSP - check failed"); + PMD_DRV_LOG(DEBUG, "NSP - check failed"); nfp_nsp_close(state); return NULL; } From patchwork Mon Dec 11 03:08:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 134999 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 3596D436C3; Mon, 11 Dec 2023 04:10:01 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9AD8A40E5E; Mon, 11 Dec 2023 04:09:31 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2108.outbound.protection.outlook.com [40.107.243.108]) by mails.dpdk.org (Postfix) with ESMTP id 9D80240E0F for ; Mon, 11 Dec 2023 04:09:29 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nJH/hr12mL+r95FNnCUQ+n4W05lRsv8elQtcbLl839jBbdFxUfz8BWPk5H20MqXsvltvdfjYj+iDpTSeU36Yzy6wslMJVcmPEq97E5Lv/iYfYjtIF78jkvou1n1BOIctLQxdWni/jdJ+jyr6p/1iK66/I9GRpxnbDoZKyY+CAWVPxJiTgmcxmWmlAcdtmiCdN4HyqNy7eu9Q5t6DPOU5lD6x7L6yiXrt5tTVftdkIdxw1dTJ8+Sz0WgQ3zhzus67t6t6t9sHMio/O10K7KUlTS4v4lcSklRIxnXybChWYFbwyUpQVKdx0rdHjp/DORT3tAJ2GF/EBoQr2R7py2xQvw== 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=W6mxSE+JpEe2v3NWeIuswVx2HFrmOsHidLC2FVZxCVA=; b=lXxng0lf32ZqZ4sMZqnYATmdJedzLS0Gu4D2iRfA/rOi8kvUlUb9zqHKOAUTPerH1f8CZ6I0+D9EykDkdiH9ft1oBIYeo9nryxB8yInB0wIoZTdRFoQ0rMk/1FzOlipvt7Pas+olfcXq482M1zil963JswLEefDukJtuvDTWwVYZBbZtHN//vcac3YPA7frNXGcgcar917j1APWRScmaqOqYR3JLuWsXnnfh72S4ygfTjHCQPq6oM9fmVwVMEzsf0kaNgS8wBNdQDaHdaesd3IaeQPGIZZe9pizMlQ85NxcFz3tDgMjb2QegBwVsAYrgxQ8xtvEOQ204zVJdeVsCRg== 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=W6mxSE+JpEe2v3NWeIuswVx2HFrmOsHidLC2FVZxCVA=; b=rX57U6Wp6yLmJEWlqkSLPJnRyiRggp8Abd+IPrRlenR6QEePoe46lVyR0ysDi8OM0osJ8CnDQ9qPwfl1UOgkkWIodrrh+lSKJfo08ADwihbiHlSImAt6tR5uoHZiMjxOWx0WVnwkME5F6x/T5JQL7hYuP+RilhhAYXUKjP4UPn0= 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 PH0PR13MB5666.namprd13.prod.outlook.com (2603:10b6:510:111::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 03:09:28 +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.7068.031; Mon, 11 Dec 2023 03:09:28 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Zerun Fu , Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH 5/7] net/nfp: support getting FEC capability Date: Mon, 11 Dec 2023 11:08:56 +0800 Message-Id: <20231211030858.1693240-6-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231211030858.1693240-1-chaoyong.he@corigine.com> References: <20231211030858.1693240-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0166.namprd13.prod.outlook.com (2603:10b6:a03:2c7::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: 7bf0f340-242a-4f2d-ea83-08dbf9f69611 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: r9Unk0ByvTHv+gFSEoJfRCbXwRGB+dy0PUiOQ1r9BOzlMiFxmIuyJE220fvxLmG7gyLQ9cu80EqonwWBhG+j+I+PkAWbcThL5elfvTWfrszzJNt7w9kpdcWBtHrE2A1W+7baL9Q8uQ7q+AouOflV99ZWRoi5T5xKylZLjGH2v4ZryK45lQgPYeRoIjPNy/DE128C5ihtWUk84X7hjtxIFLADgKBBT5/PJJzuDs8wOR38QLk0mZGZVrxPo1uY90zMNYb1BrIuwQDSmpntL1/Y2lGsAx+8jCMOb8p9cv4+S0/Mj+aFD1KW3ETUm5B0XkpeK/4FcVINu0w8rSxAmrej4TxyxZzq2Re4X0SSYnOaDIn3dKunCQVK6rT4BO+GCN+AiPaONQauyVAB+OXjkff4juj6M+ICdHyufl8xYfuS07WYOrIUJfdw2ZbiE3GJl7IoER5KTxpRP/zC5jK/dssoMTX3XcMilrAKV+FqpWvn+mAZIW9NnvQKv/PKrOoDSw3rmmaWJvlyq3ezCTMJE2HU7YyG8wXso0jmSM1dw0eW2YFd1djr1pE2niflC/eZ2ndILD+/OKFM0MK68BcDRqkNyCewCyMWppNnf4kFps2L4hyUWtn4RSicNZ3FDBJbwVNZWA2JJhup7MvTmVTAxnbYv8IOfIFqEFoLqmCIq8+rhX8= 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)(376002)(396003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(5660300002)(38350700005)(2906002)(6512007)(6506007)(107886003)(2616005)(1076003)(6666004)(52116002)(36756003)(478600001)(6486002)(38100700002)(83380400001)(26005)(8936002)(8676002)(4326008)(86362001)(6916009)(66476007)(66556008)(54906003)(316002)(66946007)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NxWD3CqYLVq7zNfKWiQ5Ls1YRskNKvt0q+8xk63JdWS4YZy4tivBWTN4wmjZ/dasbuWe1yPYx/NDXQYY9Dg0Pk4Dzaa3NlOiltyhrXl/hn31AKzLOJKHKia08DS3sXNF9sRGg/u6yi0HdVW/MluDmKAzmrpE8xmdVBFBQtD0Ubai7iCO0kRhhOZ+OxbMNQXnkjhoPEY6bXCyiTB7MehK8K2HHacRd+/Ha4NOqaXysOOH911U4cC+MQdeF9R5dizgOmR1Tskp50vpW6aK9Ae5g3r/DC+7YDo8OrQVXco1l5m6Bt49bVT+80rrRRbbOtZylhB//OS3nTjFACIMVxH8qKU+sU69wKAxt9c1Ll9JZEQUzJ4JaqD+IAvoDNVpjoBHbHUKqWUdSjHQAbqteManqAAOqdk4kW5OF2zgx5xPnedczFTj2vT8TpwJ6AfOEJx596uzbwgTEzSdtnsjmu8indux7AJi0Ae+YdVf9S2ULNBamLFBC4PlExrUXcPAxgC+Yukb1wzpfjI5kMXqUiGEPCXxqU0za1FXJJssdQGUO9UCQcqRUshWlwrQXoB3jmMiVKnl7QDom/vga8TxXCXXaiI3QLTxtPWGtnAhferjMd5wyjGVkTU+YmiEDTShlJj+wIMzUANyjeuC2ofG0rWr0bYuMhJXKm4Lo23mY/Da5SAW6g1RJq3y5OiZW7nvevgDs6jWk3IrBTWLNcA2G78mSLqYTS3KkQNhMVYhx/jiwImaTzo2cjwuMGDDiSiWo6uuixCz/Loo46qT2+EnZzR75a6dU0LizLcV3LEvxj4G3vTicxle+gFdlhXu8GYs1nbCVbEP+DXRJToRNAs1ofN0BrtWkYDEk9nTtMM8ROK5JkPqvLnNXHUuoPglerWYYOHYGpyxXYUsFBCutDkIs1UjFnLty7ZSwwJa1qHEXqHNF8N96a4Wo4g08wcU8W52uWoCu5zCAYL3ajdddmg/6JKOXPIj98seTez0nmll5m+cqB2VfkwD9/l31f11l2NC7VOTbEi8Mst5i9bJu6OAkBlOor/sYuc5nihBbUc/kR1he3vEQ8dbq5/gIoqguv3oAi6tbPBP6pK16xlABIGQA75IKb2B5MfSe9PkPVG8zUBcVuEEgj8OaizwsgHexYTnfs2ML36xvdj1i0VNycQt3c6rXzOm5SM8/4yjDb0Kc/IMnzJb7aSMkGaVQwRRgEZX1XX2B9GkqdQbR1VBaaUVREAzvwBRExUQtxdmalKsJMpH3PFPQa5zFqNQ5pPuKB+2TkswDN+BUjwLvf3Ho4HxaPBuVRgwKOkCD6PfxRE4iNsF8UqLtDpkf/ggikX/UvusVmnI2wZYu4opQ5GgjYqofsO0iUIqc4auTYhFhCkfi2ANN6tgydAxjNT3xAUaPoSwEvBHswPqTltdLQVo8Oyrrm0H6SPJ/jiGnSJ2KYk5xZRHIwWpYptr5/sRx2ThusSFN6szA9tNXKzxiS5hSgYaghfAKkX06eyMopRn0tpctyCG9AkYtSvP0cVCZ7JQws5g1wLIrHi71sh3GXu6g/tLkq10HVqx6TJ1gwaJU7ybo4hTnwp+Y4CdTx6KOyDnkcfghUK6xEtxGz17dSeSWEQZtAOJ1A== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7bf0f340-242a-4f2d-ea83-08dbf9f69611 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 03:09:28.0665 (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: Bz6Nlk8g4fyumoc/F62vm3kf88pPGqL7PPvoLc9PRMKEjjecRaGi1rd0WchGb1vJjWufA8P06t3hi1NamSCoFhKFQPuqz/VVqX5MV4tGwVk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5666 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: Zerun Fu Add support for querying FEC capabilities from the device. This feature only shows the current port speed and the supported FEC modes at that speed. Signed-off-by: Zerun Fu Reviewed-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- doc/guides/nics/features/nfp.ini | 1 + drivers/net/nfp/nfp_ethdev.c | 1 + drivers/net/nfp/nfp_net_common.c | 45 ++++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_common.h | 3 +++ 4 files changed, 50 insertions(+) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index df1d403c6e..3494111f86 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -19,6 +19,7 @@ RSS reta update = Y Flow control = Y VLAN offload = Y QinQ offload = Y +FEC = Y L3 checksum offload = Y L4 checksum offload = Y Basic stats = Y diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 54d018870d..3c24ebeaf3 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -759,6 +759,7 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = { .flow_ctrl_get = nfp_net_flow_ctrl_get, .flow_ctrl_set = nfp_net_flow_ctrl_set, .flow_ops_get = nfp_net_flow_ops_get, + .fec_get_capability = nfp_net_fec_get_capability, }; static inline void diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 1658cc7d3c..5aa85aa077 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -26,6 +26,9 @@ #define NFP_ETH_OVERHEAD \ (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + RTE_VLAN_HLEN * 2) +/* Only show FEC capability supported by the current speed. */ +#define NFP_FEC_CAPA_ENTRY_NUM 1 + enum nfp_xstat_group { NFP_XSTAT_GROUP_NET, NFP_XSTAT_GROUP_MAC @@ -2281,3 +2284,45 @@ nfp_net_flow_ctrl_set(struct rte_eth_dev *dev, return 0; } + +int +nfp_net_fec_get_capability(struct rte_eth_dev *dev, + struct rte_eth_fec_capa *speed_fec_capa, + __rte_unused unsigned int num) +{ + uint16_t speed; + struct nfp_net_hw *hw; + uint32_t supported_fec; + struct nfp_eth_table *nfp_eth_table; + struct nfp_eth_table_port *eth_port; + + hw = nfp_net_get_hw(dev); + if (hw->pf_dev == NULL) + return -EINVAL; + + nfp_eth_table = hw->pf_dev->nfp_eth_table; + eth_port = &nfp_eth_table->ports[hw->idx]; + + speed = eth_port->speed; + supported_fec = nfp_eth_supported_fec_modes(eth_port); + if (speed == 0 || supported_fec == 0) { + PMD_DRV_LOG(ERR, "FEC modes supported or Speed is invalid."); + return -EINVAL; + } + + if (speed_fec_capa == NULL) + return NFP_FEC_CAPA_ENTRY_NUM; + + speed_fec_capa->speed = speed; + + if ((supported_fec & NFP_FEC_AUTO) != 0) + speed_fec_capa->capa |= RTE_ETH_FEC_MODE_CAPA_MASK(AUTO); + if ((supported_fec & NFP_FEC_BASER) != 0) + speed_fec_capa->capa |= RTE_ETH_FEC_MODE_CAPA_MASK(BASER); + if ((supported_fec & NFP_FEC_REED_SOLOMON) != 0) + speed_fec_capa->capa |= RTE_ETH_FEC_MODE_CAPA_MASK(RS); + if ((supported_fec & NFP_FEC_DISABLED) != 0) + speed_fec_capa->capa |= RTE_ETH_FEC_MODE_CAPA_MASK(NOFEC); + + return NFP_FEC_CAPA_ENTRY_NUM; +} diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index aec3c51bdf..f0fe10b6cd 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -288,6 +288,9 @@ int nfp_net_flow_ctrl_get(struct rte_eth_dev *dev, int nfp_net_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf); void nfp_pf_uninit(struct nfp_pf_dev *pf_dev); +int nfp_net_fec_get_capability(struct rte_eth_dev *dev, + struct rte_eth_fec_capa *speed_fec_capa, + unsigned int num); #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\ ((struct nfp_app_fw_nic *)app_fw_priv) From patchwork Mon Dec 11 03:08:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 135000 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 B99AA436C3; Mon, 11 Dec 2023 04:10:07 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C8D9640E72; Mon, 11 Dec 2023 04:09:32 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2107.outbound.protection.outlook.com [40.107.243.107]) by mails.dpdk.org (Postfix) with ESMTP id 75F1740DF5 for ; Mon, 11 Dec 2023 04:09:31 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GLrljwCzNTzK9eR/dHGkRNn55fxfpPQv1TF/xOvUzz8FKs0mGmePZYAm/Gk3DTTjpqidiHhtMA/IY0JP31EqIws4Aa0KTTcBMNFqB0W/XkdUEYx/hDoevBT86LiqKEPEQl7lECbuCPaVjG3RiQ6cwD5JPC+FUKp9iQkCAWJ8RQpvtmFmjlQFTwRvp+DJjXFJF55yUq14kDXMK6wbbugPt8I75x9MQHg+w64+aB3MWE2g6iT8Gdz5Uuqcv6l3PWk5KlBul7UwO9SBDKbbudu3aWKafbUYor40W8QuYJ4yIeY9Cf4+Nw4aIgduSUHh/RUJe8HJfFLqrogIzfMSt2tZeA== 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=GVr+m0rRmcnq1sRZ5RSUiEQk2XXGzGH4cVUjhazlK5s=; b=VitblirPLtH+6Yow4mxe+zN6a1lIOiVgz1EwpmxXX45nqbYYTNFex4mAXZbwxtcp4+QJdC2LRGDuvFZ0pxZwFJSDnvOBTjOoq+2dgjhQAULBY3pEvnYCaMueMuA34AF7fH3p+iE+xpfmHoEusIWciQHqmWK+FN2SjvmEanqIAV/xFYMMNXSAqAj4O3IWnNhyUFIpznA008hS9+mA6ZGewAr8qALzyvtomtd/R22lvWBT9wN4GAFBOCyNxecr+yh2PQPU6ALsGKwi3lmkXDRwD1iQ16UKxfCae8CHmh6+wCSo7PjdHgTbvU8DOf6lx2RHNmMjRI6+S4zJSqFnsf8suQ== 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=GVr+m0rRmcnq1sRZ5RSUiEQk2XXGzGH4cVUjhazlK5s=; b=BgznhzPUvZ/C1D0Sa5XPfBvQbLUTr3gDTGvzFl32Afa3ipN/M3F3p7SEhtV8MuPlaEanHG2E2Ru6R8OJaG1/h5S4wYsLHrDkRX3ig9oCY6Y9wMe3DB+Rwd6MC3pXvAsTqIcOd4rmQEh6AxXdbxFcQPINNK0EEt+YgCJAPmgPNmg= 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 PH0PR13MB5666.namprd13.prod.outlook.com (2603:10b6:510:111::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 03:09:30 +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.7068.031; Mon, 11 Dec 2023 03:09:30 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Zerun Fu , Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH 6/7] net/nfp: support getting FEC mode Date: Mon, 11 Dec 2023 11:08:57 +0800 Message-Id: <20231211030858.1693240-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231211030858.1693240-1-chaoyong.he@corigine.com> References: <20231211030858.1693240-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0166.namprd13.prod.outlook.com (2603:10b6:a03:2c7::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: 555ff4ae-2986-4893-b564-08dbf9f69740 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1FToRxyQyVliSyJCHGQP0AjF/Sg8YEKrrI7cA0qf6sD7czNqmSjuiyr2fJqcVrhbaqxB4Rd3sajst3t4/taltI/97zoJwky7o4MadcsDkPya4FcMxNkCDrSM/ySlpGUEALAc/nZNe1rR9p9aUdHYKb6U7BWYxUkF8bUGhc/IlZuF4SII/G09o/vppxUPDHqxYuJEMHpYenzN3+3CGPlkPVuCeAcpqXFjeWGyyxhhph0m3QlpSAKKiCkEiUm+DgQpKjOcPMP2YoglnkgwjUJ6imxMO359zCax0sWbb8JfyzY5SmMQRMtdm40bTMW75jld6ZMYBBTPurdnjLYq960FRXd3zeOaDMaq2LSKOtr5/MFyCPa76R6Q6qTlWUGmgqV+LMue3TFWsK6Q8mmesUTRW5v4s80HMGqkOkn5M+9d89d4RmUXnyFsP4DKEtlJ4OXzCmG5SGgPh+Aduru7CCBTw5ZWJL6/Ey9Qb8vXkLlxO3m0kbI91kR3K0fpp+byYAbIqw37p4glauQtea/TO+aVFNkBmm6VD/aooIQYCd6cAam9helvXGxobzea21NPEYa/n5+HsVVkuN5X2GhvmJNjUwdzAATyaqLFFo7qeODokOVi7igomTJ00wn31X63HErCvZEaeDXHXN7POpDGkYNklvGrw4aef4iCg6eXpwTPVXg= 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)(376002)(396003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(5660300002)(38350700005)(2906002)(6512007)(6506007)(107886003)(2616005)(1076003)(6666004)(52116002)(36756003)(478600001)(6486002)(38100700002)(83380400001)(26005)(8936002)(8676002)(4326008)(86362001)(6916009)(66476007)(66556008)(54906003)(316002)(66946007)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: v3cIk7TAXTAaNNqz3AOemqvuED+GSaFo/GuW0W8GdolmkqpcAdvuKvW9r5xbm1wzvvdE3gDX4/AZSJv0er6eWQMz7+A1/aiTEd+tFePpsrj7qb5bW0H4ETM3T4FQgrIgjTxsG58gVws9yKIjNgh8uBRuoylYQnvqikAVkPdZ6wETG1hIT8n2TCvpzDHhFV37RFR0CIeREMZvlbKfs3EDMyc49mcbZhshBDjFDqs++jQWaWZtQMvggdrODmECxIbyuqyKAArAfwtkL+za45f350dpoZX56CAwB2HC7Qu1MJv2nfv6lj18IYGtM3/96Lu2/WD75n47X2CX+z3EtjbOrhkDQIYcxZpj/QecI+R/cCecpBww/KeKCaokETF/Mt5VuzbmG8rvidW/27rFqSamrmrnDAhr5jU18lEKmYy6s1mP1VmRzYqQImEUsXvATRMKOggmIwyEOTmoEZgqdRoG50WlYrOgfh4X0ir+C5IDmsc3C/DpwLWcVEvDRFt1GnJ04LP+wqJSS5q9c3/aTeBevwrMaP1+LmyfMtWMTOTBkgOAfpZmwbm+/5BlUKHD/hCfTPH8IWrAPAAJnT3G5Qe/aSd2dcwF5VDsG1IWnDmMkgCyIdlpIwvX1jeHCqubugpPJqOTf2aT6puKJOQbLBW5BJ+WlJD8E6w6zpCCIui95OoCeBEKMAj9wCFAQUyeRhPFWLAdcKxXnm8EKahMnPMGWhTs4ffrA83r4ayyO7+jpYVOLCJ4uTlZDc3rBjoidK/ujN5s9cxWxaBtJAdggeSC3Ajf3pPZfLFN7Gmu0PJEg1O4yyeVXjDg8cCD95D/CxF8cPF98LkSe2vwVibNe7lHQil+xhv7I8LEkvp5K0CBRHmhqTzeqdVj0szKZ9QiXhMQQCd+O5GeuwrGzSlCIJ6RUhmmIna7Lyatk0w2cItBije+aXLUcm7bllu9G1dxSOt2NjBh/4fQUSvS1AglG3PUZgPtB15/oiL6Qjcuf7RcCSYRj408e4twNgMK8vAieVb0zVuFdVuXgLt6vRBcJFtRA5RjeyySiL/7aUS4iB61TQYrky7p88sB8alguN2jDRcWUOaQ7iypxSCmp9AazgS3qRfvOi7d8wbQkzVgKSQLAuvYMrzgyb/B2hkoH9P+XbzWmxERN+RsNEmK8hTx5Th6WiBbK2wLbF86QRsocrW2lRGR4QFZojQy9YDiBHSGxfejgkzOA9GLuVBh06kfpKGkaccCd72uuBC/BKkhB8Mz/lBFjDgMTWd6rUWQK1QNWVNEEyMzf9QSotuXKp91UaERTMbYd64i5RWG/jok6lD2r44sf5dWIfuvYPCgtvGcs72hGUYSx0V0/bSnvedcM5FOY6yLiK5Eg/0tc7vBJC9a1yswA8wuE51IXYtQqI6D9t/5vuTlFG8cFjOJus6ajbyRtqm7FP5O5RwxCY1F34W3cyX2QTXuPO6QHpOnq0GPbiwQw3ErT1V8WTOrZCByhjmw6SxyWsu5GNRf/Rp+U0qJ6XXsFiqcZHdVewjbcjUf1QsZ/62Ey96cBaODz00S4gRTZZ124MC9P+mFDgbvbkiItkE2ER+eUF9SX+FHClzPF/Jc+TlK7luOOHiNKlytH6N3nw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 555ff4ae-2986-4893-b564-08dbf9f69740 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 03:09:30.0742 (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: beRnxIywS2l7z16yQV1njU702qIDd90skv4leFSjl1NKV8kMOKXtlPjkYFKAP5dZosdcPTMuChLjP7q33PwIJwpX96w8WX9BOWghZMpJiH0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5666 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: Zerun Fu Add support for querying current FEC mode from the device. Signed-off-by: Zerun Fu Reviewed-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- drivers/net/nfp/nfp_ethdev.c | 1 + drivers/net/nfp/nfp_net_common.c | 60 ++++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_common.h | 2 ++ 3 files changed, 63 insertions(+) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 3c24ebeaf3..e3f5fe7917 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -760,6 +760,7 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = { .flow_ctrl_set = nfp_net_flow_ctrl_set, .flow_ops_get = nfp_net_flow_ops_get, .fec_get_capability = nfp_net_fec_get_capability, + .fec_get = nfp_net_fec_get, }; static inline void diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 5aa85aa077..063c048675 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -2326,3 +2326,63 @@ nfp_net_fec_get_capability(struct rte_eth_dev *dev, return NFP_FEC_CAPA_ENTRY_NUM; } + +static uint32_t +nfp_net_fec_nfp_to_rte(enum nfp_eth_fec fec) +{ + switch (fec) { + case NFP_FEC_AUTO_BIT: + return RTE_ETH_FEC_MODE_CAPA_MASK(AUTO); + case NFP_FEC_BASER_BIT: + return RTE_ETH_FEC_MODE_CAPA_MASK(BASER); + case NFP_FEC_REED_SOLOMON_BIT: + return RTE_ETH_FEC_MODE_CAPA_MASK(RS); + case NFP_FEC_DISABLED_BIT: + return RTE_ETH_FEC_MODE_CAPA_MASK(NOFEC); + default: + PMD_DRV_LOG(ERR, "FEC mode is invalid."); + return 0; + } +} + +int +nfp_net_fec_get(struct rte_eth_dev *dev, + uint32_t *fec_capa) +{ + struct nfp_net_hw *hw; + struct nfp_eth_table *nfp_eth_table; + struct nfp_eth_table_port *eth_port; + + hw = nfp_net_get_hw(dev); + if (hw->pf_dev == NULL) + return -EINVAL; + + if (dev->data->dev_link.link_status == RTE_ETH_LINK_DOWN) { + nfp_eth_table = nfp_eth_read_ports(hw->cpp); + hw->pf_dev->nfp_eth_table->ports[hw->idx] = nfp_eth_table->ports[hw->idx]; + free(nfp_eth_table); + } + + nfp_eth_table = hw->pf_dev->nfp_eth_table; + eth_port = &nfp_eth_table->ports[hw->idx]; + + if (!nfp_eth_can_support_fec(eth_port)) { + PMD_DRV_LOG(ERR, "NFP can not support FEC."); + return -ENOTSUP; + } + + /* + * If link is down and AUTO is enabled, AUTO is returned, otherwise, + * configured FEC mode is returned. + * If link is up, current FEC mode is returned. + */ + if (dev->data->dev_link.link_status == RTE_ETH_LINK_DOWN) + *fec_capa = nfp_net_fec_nfp_to_rte(eth_port->fec); + else + *fec_capa = nfp_net_fec_nfp_to_rte(eth_port->act_fec); + + if (*fec_capa == 0) + return -EINVAL; + + return 0; +} diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index f0fe10b6cd..fa88323b7c 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -291,6 +291,8 @@ void nfp_pf_uninit(struct nfp_pf_dev *pf_dev); int nfp_net_fec_get_capability(struct rte_eth_dev *dev, struct rte_eth_fec_capa *speed_fec_capa, unsigned int num); +int nfp_net_fec_get(struct rte_eth_dev *dev, + uint32_t *fec_capa); #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\ ((struct nfp_app_fw_nic *)app_fw_priv) From patchwork Mon Dec 11 03:08:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 135001 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 731D4436C3; Mon, 11 Dec 2023 04:10:15 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7041440DDC; Mon, 11 Dec 2023 04:09:35 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2121.outbound.protection.outlook.com [40.107.243.121]) by mails.dpdk.org (Postfix) with ESMTP id 168E940ED6 for ; Mon, 11 Dec 2023 04:09:34 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d1i28rRjjONy6/AsgnBJPmur330WXU/QSeFJaw3x3/3FYrtdFIRyXuHMCs6Add+ds7WsMeNMMj2RgpAB1+Id+AHegPNwTCVX0bU2HqcRN2LM7WuGVQ+a9mLwlatDbmtTIVuzqjCIKvjoGoTjDRuBV12QjJUrN8OscZQijJBDNQA+ntd67uSLdzTS/KTrBDDFAT7WlkN4FTh1m6ucaIzXpFENVkvI7iXERJF1q9rsQtMnVltuFYWB7K34Awye98xp3S9QVKiPX7LPYJ+OCqV+LKE+3SwFl2PN1zOxk8AA07MCsSB5QVBSc5FQJoEmjpF8Ab0MKIUWF/NWOgPMVNnvdQ== 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=4vyYa9CPVUFqreQcSqYSWne72DOFdKjUtYvkCAxcGew=; b=B492+XuC5gIsFnAYzEyFXkiphRDjoS7tgYSPS5SZditJoHdJtAeHH6YRmPA7yH03FA2F1cuMRvjmyWOs+hNnNbioxCOrctKRdvYpzlWw1o2R+34DdsFYZt8Cew85ukdp2R8NevEdm6Vt3dCrrju1zKeMkJ/CZ10oN103UeXFriyyKZ6xbHLwnBqBC+pOq+2GraPVvwLXA564IGvWZXYQNeyc/HvhUh8TqtuO+Eu/4olwBed+tQjTrubt6Juo5zbQ2kQ9Z2MQ9fywukk4aXFNvTNPEvnAI/IQZW3SInS5j6M/MRaHBOWfInP2BEG7htwgmBTPLzqOVp0bBPoxMJYJTA== 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=4vyYa9CPVUFqreQcSqYSWne72DOFdKjUtYvkCAxcGew=; b=rc+DnJ5bNthqg6MWnavSVSHFFeWyiMHGDIY4C5dDoqYGB+yeDYWOIrXAJWJPFcIIiicRAOa2lYbVF//1Kv6yxoYGRxkXXyj8PALrpSUvP6+wG9/Ri3J69idwydxvypTMkZxfaVhmj/hg/HdhBhWsswy2hKT4NAzmhW7wnGantkM= 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 PH0PR13MB5666.namprd13.prod.outlook.com (2603:10b6:510:111::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 03:09:32 +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.7068.031; Mon, 11 Dec 2023 03:09:32 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Zerun Fu , Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH 7/7] net/nfp: support setting FEC mode Date: Mon, 11 Dec 2023 11:08:58 +0800 Message-Id: <20231211030858.1693240-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231211030858.1693240-1-chaoyong.he@corigine.com> References: <20231211030858.1693240-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0166.namprd13.prod.outlook.com (2603:10b6:a03:2c7::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: ee4aaaa5-f7b4-4d97-8005-08dbf9f6986f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nRhMiWL0c2KgCD9GolhOhTlwz3qQGU0A22ZOjRig62XSY67pT1EkDdXaEoBsaWxro6v77tA+DkEXOUY5L0J/iVPt/ISEjBsc5ceDldg6fotJMA3xFgXzBtkfhvaeOnuNA4MKJfNTHa6fGxtvJ+cMEii/kGRh24jVgIfIppt1tMOdrPkHGJDkXrs9lLpX6thJ0DiiHZMLuJFpLzHSdz9cKA6L2QAwM9q6fLD/ihpVScvDAycqAiXtiKrb/xRM3Q6wPu2MBN/QpabDkGsi47qBf05DABlc1AlC4oXih6o//up4u00jewJ3BFHvjLfHRBAijE6WqNtowcGUFX/BSutN4pklKMWqtZjnsasRqQnHDUuy3Y0UNAFRAh6oM3vJ8P1i8OTmS07be7KvIedGRVH1ObxZV1xBbIzBqk7M10/plbOObhMABdTq2yHEqkH88eJqV1LUEti5u6fK2xqskmptmrlPFTBilHU5rBJNaPBIBxK9d61CyR5+9ti149etsXHzi6IgVgQXBu2Z73+4HvSbwvemseLJZQWXwT0tXqW5+QW3Lh9jznBYgX2FPCdUYMnRfvCfoUTEtadLSSvAMuUXbuVbiPHFAvTG7bigX935ZZd4xVNL6RojUf/eVikVFDFj9ACAwI9pnNRHwrypaRTse0q6av5yd3jgnTWYHe9D/+w= 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)(376002)(396003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(5660300002)(38350700005)(2906002)(6512007)(6506007)(107886003)(2616005)(1076003)(6666004)(52116002)(36756003)(478600001)(6486002)(38100700002)(83380400001)(26005)(8936002)(8676002)(4326008)(86362001)(6916009)(66476007)(66556008)(54906003)(316002)(66946007)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pqNtHy/TJvWwWbim+1OXy+VbZrrm4zl2YmO9NiPYp9+VKk7m6uuUe5bdWx7Z2nbRnFUJ+e71odRo6wTZdEvPi2zBXnT6OKi9u6K9jJfCBAMyHaPdnZDcwB8wwogyEf4H8Lr8aSowxlt562ssCn6NlXf3WxOb+b9iDKZFGRv1zx9COE2A6C72IHvpspRXyhZOXLxazuxI2vFbs0b1LvMMy8I8DdqbAp/ZIHb+OdipW6Wt4BVX0wOkH4cagG7th8nW4pgijsOY4sXkQvZTJ/EILY985yQ3zUcpbW76QH3awcnrIg6ihG4qdoJn5SaLleJciOt0Z98+onxv+BKnFhuWma133B1eqRRh/FT1a7GFxdKc8vE52szNIfRg5NDTpHDEKfiA27oQUzunilhUAu2WIrAAUBdDO5AndyviVIRZQqpMlY5SstmEE22QfKfxKOXHT55nTAKsL+O++fGrivlfFyQJwBmAWX3Hx4wvzh16WJVVLjlzAyuzh/kKVskr9qDBHNRHpXbJgk+1p9eEba5yPOLeacOShkEZGsyXKURkZztt9qfvKchpR8B3QhY0SSQED3NUjZO5CN0aHZUTRdh5Ol/3R5Ibr/ckfE77gHkiYKj2BKIwkyPN6SJYBOqY4M+j0CxsGGzW0DU4sVPvLNoTRgXJetbk4tbsPCefidqSSJL/4+sEzrpbfDfOJ0JolxAi1LuRipU+0nonwZQsYkmXfNpgxwzgDDBmZTTaUQws3f/2oyX7pFkXw8ufGdPBS7vLlYdxpBMEfEZsG6oqcwaEmtH7yOmWS9eRiaZFz+VejJTa+iiQ8BfxpWNdaIlk6CHemEW67GAuzhmrO+dZEuxtbuFT/xVi83K5xohUi9x5sfWyL+EN+QkItfwU707KCjMmE3shfj8Voz0ksimwUaAq3G/h09iRqTCSCuhlds2NiJXUWaCVDLT1igRX2V8VZwdEInttvk7V5ejQmC38cmfD1cBTvnpwmE4Mj8y7YkJaqKddmYz8dzDo2pF8yQ3iNmnvO7gaEXfePaA4Wwod4t72pSMiA0WZt0fB5wYj0ocpz/WnaOTfrxCYA9LGIlX1t0nKaFJlHuyhuVCt1QI8xo7pU67Wtju9Dp0oWKbQLjx4cqueOw8agHqSPmUF/3dNU3mfmVLl4V00ZNkVPqueRqV00bzyPB/ISD1gfNpeZik92yPcFStAaDm3ALTFXUL9bzcUypurcSJucXzTcjGyQHpvXO8F39mWk5irnBY0ijHqjVxXpjpqTLr88TROLjY4XDIS5e4M9ibuPtgHkRgAguflwbA9A8eySMEzBLJRk6v4TvvmlW2mfXl7Ir37OZbZ/bInHGKX4UBrDhTjIRx8AkGL2EzMwOwQZ0eQyBsHn3mUR/KmJgUMzQscZg+EJefSFPxUwQ1prRKzHKzYcrLYXxq/+MV3zEheskKENvRbEp51lJVx0k7KksPzyz8Am/wbWyDowMTQL+QyAKdTxNiQOqqPpEabVZ+f7TaTKzf51eUfJzh7IDuQv8Wp7gSGMx+hm/PguDUYurqk2Zy3qqgrIdMaIBSSMlP4S4cov4RCHjd+c9NFbuiKdURMforMQWgNesRXv/aA0HpieZjHsS+wjcE6FQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee4aaaa5-f7b4-4d97-8005-08dbf9f6986f X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 03:09:32.0395 (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: 4V6R81CnSE0rg4vBmT+57wKWhPAWXMLq1+3NTidhWNHRHywDeDDJ4HyRIVHHbuTOwRtrZUzjYXGbm1Y/I8OFuj3t5eCk9YLnD/8jVU61kTo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5666 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: Zerun Fu Add support for configuring FEC mode. This feature allows to set any currently supported FEC mode. Signed-off-by: Zerun Fu Reviewed-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- drivers/net/nfp/nfp_ethdev.c | 1 + drivers/net/nfp/nfp_net_common.c | 54 +++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_common.h | 2 ++ drivers/net/nfp/nfpcore/nfp_nsp.h | 1 + 4 files changed, 58 insertions(+) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index e3f5fe7917..185b570892 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -761,6 +761,7 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = { .flow_ops_get = nfp_net_flow_ops_get, .fec_get_capability = nfp_net_fec_get_capability, .fec_get = nfp_net_fec_get, + .fec_set = nfp_net_fec_set, }; static inline void diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 063c048675..eeb0aaae26 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -2386,3 +2386,57 @@ nfp_net_fec_get(struct rte_eth_dev *dev, return 0; } + +static enum nfp_eth_fec +nfp_net_fec_rte_to_nfp(uint32_t fec) +{ + switch (fec) { + case RTE_BIT32(RTE_ETH_FEC_AUTO): + return NFP_FEC_AUTO_BIT; + case RTE_BIT32(RTE_ETH_FEC_NOFEC): + return NFP_FEC_DISABLED_BIT; + case RTE_BIT32(RTE_ETH_FEC_RS): + return NFP_FEC_REED_SOLOMON_BIT; + case RTE_BIT32(RTE_ETH_FEC_BASER): + return NFP_FEC_BASER_BIT; + default: + return NFP_FEC_INVALID_BIT; + } +} + +int +nfp_net_fec_set(struct rte_eth_dev *dev, + uint32_t fec_capa) +{ + enum nfp_eth_fec fec; + struct nfp_net_hw *hw; + uint32_t supported_fec; + struct nfp_eth_table *nfp_eth_table; + struct nfp_eth_table_port *eth_port; + + hw = nfp_net_get_hw(dev); + if (hw->pf_dev == NULL) + return -EINVAL; + + nfp_eth_table = hw->pf_dev->nfp_eth_table; + eth_port = &nfp_eth_table->ports[hw->idx]; + + supported_fec = nfp_eth_supported_fec_modes(eth_port); + if (supported_fec == 0) { + PMD_DRV_LOG(ERR, "NFP can not support FEC."); + return -ENOTSUP; + } + + fec = nfp_net_fec_rte_to_nfp(fec_capa); + if (fec == NFP_FEC_INVALID_BIT) { + PMD_DRV_LOG(ERR, "FEC modes is invalid."); + return -EINVAL; + } + + if ((RTE_BIT32(fec) & supported_fec) == 0) { + PMD_DRV_LOG(ERR, "Unsupported FEC mode is set."); + return -EIO; + } + + return nfp_eth_set_fec(hw->cpp, eth_port->index, fec); +} diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index fa88323b7c..66c900e3b8 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -293,6 +293,8 @@ int nfp_net_fec_get_capability(struct rte_eth_dev *dev, unsigned int num); int nfp_net_fec_get(struct rte_eth_dev *dev, uint32_t *fec_capa); +int nfp_net_fec_set(struct rte_eth_dev *dev, + uint32_t fec_capa); #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\ ((struct nfp_app_fw_nic *)app_fw_priv) diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.h b/drivers/net/nfp/nfpcore/nfp_nsp.h index 41e8402154..2ce05c2ec9 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.h +++ b/drivers/net/nfp/nfpcore/nfp_nsp.h @@ -100,6 +100,7 @@ enum nfp_eth_fec { NFP_FEC_BASER_BIT, NFP_FEC_REED_SOLOMON_BIT, NFP_FEC_DISABLED_BIT, + NFP_FEC_INVALID_BIT, }; #define NFP_FEC_AUTO RTE_BIT32(NFP_FEC_AUTO_BIT)