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__ */