From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C610442B6F; Mon, 22 May 2023 13:40:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 865F742D3B; Mon, 22 May 2023 13:40:42 +0200 (CEST) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2115.outbound.protection.outlook.com [40.107.102.115]) by mails.dpdk.org (Postfix) with ESMTP id 6965C42D3B for ; Mon, 22 May 2023 13:40:40 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jjRCmBfCVFUQbI0VV7y61fvGfx/b8zuQZR217HEDMBxnDOYvIy7namNhkW8uE6yjUZMHuJQrN5ruDzN5U/lBuVh1FnvQMufTVrKvv7S1cgznApjU4wgTR7q2Pc9KjAvVUqTMgaI73mF+cDeO74YAoAhFheqOe7PIAU7Fh2z3vTZR2kzmw/RJ+ntLUhmatpxgH01/cdRcJ8U5Is9PHJxZtpIYetx3yuzlra88w8MfnAQCKZM+RjaqQtSkcMA7tVedGg94Tcl9LB/kxm5+xpoAjlBYi19MlA5C43PGDpPktQhauP2W8UHy7BebjlQWVm/l+qwmzcGjdRaIndTrzVDB0g== 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=ttktKr0MJfw7bD/rPRIhzHlxMvCDycuF0Teu2YtNYbk=; b=mZHPMr6ndDfOr2uTqrdzp6+4N3VYBed+FCuT5q2rEsOaeOmobcOaMJtxHbgDtmfgNPLzjWLDgZlrD+I9WZLzOccuNbxwYYVjpXPZipTVtl+alxiIXElWxPJH1B7laU8zOOQhsO5r9OOX1FXo1QmumdbMpL86PlAYrtcF7cKAKVF4hvto9ypwMKl2Hjf9D7l6R4cDRXm2n1y6O2ChztZ+GjF0JjYYUucfWWTRGaJpeL49SaryoBLuQVo6RJuC29eGbu29CRSUf025Nag6BM7TNHLimQ+/ku2DmEJUw09T27PsGHoW3Xdh+VvRU0Zhup1ZuyvlJ8PVmZrE8d37h3xVHQ== 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=ttktKr0MJfw7bD/rPRIhzHlxMvCDycuF0Teu2YtNYbk=; b=KDTpgPshhPclWblg4hRh30FgwZsdDWs6ofUjXhmtLKtNYsg0kfpBKp9pOEdCAnVVHHOzK0bYBzlv+OUZ3oVn0obr9hkRX05/p9fxB3CWZo4W4O0WOXGDn5M0nXib4LjenSxBOcDv8NyFhNP4EX3h6Mcac80pWdwf6txCXY0+QX0= 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 SN4PR13MB5693.namprd13.prod.outlook.com (2603:10b6:806:1ec::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Mon, 22 May 2023 11:40:37 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::ac2e:52b6:82ec:4994]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::ac2e:52b6:82ec:4994%3]) with mapi id 15.20.6411.028; Mon, 22 May 2023 11:40:36 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH 2/2] net/nfp: add support of showing firmware version Date: Mon, 22 May 2023 19:40:09 +0800 Message-Id: <20230522114009.2099371-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230522114009.2099371-1-chaoyong.he@corigine.com> References: <20230522114009.2099371-1-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SI2PR06CA0005.apcprd06.prod.outlook.com (2603:1096:4:186::12) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SN4PR13MB5693:EE_ X-MS-Office365-Filtering-Correlation-Id: 2f78ba91-1e2e-4f0c-6202-08db5ab95c3a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JXAIQKPRKqbJvJBtXyhsqk/LUi4CIQQiHjPt/huKSWTIxoPgmEP4XDEHrivuhTJjPMZCbC5djdJLjVDHFtvOzBE7atXJIb7MMLmN/oyyuBGttJ3tfpy51e3z3OLsp1Wli9xC9RF6LgeeTszHY52zkk+ZwRf9zbOksSOyrQmNIjRCSkuY69DiRFCTrQXRePyI/Jv+M6PTmeu0yhiDAQTopii7ffLIsQXvTPCH35f7upz4fbfBhlgyds8SL+JcSUXjv2shzah2fx7U3y1Setx72rwz0Pjlnc/zEHfNwxQhQi8NGpegVG+AQAcikV/oGMboApak9DSM9lGKMdrULL523GOzTtuKQOL5sX8NWrGdCM+D+mgsj9hkct1+ZnbRV+lLJzw4cYPB181QOIExSPXXH83yeLkcuDSi5y7bC5BI2tbpp9tGrA7zfRchH5XyQYbQ+HFNCUrP41JkJY7C2oBglGxCJTfFerAOHNjR5K4YohdXBn+qiqua4UDlOpbtfB9RYKm/ZsCA/Kk0G83Jo9BnXhB4/dg0p0kcIaUJbOONNUNZytFMz9RPu0/jpq3m7m46QicPIuWdlo7zw4pCxVhzqQqu/7TcO6JL7YUdDNA1Ia/fHuejbwxh8Jdll/r/tVMFJERMHOFs/5Zb3cI+xEH7ZfYC0dN4V2vl/mEIrrq8go4= 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:(13230028)(4636009)(376002)(366004)(346002)(396003)(39840400004)(136003)(451199021)(38100700002)(38350700002)(478600001)(4326008)(66946007)(66556008)(66476007)(6916009)(66574015)(83380400001)(2616005)(2906002)(6666004)(316002)(186003)(26005)(86362001)(6512007)(6506007)(1076003)(41300700001)(6486002)(5660300002)(44832011)(52116002)(107886003)(8676002)(8936002)(36756003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?b2N2TzJVNDdRTWFZMVJBUjlFU01kSmY4VzFieDZIbFJpemJNMGxIcDNOL3Jt?= =?utf-8?B?Z2FlUkhIaGxhSkV0SUs2Ull2MUlDT0FsOTlQYjRXRWxjSlZydG5MM0M5Y01n?= =?utf-8?B?NjlQSjRzT3F3ajNJODBCY0tXQ2FoNDdaNkFZMTYwTXRHU0E2ZDVIdUQzZWtT?= =?utf-8?B?K1dPTmYyZFZidmswc3ptRUhIOGh2aXJNQVJGZTJDMTJBV3FhQVNHTVU0dElo?= =?utf-8?B?UHRtOFFxbjlrTjE3U1JmQWhUVCttQUREaElNT2R4eTU5V2pOcEhiUnlocmxH?= =?utf-8?B?TlU2enlLcjYyNmo3Z0FQdVZ1ZnR4WC95eFVMTHc4SzdnYWJJR0J3b21HVjY1?= =?utf-8?B?bnZ3MVpJbHdXMGxBL1FmNkhsS1UyQkxuVjAvRW9ldS9KZEtwVGVjZ09jWTcv?= =?utf-8?B?SDhZdmo2bUF5NkRHK3lKSjJTTkFGMi9SZVhsMHoyYnRnUFZvenF2N3dRaEh1?= =?utf-8?B?NzBybVUyY01LQksxRmVwdVlIaEc0aFhEbWZ1dzdLMVVyNjhyTXVLSExyd2d6?= =?utf-8?B?bjJsb2NqYUlMSU83ZkZSRHZQN2JDY04xK0JjM0Z3alE2YlZzUFBWNnVKa05l?= =?utf-8?B?ZWFwZVl5NG5xMlAzZGl1cTdEczJVWVpzT0Jod1NXekcvUDV1aklnUTYyTVRw?= =?utf-8?B?QjhBRmZhUkJTaHp6QkZrem5BVzVsZzFrcWVHQWduNzFqVXFuSEFwY1dtYzZj?= =?utf-8?B?d0NlVWFERUM1eUpIYXlUWURXZHc0a2tRRThmdklvSmdaQUdHYUZrdU93RzBq?= =?utf-8?B?bDFXZUFXVERUeTZpdXBWdDV4M1FYRy9WVDRxSXNsaSsybk5BaWc0UG9DVm1E?= =?utf-8?B?UTMvUDZTeVpHSnQ4bjl4emNVTk1GSkJBalN0L2d4N0VSdE9MeVJGc0IzdTUr?= =?utf-8?B?d0JEN1hMRlRZTEZTMnA3RVY0VnlpYVUzVVVBcGxOT2VmRExvT09qNWFlWjVp?= =?utf-8?B?Wk85VklRcVRXTzROQTU2VzVsWlVwOHNTVjhMakpsbytWbktIZTJIUWhESTNr?= =?utf-8?B?NWtXTXN3dUFKZ2ljVlJ1OVdFNGJzcUFXVmZ6SXk3ZncxUzEydFRVYTIrcXNX?= =?utf-8?B?Nmx0SjYyUFZua3U1ZytvTkRnUVZoWHNIOXF3ODdldWpZQ3BEMXN6N2FydXcx?= =?utf-8?B?TTVOZ3h1NW9DOThHTGRuVEhrMTJ4YUhGTFdLbEZ6LytoR3hmWk5HRUVsMk1m?= =?utf-8?B?UnNSZlAwOXdYL3hKUndmdjQ4cXVqa2s3R2pJUjJMd1RUc05BTzNCbklEODNq?= =?utf-8?B?clI4Z2habUF4WVFGOWkxcDVjbzB0ZjFmckRCNENabVN1bzNFeWFsUzJEUHEv?= =?utf-8?B?TCtId1MyWWQvbXdtdmR1UmIzL3NsVXJ2QkcyM0lwMzM2TVA3S1QvdkVPVE96?= =?utf-8?B?UG5iYmlObWlJdlZpUlVYeFFuUmM3bGhXclBteStObi9Ta3dEWFM3WkJvdzAw?= =?utf-8?B?MG1hcUl4K2dzRTdvZGZzU0R4dGo2V0N0TExoU2UxOTFyeGdiQ1JvWXJTQXJV?= =?utf-8?B?ZGxEUFh4ZWhhRG55Z3pUcUVuUENYZzcvekZXQWJGVk50SGpnaEREMFhFVTdM?= =?utf-8?B?anVyU3NEb3JqVms5SlIxdVBnalRJVytJMXAzYkxrUDlVV1NQekJ1RDF4a2kr?= =?utf-8?B?WkxBb05WSFcwalFuK1Z5azVRaFBCS2o2WkptYk81U1JOVFVMRDRucU52dmw1?= =?utf-8?B?RjlpckZYRjhTQVphSmljVDFCaENtRk1vOTJveHE5NmZoUkpNWHhvTkx1U05S?= =?utf-8?B?WnAxbUUvVjZDZFFkeDMyWE81ZHBYVkJEQ1p5T2dZc04zREt1blZZVkd2dHRQ?= =?utf-8?B?MXZvNzNJaWR4VWJwdkRzeHQxeHltTlRkR0ttaFA4RE4rcjl4Ulpvd3ZWWS9M?= =?utf-8?B?a096TFNoak8zYUtUQlA5anlxSGtSOVJWRWRuempkZDNxVjBOWVdhV3dzbUQ4?= =?utf-8?B?NE9wMzR1MW4vQ09iSmQ1MGVFVEJIck1YdGlsV2taWGtpVVJBdGxlVGpPb0px?= =?utf-8?B?d2hMNEIrVWZqUnl0WDIxME9WTlhmR0toWG82TDd0dThFWW9RTm9UM1owRitO?= =?utf-8?B?S1dTMzFpTmFOdVlia3RERWplcW1OcEc4T2pDelJMT1N6aG9WVWlWS0pmdlhv?= =?utf-8?B?dGMwemZSZGZzWStEeENZT2QrVVdITUlqUCtVbDdqNlRkWFZ3amxRc2dac2Fj?= =?utf-8?B?UEE9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f78ba91-1e2e-4f0c-6202-08db5ab95c3a X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 May 2023 11:40:36.8142 (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: ne2WX27QZ6HzUZ0EOLy/qk5h2v/h07F1uCIAIgobWbFNrQ3rp3D+RVz01qKcxYhFml3J+XEpBDBge+beuWDGGnu/eTPjQJ5Np8blq7ewIJM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN4PR13MB5693 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 Add support of showing firmware version. When using the flower firmware, the firmware version output of common port is '0.0.5.5 0.31 AOTC-2.14.A.54 flo', while the firmware version output of representor port is '* 0.31 AOTC-2.14.A.54 flower'. Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- .../net/nfp/flower/nfp_flower_representor.c | 2 + drivers/net/nfp/nfp_common.c | 106 ++++++++++++++++++ drivers/net/nfp/nfp_common.h | 2 + drivers/net/nfp/nfp_ethdev.c | 1 + drivers/net/nfp/nfp_ethdev_vf.c | 1 + 5 files changed, 112 insertions(+) diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index c3764b4de7..607625d204 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -525,6 +525,7 @@ static const struct eth_dev_ops nfp_flower_pf_repr_dev_ops = { .promiscuous_disable = nfp_net_promisc_enable, .mac_addr_set = nfp_flower_repr_mac_addr_set, + .fw_version_get = nfp_repr_firmware_version_get, }; static const struct eth_dev_ops nfp_flower_repr_dev_ops = { @@ -546,6 +547,7 @@ static const struct eth_dev_ops nfp_flower_repr_dev_ops = { .promiscuous_disable = nfp_net_promisc_enable, .mac_addr_set = nfp_flower_repr_mac_addr_set, + .fw_version_get = nfp_repr_firmware_version_get, .flow_ops_get = nfp_net_flow_ops_get, .mtr_ops_get = nfp_net_mtr_ops_get, diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c index a9af215626..88fc50c6d6 100644 --- a/drivers/net/nfp/nfp_common.c +++ b/drivers/net/nfp/nfp_common.c @@ -214,6 +214,9 @@ nfp_net_notify_port_speed(struct rte_eth_dev *dev) nfp_net_link_speed_rte2nfp(eth_table->ports[hw->idx].speed)); } +/* The length of firmware version string */ +#define FW_VER_LEN 32 + static int __nfp_net_reconfig(struct nfp_net_hw *hw, uint32_t update) { @@ -1954,3 +1957,106 @@ nfp_net_cfg_read_version(struct nfp_net_hw *hw) version.whole = nn_cfg_readl(hw, NFP_NET_CFG_VERSION); hw->ver = version.split; } + +static void +nfp_net_get_nsp_info(struct nfp_net_hw *hw, char *nsp_version) +{ + struct nfp_nsp *nsp; + + nsp = nfp_nsp_open(hw->cpp); + if (nsp == NULL) + return; + + snprintf(nsp_version, FW_VER_LEN, "%hu.%hu", + nfp_nsp_get_abi_ver_major(nsp), + nfp_nsp_get_abi_ver_minor(nsp)); + + nfp_nsp_close(nsp); +} + +static void +nfp_net_get_mip_name(struct nfp_net_hw *hw, char *mip_name) +{ + struct nfp_mip *mip; + + mip = nfp_mip_open(hw->cpp); + if (mip == NULL) + return; + + snprintf(mip_name, FW_VER_LEN, "%s", nfp_mip_name(mip)); + + nfp_mip_close(mip); +} + +static void +nfp_net_get_app_name(struct nfp_net_hw *hw, char *app_name) +{ + switch (hw->pf_dev->app_fw_id) { + case NFP_APP_FW_CORE_NIC: + snprintf(app_name, FW_VER_LEN, "%s", "nic"); + break; + case NFP_APP_FW_FLOWER_NIC: + snprintf(app_name, FW_VER_LEN, "%s", "flower"); + break; + default: + snprintf(app_name, FW_VER_LEN, "%s", "unknown"); + break; + } +} + +int +nfp_net_firmware_version_get(struct rte_eth_dev *dev, + char *fw_version, + size_t fw_size) +{ + struct nfp_net_hw *hw; + char mip_name[FW_VER_LEN]; + char app_name[FW_VER_LEN]; + char nsp_version[FW_VER_LEN]; + char vnic_version[FW_VER_LEN]; + + if (fw_size < FW_VER_LEN) + return FW_VER_LEN; + + hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private); + + snprintf(vnic_version, FW_VER_LEN, "%d.%d.%d.%d", + hw->ver.extend, hw->ver.class, + hw->ver.major, hw->ver.minor); + + nfp_net_get_nsp_info(hw, nsp_version); + nfp_net_get_mip_name(hw, mip_name); + nfp_net_get_app_name(hw, app_name); + + snprintf(fw_version, FW_VER_LEN, "%s %s %s %s", + vnic_version, nsp_version, mip_name, app_name); + + return 0; +} + +int +nfp_repr_firmware_version_get(struct rte_eth_dev *dev, + char *fw_version, + size_t fw_size) +{ + struct nfp_net_hw *hw; + char mip_name[FW_VER_LEN]; + char app_name[FW_VER_LEN]; + char nsp_version[FW_VER_LEN]; + struct nfp_flower_representor *repr; + + if (fw_size < FW_VER_LEN) + return FW_VER_LEN; + + repr = dev->data->dev_private; + hw = repr->app_fw_flower->pf_hw; + + nfp_net_get_nsp_info(hw, nsp_version); + nfp_net_get_mip_name(hw, mip_name); + nfp_net_get_app_name(hw, app_name); + + snprintf(fw_version, FW_VER_LEN, "* %s %s %s", + nsp_version, mip_name, app_name); + + return 0; +} diff --git a/drivers/net/nfp/nfp_common.h b/drivers/net/nfp/nfp_common.h index 424b18b0ad..4b588b2948 100644 --- a/drivers/net/nfp/nfp_common.h +++ b/drivers/net/nfp/nfp_common.h @@ -473,6 +473,8 @@ int nfp_net_tx_desc_limits(struct nfp_net_hw *hw, int nfp_net_check_dma_mask(struct nfp_net_hw *hw, char *name); void nfp_net_init_metadata_format(struct nfp_net_hw *hw); void nfp_net_cfg_read_version(struct nfp_net_hw *hw); +int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size); +int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size); #define NFP_NET_DEV_PRIVATE_TO_HW(adapter)\ (&((struct nfp_net_adapter *)adapter)->hw) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 0b2dd7801b..10c66cd027 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -461,6 +461,7 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = { .rx_queue_intr_disable = nfp_rx_queue_intr_disable, .udp_tunnel_port_add = nfp_udp_tunnel_port_add, .udp_tunnel_port_del = nfp_udp_tunnel_port_del, + .fw_version_get = nfp_net_firmware_version_get, }; static inline int diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index cf3548e63a..d4357ad115 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -241,6 +241,7 @@ static const struct eth_dev_ops nfp_netvf_eth_dev_ops = { .tx_queue_release = nfp_net_tx_queue_release, .rx_queue_intr_enable = nfp_rx_queue_intr_enable, .rx_queue_intr_disable = nfp_rx_queue_intr_disable, + .fw_version_get = nfp_net_firmware_version_get, }; static inline int -- 2.39.1