get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 112981,
    "url": "http://patches.dpdk.org/api/patches/112981/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220617093444.2004000-8-jin.liu@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": "<20220617093444.2004000-8-jin.liu@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220617093444.2004000-8-jin.liu@corigine.com",
    "date": "2022-06-17T09:34:38",
    "name": "[v3,07/13] net/nfp: support firmware with NFDk",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "1f618dd287c6542857fd5d444cc6d3a5a047cf52",
    "submitter": {
        "id": 2670,
        "url": "http://patches.dpdk.org/api/people/2670/?format=api",
        "name": "Jin Liu",
        "email": "jin.liu@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/20220617093444.2004000-8-jin.liu@corigine.com/mbox/",
    "series": [
        {
            "id": 23606,
            "url": "http://patches.dpdk.org/api/series/23606/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=23606",
            "date": "2022-06-17T09:34:31",
            "name": "Add support of NFP3800 chip and firmware with NFDk",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/23606/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/112981/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/112981/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 184D9A0093;\n\tFri, 17 Jun 2022 11:36:08 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 4E97A415D7;\n\tFri, 17 Jun 2022 11:35:33 +0200 (CEST)",
            "from NAM10-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam10on2114.outbound.protection.outlook.com [40.107.94.114])\n by mails.dpdk.org (Postfix) with ESMTP id C4AD242B6E\n for <dev@dpdk.org>; Fri, 17 Jun 2022 11:35:28 +0200 (CEST)",
            "from DM6PR13MB3004.namprd13.prod.outlook.com (2603:10b6:5:191::21)\n by CO3PR13MB5671.namprd13.prod.outlook.com (2603:10b6:303:17a::16) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.9; Fri, 17 Jun\n 2022 09:35:27 +0000",
            "from DM6PR13MB3004.namprd13.prod.outlook.com\n ([fe80::ac31:a36a:cc15:cd35]) by DM6PR13MB3004.namprd13.prod.outlook.com\n ([fe80::ac31:a36a:cc15:cd35%7]) with mapi id 15.20.5373.009; Fri, 17 Jun 2022\n 09:35:27 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=PYsjrP8nOKk5oMn/Nv+jbQM7laKr1X1kgJoLn5K/FkErjNSecdcnPiFt4mfQY+pGM6csgdzrH3cm+8Kt94psFoyzDj+HnsMnHU0Uh/gnixVSnE6qHWnX+6MXyF9kxY3plCtGGrkRBDJLFuv55+6pNUmoRxqcYzGWUI9f/W/v2mVr6KzbfooCVjXEP4fApC2KwKB5clSfPlHjgH6s2YCrqCR8+CCLRzNbvVClhg1sERpuURDlx9dHm9Yqb8EhPCWSim+L3Hbm5wd0o1Zi/cYD8eK6kQdhOEcwqM8oN0HC1axGjFVOVGEsvMnTmvCTpeLUyPB5zn6FojeVMXAESrjrzg==",
        "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=L3T+F9lLbwKb/edutfQI/I6V5Tc0434kyN5Bx9zMMS0=;\n b=kpc84k+WUixkkJzBYkqvTX/UIzPWCpQq2MM49CjzTSclC4SjbZCU3hTuL12DCH2ZZxc526QXXa6A04EDTVcAICPKlXo+vPBtbuuXWTrIdxIag98BgYWBKUnrMMIW/FfwUVrYt984VqCV3qYtLwDShL0p+/vNMeMqDBMi+dMx0L+0bTXbVOA7RawBzhaTBhXgN/03DRCjbIz7HbmtcHFf/9ljKXMU6WpnFHPrBusz/tpttMm74vjt0mS0tCEe5JEB6hN0JnDBuxmdVn668Pwi9mqLnx2WJAILFAVbfaUZwReVYcXxZpsiKbGv7I1i01VG/5Ltx2Psk70zUS44wlEuIw==",
        "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=L3T+F9lLbwKb/edutfQI/I6V5Tc0434kyN5Bx9zMMS0=;\n b=bl/agmW/GFHiaNR3NfQEJuCX9F/bt7GPnlPq2+vRPDGHLpFKZS2y/tutRRi6vGGZqjhmoma+PIR0iEfYzfy/c3u9DeW8qAfVPVlgQPLYiYz8zA47Ehmv3gCM11vIlNCRlIC79XWjURp7zK+zr4Y6QPQqWpd8KtOzdYxolYMqqS0=",
        "Authentication-Results": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=corigine.com;",
        "From": "Jin Liu <jin.liu@corigine.com>",
        "To": "dev@dpdk.org",
        "Cc": "niklas.soderlund@corigine.com, Jin Liu <jin.liu@corigine.com>,\n Diana Wang <na.wang@corigine.com>, Peng Zhang <peng.zhang@corigine.com>,\n Chaoyong He <chaoyong.he@corigine.com>",
        "Subject": "[PATCH v3 07/13] net/nfp: support firmware with NFDk",
        "Date": "Fri, 17 Jun 2022 11:34:38 +0200",
        "Message-Id": "<20220617093444.2004000-8-jin.liu@corigine.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "In-Reply-To": "<20220617093444.2004000-1-jin.liu@corigine.com>",
        "References": "<20220616023939.1798769-1-jin.liu@corigine.com>\n <20220617093444.2004000-1-jin.liu@corigine.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "LO4P123CA0192.GBRP123.PROD.OUTLOOK.COM\n (2603:10a6:600:1a4::17) To DM6PR13MB3004.namprd13.prod.outlook.com\n (2603:10b6:5:191::21)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "5f15f435-8164-44bf-79cd-08da5044b5f5",
        "X-MS-TrafficTypeDiagnostic": "CO3PR13MB5671:EE_",
        "X-Microsoft-Antispam-PRVS": "\n <CO3PR13MB56713CC8A6AE63B144B4C5F294AF9@CO3PR13MB5671.namprd13.prod.outlook.com>",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n YBnpyn3NA6FL/imVCQf8WryMG40i7d2QFZ6qHwfyN78m4XabaAEpTejIW1Jvr8bFD66TIbaOSmYlgfkQGTgEWEaFrlsYGt/F10GZOLMEejpLTOVWBuVdjyAGePLke3wH9Pwqgvs+1NX/cMhmV2/YyCTfySJh4pxiC7Cx0BlLnWMF1AGyJCDdRlWFylKouZdM9cgCYH1bRoxMDFA8dV2ZkT9D/ubq9rBXfHD7290BJFy90FXa3GurNxkT7NxukJ+UajLlMQWr+2plusTIqxqRepg2V50C/uHJcucUfmCe771Fnaej788mfN7Olbol9WnGDVVH0oHrRxarKJ04sToUu+mV9g3GJGBJgNmnWUgt4Zvk83xNe323dCt2WhviKcoGcHHhsOSxc8vGE/RYuzadBEceZl7enJt0/qtqpf8hdjSAWeGmvDcFUBKnwszYbMAHyd3ZUJ21UvlEGAk0aCQpaQrxM7AALmMSpZTeQ8/eEvreugF9P2ErL85+xwFSzbxOtG7eG6QW9hWfO/6TPO7Q9vsWJ6VGWH10uPp9vPzjHCPcq1p8v/e6WMm4XMyT6YWHV9WS7H4FSaOczE+uqnZzLSRRAei7h6dGYUpQbbL/uqJijmnWrYl/thE4y+DciljcdBts2rW8sw717E4QM10gA2vULv3kdfmUDf6LVBazR+hE2bBn+3JlOD0JtdvOBGyJfafayUWahbVRroAM1HKy7lQe7WNwldqJzys6WEpucWa7ueS1iseAxQnbrWCPcoPFi9SdRN5xMoYBMgUMd3nwpx8kvjpyb68e3qG71DRHfg0y4VfXxv6T4Gb9Recj/bmw8IyFswRMY1IYWzFOpJNlQg==",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:DM6PR13MB3004.namprd13.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230016)(4636009)(346002)(136003)(366004)(396003)(39840400004)(66476007)(66556008)(26005)(8676002)(6666004)(107886003)(66946007)(6506007)(6916009)(44832011)(2906002)(316002)(4326008)(38350700002)(186003)(508600001)(54906003)(5660300002)(966005)(6486002)(6512007)(1076003)(8936002)(2616005)(36756003)(52116002)(83380400001)(86362001)(38100700002)(41300700001);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?JyFRnk/KycJC8W1HyHnhxmK8HNUS?=\n\t=?utf-8?q?hG2KKlme3IaUlPs5qy0ex/86qTEhCi1/5mcQbajHSTwUHS2xwW/BgSTPf4xDrEElk?=\n\t=?utf-8?q?ZKHJQkgcMduxPQpyAboyVoModkMQN+Yh8xVtfEXJavV90GJkZwmrO3P3ArmKt0mht?=\n\t=?utf-8?q?3TqaBtSB834QgIrvINT+Vz7dNo3i5UV3Qoz+9hx1bXvTtVriseCo4IOzdX00Lznvn?=\n\t=?utf-8?q?uR5Kgf5r9mWqG1OdYnIQwbrmDov+gbNbGrFHly/6JrSC0tABJMGKgQlD9s/Z3Wq87?=\n\t=?utf-8?q?8g/ZwzJzM3rKKmITVpPUt3y7FnebQIUP8RiydlKl9rnQ2/qiXlJCqL16i8jyWHzd6?=\n\t=?utf-8?q?w6EfEItDGafjhhuJyaewRY8Zu1aNWKNIbyOQpO9mEnOSeiNCoWQ1tTUSRMQGzmpW9?=\n\t=?utf-8?q?Rgh5VIRetLHFitOQRuWDfTLLcuBjwraGtQD08lgQ0pQVu9u16FCdXxvZd1rVFMgdR?=\n\t=?utf-8?q?O03UZYuhCULBydhRYB2pmVj46aQaC3m1JkdIZ+jNEs57U/thriyiUEOa73FvphdrY?=\n\t=?utf-8?q?B5CtGI54Y9RyZi6eNMWPiVGfXw5WMf/TjzcziplLp3R0/th5dtv0siyJ57Rh2KRdr?=\n\t=?utf-8?q?DISAgkg1ZiLsrLgAbZaG68TDPwjNWVf6vOL7Cl6wSeY7puorTasXP1AsBqljn0e3s?=\n\t=?utf-8?q?V/kDBlTXzntTazxsPzy9MfhbVZoSJiJiojUc7qUKwxeSwixlal46QWobRWNvXztzU?=\n\t=?utf-8?q?XDhfBb0vyMXe7jUTxzltXfLCEHH3YkPPiXn/QesK3SR71U/8eoQmxdlt7fjdo0sXK?=\n\t=?utf-8?q?6oQGvf2KAKWtVgMf7Q4i5oXYtLrz5zNc/mUrDzfbUTPXBWiDZLoz+qmGWeWq616dQ?=\n\t=?utf-8?q?dvvk+h2l1rneGnsibLY1/i9AS83Epa5k70YAk++Z9yYqGlX9pPLi+YM6/lTjsLjMd?=\n\t=?utf-8?q?qCMRU7wahjX7Tb8RgxtA1Cv3dutDCd6XejaBxswX65ws8KPhJWZOYi4uCvxwr4dk2?=\n\t=?utf-8?q?aDP1oueCM0OErq0T+aMPUTURjON+IJMCuKPDm5XqO5DlxWl4RcQs3Un5BSRO8JyYd?=\n\t=?utf-8?q?5C5x9qBruxPwRP8CaBBZsvXuY0OykMpId0ZcNMna12TdXTmB93sSs5MM3P+lEutII?=\n\t=?utf-8?q?h2roP8q/C93xZQNrtagfD11ff7P4OWmflfYgvA8WgejG6RKR1VqYwMrrlxQ51k4hi?=\n\t=?utf-8?q?ItmkyHPOFZkGJvcC4JDiWlWXGq9IgCDEEHHXZDAElDpUGEdBrvDBfr1AobKuZRVj7?=\n\t=?utf-8?q?CGTA0SjOezsrpA/8Ubsf28W+aU4kQ2/Bl2VEtmBHeeV8SHLxkv5Bvih2kDc+MAgHt?=\n\t=?utf-8?q?lkM5+1eYsa2DRScyd3gykK4oxFqN3SDY0GEvcQHVOXiU5hcXJ/AqjgGnUlwOnZMEC?=\n\t=?utf-8?q?eGB83OZdps/ovHvwJTDx/wxZIhqhtWyE2KYrlKGwSnsegZCKrt5E+wE12otwQZCui?=\n\t=?utf-8?q?jiMuxsPebGl4YMnf03kkMUD9NEAR5i0DhLqblMMsxAME8N1dx6JovMEKRSKy5HXQy?=\n\t=?utf-8?q?TM9U2QQMxFdrXomT3iIbySrvnbAZX28ujBtlbpd/Ro4IB8lYxfPis3o5zSVZ7z3Et?=\n\t=?utf-8?q?5cP6cqI779kpygCsmzIKEg8puHGjRBZeb4xADXcv9NTRH/5whCmoVnvzzamdHWYMY?=\n\t=?utf-8?q?jupUlM+vQ70rvgFZU0MvM3pHVc488yPMcL5lHC4dP0A7e8ysw1KzAVM1qqn4S2XBS?=\n\t=?utf-8?q?r560tJ6qgabh9+YP08H3Gypoy9lrwXnUKfLvcnWyzZyqtU8UZVduw=3D?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 5f15f435-8164-44bf-79cd-08da5044b5f5",
        "X-MS-Exchange-CrossTenant-AuthSource": "DM6PR13MB3004.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Jun 2022 09:35:26.9608 (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 hUhn6FSmdHF4fTTGKDR4lARXcFHtsGHDyjyTV38yMB7lM7nsGjvLsdfNZqpuf/ONsff1ZR6QrFQj2WLn9wTRxQ==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CO3PR13MB5671",
        "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": "Modify nfp driver logic, add firmware version (NFD3 or NFDK) judgment, will\naccording to the firmware version, mount different driver functions.\n\nSigned-off-by: Jin Liu <jin.liu@corigine.com>\nSigned-off-by: Diana Wang <na.wang@corigine.com>\nSigned-off-by: Peng Zhang <peng.zhang@corigine.com>\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nSigned-off-by: Niklas Söderlund <niklas.soderlund@corigine.com>\n---\n doc/guides/nics/nfp.rst                |  7 ++--\n doc/guides/rel_notes/release_22_07.rst |  1 +\n drivers/net/nfp/nfp_ctrl.h             |  2 +\n drivers/net/nfp/nfp_ethdev.c           | 49 +++++++++++++++++++-----\n drivers/net/nfp/nfp_ethdev_vf.c        | 53 +++++++++++++++++++-------\n 5 files changed, 85 insertions(+), 27 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst\nindex dcefac3ef6..55539accc2 100644\n--- a/doc/guides/nics/nfp.rst\n+++ b/doc/guides/nics/nfp.rst\n@@ -100,9 +100,10 @@ more than one SmartNIC, same type of SmartNIC or different ones, and to upload a\n different firmware to each SmartNIC.\n \n    .. Note::\n-      Currently the NFP PMD supports using the PF with Agilio Basic Firmware. See\n-      https://help.netronome.com/support/solutions for more information on the\n-      various firmwares supported by the Netronome Agilio CX smartNIC.\n+      Currently the NFP PMD supports using the PF with Agilio Firmware with NFD3\n+      and Agilio Firmware with NFDk. See https://help.netronome.com/support/solutions\n+      for more information on the various firmwares supported by the Netronome\n+      Agilio CX smartNIC.\n \n PF multiport support\n --------------------\ndiff --git a/doc/guides/rel_notes/release_22_07.rst b/doc/guides/rel_notes/release_22_07.rst\nindex d5d8c735b1..64308e6c1a 100644\n--- a/doc/guides/rel_notes/release_22_07.rst\n+++ b/doc/guides/rel_notes/release_22_07.rst\n@@ -111,6 +111,7 @@ New Features\n * **Updated Netronome nfp driver.**\n \n   * Added support for NFP3800 NIC.\n+  * Added support for firmware with NFDk.\n \n * **Updated VMware vmxnet3 networking driver.**\n \ndiff --git a/drivers/net/nfp/nfp_ctrl.h b/drivers/net/nfp/nfp_ctrl.h\nindex 4dd62ef194..e73715e2aa 100644\n--- a/drivers/net/nfp/nfp_ctrl.h\n+++ b/drivers/net/nfp/nfp_ctrl.h\n@@ -135,6 +135,8 @@\n  * - define more STS bits\n  */\n #define NFP_NET_CFG_VERSION             0x0030\n+#define   NFP_NET_CFG_VERSION_DP_NFD3   0\n+#define   NFP_NET_CFG_VERSION_DP_NFDK   1\n #define   NFP_NET_CFG_VERSION_RESERVED_MASK\t(0xff << 24)\n #define   NFP_NET_CFG_VERSION_CLASS_MASK  (0xff << 16)\n #define   NFP_NET_CFG_VERSION_CLASS(x)    (((x) & 0xff) << 16)\ndiff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c\nindex cb84dc3188..1bbba9187e 100644\n--- a/drivers/net/nfp/nfp_ethdev.c\n+++ b/drivers/net/nfp/nfp_ethdev.c\n@@ -358,6 +358,32 @@ static const struct eth_dev_ops nfp_net_nfd3_eth_dev_ops = {\n \t.rx_queue_intr_disable  = nfp_rx_queue_intr_disable,\n };\n \n+static inline int\n+nfp_net_ethdev_ops_mount(struct nfp_net_hw *hw, struct rte_eth_dev *eth_dev)\n+{\n+\tswitch (NFD_CFG_CLASS_VER_of(hw->ver)) {\n+\tcase NFP_NET_CFG_VERSION_DP_NFD3:\n+\t\tbreak;\n+\tcase NFP_NET_CFG_VERSION_DP_NFDK:\n+\t\tif (NFD_CFG_MAJOR_VERSION_of(hw->ver) < 5) {\n+\t\t\tPMD_DRV_LOG(ERR, \"NFDK must use ABI 5 or newer, found: %d\",\n+\t\t\t\tNFD_CFG_MAJOR_VERSION_of(hw->ver));\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t\tbreak;\n+\tdefault:\n+\t\tPMD_DRV_LOG(ERR, \"The version of firmware is not correct.\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\teth_dev->dev_ops = &nfp_net_nfd3_eth_dev_ops;\n+\teth_dev->rx_queue_count = nfp_net_rx_queue_count;\n+\teth_dev->rx_pkt_burst = &nfp_net_recv_pkts;\n+\teth_dev->tx_pkt_burst = &nfp_net_nfd3_xmit_pkts;\n+\n+\treturn 0;\n+}\n+\n static int\n nfp_net_init(struct rte_eth_dev *eth_dev)\n {\n@@ -402,11 +428,6 @@ nfp_net_init(struct rte_eth_dev *eth_dev)\n \tPMD_INIT_LOG(DEBUG, \"Working with physical port number: %d, \"\n \t\t\t\"NFP internal port number: %d\", port, hw->nfp_idx);\n \n-\teth_dev->dev_ops = &nfp_net_nfd3_eth_dev_ops;\n-\teth_dev->rx_queue_count = nfp_net_rx_queue_count;\n-\teth_dev->rx_pkt_burst = &nfp_net_recv_pkts;\n-\teth_dev->tx_pkt_burst = &nfp_net_nfd3_xmit_pkts;\n-\n \t/* For secondary processes, the primary has done all the work */\n \tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n \t\treturn 0;\n@@ -441,6 +462,11 @@ nfp_net_init(struct rte_eth_dev *eth_dev)\n \n \tPMD_INIT_LOG(DEBUG, \"ctrl bar: %p\", hw->ctrl_bar);\n \n+\thw->ver = nn_cfg_readl(hw, NFP_NET_CFG_VERSION);\n+\n+\tif (nfp_net_ethdev_ops_mount(hw, eth_dev))\n+\t\treturn -EINVAL;\n+\n \thw->max_rx_queues = nn_cfg_readl(hw, NFP_NET_CFG_MAX_RXRINGS);\n \thw->max_tx_queues = nn_cfg_readl(hw, NFP_NET_CFG_MAX_TXRINGS);\n \n@@ -473,7 +499,6 @@ nfp_net_init(struct rte_eth_dev *eth_dev)\n \tnfp_net_cfg_queue_setup(hw);\n \n \t/* Get some of the read-only fields from the config BAR */\n-\thw->ver = nn_cfg_readl(hw, NFP_NET_CFG_VERSION);\n \thw->cap = nn_cfg_readl(hw, NFP_NET_CFG_CAP);\n \thw->max_mtu = nn_cfg_readl(hw, NFP_NET_CFG_MAX_MTU);\n \thw->mtu = RTE_ETHER_MTU;\n@@ -939,6 +964,7 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)\n \tint err;\n \tint total_ports;\n \tstruct nfp_cpp *cpp;\n+\tstruct nfp_net_hw *hw;\n \tstruct nfp_rtsym_table *sym_tbl;\n \n \tif (pci_dev == NULL)\n@@ -988,11 +1014,14 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)\n \t\t\t\t\"secondary process attach failed, ethdev doesn't exist\");\n \t\t\treturn -ENODEV;\n \t\t}\n+\n+\t\thw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);\n+\n+\t\tif (nfp_net_ethdev_ops_mount(hw, eth_dev))\n+\t\t\treturn -EINVAL;\n+\n \t\teth_dev->process_private = cpp;\n-\t\teth_dev->dev_ops = &nfp_net_nfd3_eth_dev_ops;\n-\t\teth_dev->rx_queue_count = nfp_net_rx_queue_count;\n-\t\teth_dev->rx_pkt_burst = &nfp_net_recv_pkts;\n-\t\teth_dev->tx_pkt_burst = &nfp_net_nfd3_xmit_pkts;\n+\n \t\trte_eth_dev_probing_finish(eth_dev);\n \t}\n \ndiff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c\nindex c46ee0f913..0b4660aba6 100644\n--- a/drivers/net/nfp/nfp_ethdev_vf.c\n+++ b/drivers/net/nfp/nfp_ethdev_vf.c\n@@ -265,6 +265,32 @@ static const struct eth_dev_ops nfp_netvf_nfd3_eth_dev_ops = {\n \t.rx_queue_intr_disable  = nfp_rx_queue_intr_disable,\n };\n \n+static inline int\n+nfp_netvf_ethdev_ops_mount(struct nfp_net_hw *hw, struct rte_eth_dev *eth_dev)\n+{\n+\tswitch (NFD_CFG_CLASS_VER_of(hw->ver)) {\n+\tcase NFP_NET_CFG_VERSION_DP_NFD3:\n+\t\tbreak;\n+\tcase NFP_NET_CFG_VERSION_DP_NFDK:\n+\t\tif (NFD_CFG_MAJOR_VERSION_of(hw->ver) < 5) {\n+\t\t\tPMD_DRV_LOG(ERR, \"NFDK must use ABI 5 or newer, found: %d\",\n+\t\t\t\tNFD_CFG_MAJOR_VERSION_of(hw->ver));\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t\tbreak;\n+\tdefault:\n+\t\tPMD_DRV_LOG(ERR, \"The version of firmware is not correct.\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\teth_dev->dev_ops = &nfp_netvf_nfd3_eth_dev_ops;\n+\teth_dev->rx_queue_count = nfp_net_rx_queue_count;\n+\teth_dev->rx_pkt_burst = &nfp_net_recv_pkts;\n+\teth_dev->tx_pkt_burst = &nfp_net_nfd3_xmit_pkts;\n+\n+\treturn 0;\n+}\n+\n static int\n nfp_netvf_init(struct rte_eth_dev *eth_dev)\n {\n@@ -292,10 +318,19 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)\n \n \thw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);\n \n-\teth_dev->dev_ops = &nfp_netvf_nfd3_eth_dev_ops;\n-\teth_dev->rx_queue_count = nfp_net_rx_queue_count;\n-\teth_dev->rx_pkt_burst = &nfp_net_recv_pkts;\n-\teth_dev->tx_pkt_burst = &nfp_net_nfd3_xmit_pkts;\n+\thw->ctrl_bar = (uint8_t *)pci_dev->mem_resource[0].addr;\n+\tif (hw->ctrl_bar == NULL) {\n+\t\tPMD_DRV_LOG(ERR,\n+\t\t\t\"hw->ctrl_bar is NULL. BAR0 not configured\");\n+\t\treturn -ENODEV;\n+\t}\n+\n+\tPMD_INIT_LOG(DEBUG, \"ctrl bar: %p\", hw->ctrl_bar);\n+\n+\thw->ver = nn_cfg_readl(hw, NFP_NET_CFG_VERSION);\n+\n+\tif (nfp_netvf_ethdev_ops_mount(hw, eth_dev))\n+\t\treturn -EINVAL;\n \n \t/* For secondary processes, the primary has done all the work */\n \tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n@@ -313,15 +348,6 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)\n \t\t     pci_dev->addr.domain, pci_dev->addr.bus,\n \t\t     pci_dev->addr.devid, pci_dev->addr.function);\n \n-\thw->ctrl_bar = (uint8_t *)pci_dev->mem_resource[0].addr;\n-\tif (hw->ctrl_bar == NULL) {\n-\t\tPMD_DRV_LOG(ERR,\n-\t\t\t\"hw->ctrl_bar is NULL. BAR0 not configured\");\n-\t\treturn -ENODEV;\n-\t}\n-\n-\tPMD_INIT_LOG(DEBUG, \"ctrl bar: %p\", hw->ctrl_bar);\n-\n \thw->max_rx_queues = nn_cfg_readl(hw, NFP_NET_CFG_MAX_RXRINGS);\n \thw->max_tx_queues = nn_cfg_readl(hw, NFP_NET_CFG_MAX_TXRINGS);\n \n@@ -354,7 +380,6 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)\n \tnfp_net_cfg_queue_setup(hw);\n \n \t/* Get some of the read-only fields from the config BAR */\n-\thw->ver = nn_cfg_readl(hw, NFP_NET_CFG_VERSION);\n \thw->cap = nn_cfg_readl(hw, NFP_NET_CFG_CAP);\n \thw->max_mtu = nn_cfg_readl(hw, NFP_NET_CFG_MAX_MTU);\n \thw->mtu = RTE_ETHER_MTU;\n",
    "prefixes": [
        "v3",
        "07/13"
    ]
}