get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/127158/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 127158,
    "url": "http://patches.dpdk.org/api/patches/127158/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20230522114009.2099371-3-chaoyong.he@corigine.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230522114009.2099371-3-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230522114009.2099371-3-chaoyong.he@corigine.com",
    "date": "2023-05-22T11:40:09",
    "name": "[2/2] net/nfp: add support of showing firmware version",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "8d07cdb2b155e0bd452e1b6a84b75793ae513703",
    "submitter": {
        "id": 2554,
        "url": "http://patches.dpdk.org/api/people/2554/?format=api",
        "name": "Chaoyong He",
        "email": "chaoyong.he@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20230522114009.2099371-3-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 28108,
            "url": "http://patches.dpdk.org/api/series/28108/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=28108",
            "date": "2023-05-22T11:40:07",
            "name": "add support of showing firmware version",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/28108/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/127158/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/127158/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id C610442B6F;\n\tMon, 22 May 2023 13:40:49 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 865F742D3B;\n\tMon, 22 May 2023 13:40:42 +0200 (CEST)",
            "from NAM04-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam04on2115.outbound.protection.outlook.com [40.107.102.115])\n by mails.dpdk.org (Postfix) with ESMTP id 6965C42D3B\n for <dev@dpdk.org>; Mon, 22 May 2023 13:40:40 +0200 (CEST)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by SN4PR13MB5693.namprd13.prod.outlook.com (2603:10b6:806:1ec::9)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Mon, 22 May\n 2023 11:40:37 +0000",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::ac2e:52b6:82ec:4994]) by SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::ac2e:52b6:82ec:4994%3]) with mapi id 15.20.6411.028; Mon, 22 May 2023\n 11:40:36 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n 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;\n s=arcselector9901;\n 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;\n bh=ttktKr0MJfw7bD/rPRIhzHlxMvCDycuF0Teu2YtNYbk=;\n b=mZHPMr6ndDfOr2uTqrdzp6+4N3VYBed+FCuT5q2rEsOaeOmobcOaMJtxHbgDtmfgNPLzjWLDgZlrD+I9WZLzOccuNbxwYYVjpXPZipTVtl+alxiIXElWxPJH1B7laU8zOOQhsO5r9OOX1FXo1QmumdbMpL86PlAYrtcF7cKAKVF4hvto9ypwMKl2Hjf9D7l6R4cDRXm2n1y6O2ChztZ+GjF0JjYYUucfWWTRGaJpeL49SaryoBLuQVo6RJuC29eGbu29CRSUf025Nag6BM7TNHLimQ+/ku2DmEJUw09T27PsGHoW3Xdh+VvRU0Zhup1ZuyvlJ8PVmZrE8d37h3xVHQ==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com;\n dkim=pass header.d=corigine.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=ttktKr0MJfw7bD/rPRIhzHlxMvCDycuF0Teu2YtNYbk=;\n b=KDTpgPshhPclWblg4hRh30FgwZsdDWs6ofUjXhmtLKtNYsg0kfpBKp9pOEdCAnVVHHOzK0bYBzlv+OUZ3oVn0obr9hkRX05/p9fxB3CWZo4W4O0WOXGDn5M0nXib4LjenSxBOcDv8NyFhNP4EX3h6Mcac80pWdwf6txCXY0+QX0=",
        "Authentication-Results": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=corigine.com;",
        "From": "Chaoyong He <chaoyong.he@corigine.com>",
        "To": "dev@dpdk.org",
        "Cc": "oss-drivers@corigine.com, niklas.soderlund@corigine.com,\n Chaoyong He <chaoyong.he@corigine.com>",
        "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\n (2603:1096:4:186::12) To SJ0PR13MB5545.namprd13.prod.outlook.com\n (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": "\n 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:;\n IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE;\n 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);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?ocvO2U47QMaY1RAR9ESMdJf8W1bx?=\n\t=?utf-8?q?6HlRizbM0lHp3N/rmgaeRHHhlaJEtIK6RYv1ICOAl99Pb4WElcJVrtnL3C9cMg69P?=\n\t=?utf-8?q?J4sOqwj3I80BcKWCah47Z6AY160MtGSA6d5HuD3ekS+WONf2dVbvk0szmEHH8hvir?=\n\t=?utf-8?q?MARFe2C12AWqaASGMU4tIhPtm8Qqn9kN17SRfAhTT+mADDhIMOdxy59WjNpHbRyhr?=\n\t=?utf-8?q?lGNU6zyKr626j7gAPuVuftxX/yxULLw8K7gabIGBwomGV65nvw1ZIlwW0lA/Qf6Hl?=\n\t=?utf-8?q?KU2BLnV0/Eoeu/JdKpTecgOcY7/H8Yvj6mAy6DG+yJJ2SNAF2/ReXl0z2btgPVozq?=\n\t=?utf-8?q?v7wQhHu70rmU2cMKBK1FepuYHhG4hXDmfuw7K1Ur68rMuKHLrwgzn2locjaILIO7f?=\n\t=?utf-8?q?FRDvP7bCcN1+Bc3FwjQ6bVsPPV6uJkNeeapeYy4nq2P3diuq7Ds2UYZsOBhwSWzG/?=\n\t=?utf-8?q?P5ujIgQ62MTpB8AFfaRBShzzBFkznAW5lg1kqeGAgn71jUqnHApcWmc6cwCeUaDEC?=\n\t=?utf-8?q?5yJHayTYDWdw4kkQE8fvIoJgZAGGaFkuOwG0jl1WeAWTDTy6iupVt5x3QXG/VT4qI?=\n\t=?utf-8?q?sli+2nNAig4PoCVmDQ3/P6SyZGJt8n9xzcUNMFJBAjSt/gx7ERtOLyRFsB3u5+wBD?=\n\t=?utf-8?q?7XLFTYLFS2p7EV4VyiaU3UUAplNOefDLoOOj5aeZ5iZO9VIQqTWO4NA56W5lZUp8s?=\n\t=?utf-8?q?SV8LjJlo+VnKHe2HQhDI3k5kWMswuAJgicVRu9WE4bsqAWVfzIy7fw1S12tTUa2+q?=\n\t=?utf-8?q?sW6ltJ62PVnku5g+oNDgQVhXsH9qw87eujYCpD1sz7aruw1M5Ngxu5oC98GLdnTHk?=\n\t=?utf-8?q?12xaHFLWKlFz/+hGxfZNGEEl2MfRsRfP09wX/xJRwfv48qujkk7GjIR2LwTTsNAO3?=\n\t=?utf-8?q?BnID83jrR8ghZmAxYQF9i1p5co0tf1frDB4CZmSuo3EyalS2DPq/L+HwS2Yd/mwmv?=\n\t=?utf-8?q?duRb3/slUrvBG23Ip336MP7KT/vEOTOzPnbbiNmiIvViRUXxQnRc7lhWrPmy+Nn/S?=\n\t=?utf-8?q?kwDXS7ZBow000maqIx+gsE7odfsSDxtj6WCtLLhSe191rxgbCRoYrSArUdlDPXxeh?=\n\t=?utf-8?q?aDnygzTqEnPCXg7/zFWAbFVNtHjghDD0XEU7LjurSsDorjVk9JR1uPgjTIW+I1p3b?=\n\t=?utf-8?q?LkP9UWSPzBuD1xki+ZLAoNVHW0jQn+Vyk5QhPBKj6ZJmbO5SRNTULD4nqNvvl5F9i?=\n\t=?utf-8?q?rFXF8SAZaJicT1BhCmFMo92oxq96fhRJMXxoNLuSNRZp1mE/V6CdQdx32XO5dpXVB?=\n\t=?utf-8?q?DCZyOgYsN3DKunVYVGvttP1vo73IidxUbpvDsxt1xymNTdGKmhP8DN+r9xRZowvVY?=\n\t=?utf-8?q?/LkOzLShjO3aKTBP9jyqHkR9RVEdnzjdd3qV0NYWaWwsmD84Op34u1n/CObJd50eE?=\n\t=?utf-8?q?TBHrMXtilWkZXkiURAtleTjOoJqwhL4B+UfjRytX210OVNXfGKhXo6L7tu8EYoQNo?=\n\t=?utf-8?q?T3Z0F+NKWS31iNaNuYbktDEjeqmNpG8OjCzRLOSzhoVUiVKJfvXotc0zfRdfsY+Dx?=\n\t=?utf-8?q?CYOd+UWHMIjP+Ul7j6TdXVwjlQsgZsacPA=3D=3D?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 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": "\n 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 <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Add support of showing firmware version.\nWhen using the flower firmware, the firmware version\noutput of common port is '0.0.5.5 0.31 AOTC-2.14.A.54 flo',\nwhile the firmware version output of representor port is\n'* 0.31 AOTC-2.14.A.54 flower'.\n\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nReviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>\n---\n .../net/nfp/flower/nfp_flower_representor.c   |   2 +\n drivers/net/nfp/nfp_common.c                  | 106 ++++++++++++++++++\n drivers/net/nfp/nfp_common.h                  |   2 +\n drivers/net/nfp/nfp_ethdev.c                  |   1 +\n drivers/net/nfp/nfp_ethdev_vf.c               |   1 +\n 5 files changed, 112 insertions(+)",
    "diff": "diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c\nindex c3764b4de7..607625d204 100644\n--- a/drivers/net/nfp/flower/nfp_flower_representor.c\n+++ b/drivers/net/nfp/flower/nfp_flower_representor.c\n@@ -525,6 +525,7 @@ static const struct eth_dev_ops nfp_flower_pf_repr_dev_ops = {\n \t.promiscuous_disable  = nfp_net_promisc_enable,\n \n \t.mac_addr_set         = nfp_flower_repr_mac_addr_set,\n+\t.fw_version_get       = nfp_repr_firmware_version_get,\n };\n \n static const struct eth_dev_ops nfp_flower_repr_dev_ops = {\n@@ -546,6 +547,7 @@ static const struct eth_dev_ops nfp_flower_repr_dev_ops = {\n \t.promiscuous_disable  = nfp_net_promisc_enable,\n \n \t.mac_addr_set         = nfp_flower_repr_mac_addr_set,\n+\t.fw_version_get       = nfp_repr_firmware_version_get,\n \n \t.flow_ops_get         = nfp_net_flow_ops_get,\n \t.mtr_ops_get          = nfp_net_mtr_ops_get,\ndiff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c\nindex a9af215626..88fc50c6d6 100644\n--- a/drivers/net/nfp/nfp_common.c\n+++ b/drivers/net/nfp/nfp_common.c\n@@ -214,6 +214,9 @@ nfp_net_notify_port_speed(struct rte_eth_dev *dev)\n \t\t      nfp_net_link_speed_rte2nfp(eth_table->ports[hw->idx].speed));\n }\n \n+/* The length of firmware version string */\n+#define FW_VER_LEN        32\n+\n static int\n __nfp_net_reconfig(struct nfp_net_hw *hw, uint32_t update)\n {\n@@ -1954,3 +1957,106 @@ nfp_net_cfg_read_version(struct nfp_net_hw *hw)\n \tversion.whole = nn_cfg_readl(hw, NFP_NET_CFG_VERSION);\n \thw->ver = version.split;\n }\n+\n+static void\n+nfp_net_get_nsp_info(struct nfp_net_hw *hw, char *nsp_version)\n+{\n+\tstruct nfp_nsp *nsp;\n+\n+\tnsp = nfp_nsp_open(hw->cpp);\n+\tif (nsp == NULL)\n+\t\treturn;\n+\n+\tsnprintf(nsp_version, FW_VER_LEN, \"%hu.%hu\",\n+\t\t\tnfp_nsp_get_abi_ver_major(nsp),\n+\t\t\tnfp_nsp_get_abi_ver_minor(nsp));\n+\n+\tnfp_nsp_close(nsp);\n+}\n+\n+static void\n+nfp_net_get_mip_name(struct nfp_net_hw *hw, char *mip_name)\n+{\n+\tstruct nfp_mip *mip;\n+\n+\tmip = nfp_mip_open(hw->cpp);\n+\tif (mip == NULL)\n+\t\treturn;\n+\n+\tsnprintf(mip_name, FW_VER_LEN, \"%s\", nfp_mip_name(mip));\n+\n+\tnfp_mip_close(mip);\n+}\n+\n+static void\n+nfp_net_get_app_name(struct nfp_net_hw *hw, char *app_name)\n+{\n+\tswitch (hw->pf_dev->app_fw_id) {\n+\tcase NFP_APP_FW_CORE_NIC:\n+\t\tsnprintf(app_name, FW_VER_LEN, \"%s\", \"nic\");\n+\t\tbreak;\n+\tcase NFP_APP_FW_FLOWER_NIC:\n+\t\tsnprintf(app_name, FW_VER_LEN, \"%s\", \"flower\");\n+\t\tbreak;\n+\tdefault:\n+\t\tsnprintf(app_name, FW_VER_LEN, \"%s\", \"unknown\");\n+\t\tbreak;\n+\t}\n+}\n+\n+int\n+nfp_net_firmware_version_get(struct rte_eth_dev *dev,\n+\t\tchar *fw_version,\n+\t\tsize_t fw_size)\n+{\n+\tstruct nfp_net_hw *hw;\n+\tchar mip_name[FW_VER_LEN];\n+\tchar app_name[FW_VER_LEN];\n+\tchar nsp_version[FW_VER_LEN];\n+\tchar vnic_version[FW_VER_LEN];\n+\n+\tif (fw_size < FW_VER_LEN)\n+\t\treturn FW_VER_LEN;\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\tsnprintf(vnic_version, FW_VER_LEN, \"%d.%d.%d.%d\",\n+\t\t\thw->ver.extend, hw->ver.class,\n+\t\t\thw->ver.major, hw->ver.minor);\n+\n+\tnfp_net_get_nsp_info(hw, nsp_version);\n+\tnfp_net_get_mip_name(hw, mip_name);\n+\tnfp_net_get_app_name(hw, app_name);\n+\n+\tsnprintf(fw_version, FW_VER_LEN, \"%s %s %s %s\",\n+\t\t\tvnic_version, nsp_version, mip_name, app_name);\n+\n+\treturn 0;\n+}\n+\n+int\n+nfp_repr_firmware_version_get(struct rte_eth_dev *dev,\n+\t\tchar *fw_version,\n+\t\tsize_t fw_size)\n+{\n+\tstruct nfp_net_hw *hw;\n+\tchar mip_name[FW_VER_LEN];\n+\tchar app_name[FW_VER_LEN];\n+\tchar nsp_version[FW_VER_LEN];\n+\tstruct nfp_flower_representor *repr;\n+\n+\tif (fw_size < FW_VER_LEN)\n+\t\treturn FW_VER_LEN;\n+\n+\trepr = dev->data->dev_private;\n+\thw = repr->app_fw_flower->pf_hw;\n+\n+\tnfp_net_get_nsp_info(hw, nsp_version);\n+\tnfp_net_get_mip_name(hw, mip_name);\n+\tnfp_net_get_app_name(hw, app_name);\n+\n+\tsnprintf(fw_version, FW_VER_LEN, \"* %s %s %s\",\n+\t\t\tnsp_version, mip_name, app_name);\n+\n+\treturn 0;\n+}\ndiff --git a/drivers/net/nfp/nfp_common.h b/drivers/net/nfp/nfp_common.h\nindex 424b18b0ad..4b588b2948 100644\n--- a/drivers/net/nfp/nfp_common.h\n+++ b/drivers/net/nfp/nfp_common.h\n@@ -473,6 +473,8 @@ int nfp_net_tx_desc_limits(struct nfp_net_hw *hw,\n int nfp_net_check_dma_mask(struct nfp_net_hw *hw, char *name);\n void nfp_net_init_metadata_format(struct nfp_net_hw *hw);\n void nfp_net_cfg_read_version(struct nfp_net_hw *hw);\n+int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);\n+int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);\n \n #define NFP_NET_DEV_PRIVATE_TO_HW(adapter)\\\n \t(&((struct nfp_net_adapter *)adapter)->hw)\ndiff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c\nindex 0b2dd7801b..10c66cd027 100644\n--- a/drivers/net/nfp/nfp_ethdev.c\n+++ b/drivers/net/nfp/nfp_ethdev.c\n@@ -461,6 +461,7 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = {\n \t.rx_queue_intr_disable  = nfp_rx_queue_intr_disable,\n \t.udp_tunnel_port_add    = nfp_udp_tunnel_port_add,\n \t.udp_tunnel_port_del    = nfp_udp_tunnel_port_del,\n+\t.fw_version_get         = nfp_net_firmware_version_get,\n };\n \n static inline int\ndiff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c\nindex cf3548e63a..d4357ad115 100644\n--- a/drivers/net/nfp/nfp_ethdev_vf.c\n+++ b/drivers/net/nfp/nfp_ethdev_vf.c\n@@ -241,6 +241,7 @@ static const struct eth_dev_ops nfp_netvf_eth_dev_ops = {\n \t.tx_queue_release\t= nfp_net_tx_queue_release,\n \t.rx_queue_intr_enable   = nfp_rx_queue_intr_enable,\n \t.rx_queue_intr_disable  = nfp_rx_queue_intr_disable,\n+\t.fw_version_get         = nfp_net_firmware_version_get,\n };\n \n static inline int\n",
    "prefixes": [
        "2/2"
    ]
}