Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/113288/?format=api
https://patches.dpdk.org/api/patches/113288/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/20220623022615.3628093-8-jin.liu@corigine.com/", "project": { "id": 1, "url": "https://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": "<20220623022615.3628093-8-jin.liu@corigine.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20220623022615.3628093-8-jin.liu@corigine.com", "date": "2022-06-23T02:26:09", "name": "[v4,07/13] net/nfp: support firmware with NFDk", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": true, "hash": "1f618dd287c6542857fd5d444cc6d3a5a047cf52", "submitter": { "id": 2670, "url": "https://patches.dpdk.org/api/people/2670/?format=api", "name": "Jin Liu", "email": "jin.liu@corigine.com" }, "delegate": { "id": 319, "url": "https://patches.dpdk.org/api/users/319/?format=api", "username": "fyigit", "first_name": "Ferruh", "last_name": "Yigit", "email": "ferruh.yigit@amd.com" }, "mbox": "https://patches.dpdk.org/project/dpdk/patch/20220623022615.3628093-8-jin.liu@corigine.com/mbox/", "series": [ { "id": 23707, "url": "https://patches.dpdk.org/api/series/23707/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=23707", "date": "2022-06-23T02:26:02", "name": "Add support of NFP3800 chip and firmware with NFDk", "version": 4, "mbox": "https://patches.dpdk.org/series/23707/mbox/" } ], "comments": "https://patches.dpdk.org/api/patches/113288/comments/", "check": "success", "checks": "https://patches.dpdk.org/api/patches/113288/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 23B18A0545;\n\tThu, 23 Jun 2022 04:27:41 +0200 (CEST)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E73CA42B7C;\n\tThu, 23 Jun 2022 04:27:19 +0200 (CEST)", "from NAM10-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam10on2102.outbound.protection.outlook.com [40.107.94.102])\n by mails.dpdk.org (Postfix) with ESMTP id 0B7E042823\n for <dev@dpdk.org>; Thu, 23 Jun 2022 04:27:12 +0200 (CEST)", "from DM6PR13MB3004.namprd13.prod.outlook.com (2603:10b6:5:191::21)\n by MN2PR13MB3535.namprd13.prod.outlook.com (2603:10b6:208:169::12) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Thu, 23 Jun\n 2022 02:27:10 +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.015; Thu, 23 Jun 2022\n 02:27:10 +0000" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=EH+XA9OrcEqAW2nywGiLlLH9C0vSNDruZkDOqK2xqWsYZ+ZIyt/UjVarE+PFO498XFCOq14NflxUaWzRxzMgCcAMzTCBpRkcbjLdWBs+KxsDMaWDOUCHDkFuKaAfDmyMaBGS5Hi+K3lngmTPQN73IwMrVMXZ0WhFztdjqKK1OMt5fZeiH2fbRf5OKwz5UwR/qKJvt2t0+y2hydE/XxrUfe1tjd+pOPbyaDoH/04c/pvoG41agr3YJcsLbvsLf85TfseT4WFhFFPGXOMI/0IZq3K7McKOtDQdAOKBNGxoKxDLd0Qmf9idWVjGnFI4x5DTFSSAFaL0G9x4dWvMHXlOjA==", "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=mLWbtVerQqM/n1qmh+6b5c/Ka216AmkjPdV7ghPCW49yfY4ZGmZmGlk1ELLHRjPFGf0Ek44sxWb8RxoQVqsmAxtatIrfo/nIUPW1YK2ppTUTiYFCS+g14xKI7Va+azpR7TV5vX6dfnyIq+Y6bxF9av3TO/E66C5oIV8ttJA3NWJdrJK7GfUHz0uH34ngjl6dMUCzcXPLVewkJzPk+qJU1CyQa4k66FfxqrqoIaODXJtDXKFiqU0uU64olFw+5aOwEHGjcJK7XlbU/GBVnnKcXvtb5FVSics8OqFoTmmNhLf2m+pnO09byrftTodeLSRFQyvtXzogmTNRcNRwsyxK5Q==", "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=E5U8WQoEKIF99D/p3CPXOxHLMYFt1AeX71T9xtQJexXhktucUHcggGZGbCbmeof/xyzI9+SlYIk1xTHyH4VFqHEkA/ro2li6s5cjcwoTVX67qTBWon+Tj0E0qEZ1z7AZAa/4lfBtSiUILn34TV4a/o+AmMQyDsqxMul3sfwGWyo=", "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 v4 07/13] net/nfp: support firmware with NFDk", "Date": "Thu, 23 Jun 2022 04:26:09 +0200", "Message-Id": "<20220623022615.3628093-8-jin.liu@corigine.com>", "X-Mailer": "git-send-email 2.27.0", "In-Reply-To": "<20220623022615.3628093-1-jin.liu@corigine.com>", "References": "<20220617093444.2004000-1-jin.liu@corigine.com>\n <20220623022615.3628093-1-jin.liu@corigine.com>", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-ClientProxiedBy": "LO4P265CA0222.GBRP265.PROD.OUTLOOK.COM\n (2603:10a6:600:33a::10) 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": "96bace3c-f150-4b20-a605-08da54bfe009", "X-MS-TrafficTypeDiagnostic": "MN2PR13MB3535:EE_", "X-Microsoft-Antispam-PRVS": "\n <MN2PR13MB3535155B6B57F8CB71485B5594B59@MN2PR13MB3535.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 JjQ6nQPVOxcfB3ZYXkO/lLyLT8aUC8PQaxRboIVQedUT1ehVnAQkvLa73HTwhDTxXeUe1iRQ2JWTVAUWAFJ0MzgeEhX7SnqfD6mKnuBLvNLSEoQrLx14a4KrOpORyye9jHUUG+FuI34wlMkeIDtY6TKObYbxW5b1nn4WuxmfWoPsK2RZXRKdqcAIztTg24MDzKOJbMKg8XJXpxVMiu2ImJuROOGSqnXQS2d4S/c5MO1Wz3o7nv5/I3dzCUKLO0LJQhGStcYw382ZAp5K6xXpepHv+W9iXgzTHif+OyakC3jugnqBnveduZIbprpESOZmQcnCea2qGMSEEDQ9X3T7Omg5Qqg8pxvq+i8V8YuBTmNXdtltY1DN0oKRf5KjHgAi9ZfyXWjwpN6w3cU83VEi3Qxv3cIAtPOSV9iwtSviKRuiVZoceLZKKBm+dNnopsmauasnAP4/3iSLA4oxXVm8x1m5Xxxbx5e39hZaVlADNbOwnabGBs2BeZoqHQ3LDbZrOj9oI7Tynw14mophI+6vQHAAbEBOiEnqq2WJkkNwmbZvouDLGlWOdsHQqXpxvXdMCMe5YOye61xDe4ssfIVKkgRcZIod886FD6zMIgeUkpt8GPTVvwK8JvfpjjJNtgDIW2T0Qml3u324DiDztpKdwBbcrmSqr9KnWEU6v4hS/EZUfOjWKK/iGre5mRexS93bylXgfMwy4IjWW5TEUbTzbGRLmj9OF/AGecCzwTSeeljW8G94zJWa17IT+XVnhrBIYPtf8rIhsXAcHieNnLRDNAdvaCNSq0VukbSw7lYxAEz6V/wgtzRNYliRO3rZcaGdB6DUTLzsdL4GMtAdB/efYg==", "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)(376002)(366004)(346002)(136003)(396003)(39830400003)(107886003)(1076003)(38100700002)(38350700002)(6486002)(966005)(36756003)(8936002)(54906003)(2616005)(6916009)(5660300002)(316002)(66556008)(52116002)(6506007)(186003)(66946007)(8676002)(4326008)(66476007)(41300700001)(86362001)(6512007)(26005)(83380400001)(478600001)(2906002)(44832011);\n DIR:OUT; SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?7XqVi0VahDymvBQW3SGPpeEhWLus?=\n\t=?utf-8?q?HINPy9Ln2EQ/cHjjuM2YXNNTS2jbYp8M1aHO6/5qN+qnczyJmDoqzr76dRuKpaO4G?=\n\t=?utf-8?q?ZBCfJubLIZ3v0wYWMKVaF/Jcq+dGi8th1xuCaFGXmkCLtGotS/hjyshWh/EbJ+vVz?=\n\t=?utf-8?q?+USH4h+noJTn60J7gIlma0YCcp35JZIDvI13Zx7dUFiMTt6bGD3ZjqOagk1h3DpQC?=\n\t=?utf-8?q?exChKGAQLPlhhAhXiiDvSMeE137Am6AHbxXFBdID6HmbTgMSmDW+2xQI2NknVHb0l?=\n\t=?utf-8?q?zvmzrANvglHJzKIeJxVeePmpLcAkgLcG9L65xlxhEP5svQMngbGfe98tDexoQZtCV?=\n\t=?utf-8?q?ecWWvBWWm5mdb6cp3CGLFcEmaN/Fq/O7eOuVKoR6bmDYlOYmsNFnVFZn6M/U2XSFs?=\n\t=?utf-8?q?/clgVUuduvgS4c4/SqceR0602rOYg3mXVGgrtRvQR3tpdlbawNIi/np6nVSIlnXA0?=\n\t=?utf-8?q?90UcnZ8/N2ICqL4NgGQ9HTM7J+6JEWDMdq3zL+eVmEeKuaG3OrqaeUVYZGzCvykaY?=\n\t=?utf-8?q?V+s7IkYziHUA4dGY22K9MlzoT95vXrpjQ5UswjTZ363hA5a4tsxFf39/wQVqny12/?=\n\t=?utf-8?q?/IHAIq8ncD/2IVvh4GhQPljDkEFiWb7yjoH5aB2SYkbTUCf9h5SdD0cJYYE+tIfnO?=\n\t=?utf-8?q?ExRZw0KR4+K8jp9qs2bx4ehlS+Ag3jQK4luP6ckfXPeUV2H8zUMmoTxTb7Q7+s7v7?=\n\t=?utf-8?q?0wnQrEc4d3XDjIYFenSD2Obh/3yD8Bh8GWiui7NDoV0aa1sAKye8NnTWggsU/i51w?=\n\t=?utf-8?q?e41yQc7kTyHnfHZxrPdnDYdeS6OZ1guNpc+NCfBIRl57hw8ex53L5qXGGAyMJHc6b?=\n\t=?utf-8?q?51uVrP6XIiOVBYiI6bdF4yrdgUBVzT4sEfPYBlOQAGo6tmPacR2xFOJGPqA6L2CRI?=\n\t=?utf-8?q?88X/Xp/HbDW3tuQq+IyV4d658afM7vaep1RZFiRWx12uRbtArafGJH0AGZh5Lylxh?=\n\t=?utf-8?q?uXWC8j3kA46uiBtWSF0G5mToCUerY/eHdA2BROY8W1/TpwCJXYmfJ0x3s0HYg9NDd?=\n\t=?utf-8?q?4GQMiAbmBQfVCywBTF2OMzp3qfDLMDR0J7WTGy5IUOfq++sAYE4sSNUYQRMC01il5?=\n\t=?utf-8?q?qPBTkpFuwxyCIJLokZe14HbjBWY/Qn+P6UyeRxsh2fNnwtdg+cVU+Cto+nVGr1HQp?=\n\t=?utf-8?q?uOT3D/DVNEOcwhTO/rWJrRt7s3MmkHhwD4TKH+U4UmTRagDWoUhmMWQ6YCkY6kFzT?=\n\t=?utf-8?q?jnVsbiYqn0aXcuyOjlUxrMfN4r+mkq1BEyzYEHtOcTvzKiIVzWwUmeqFxcv/3mE4u?=\n\t=?utf-8?q?W6zi1l5DiiHX8UEtUqtZiEj3XZcyHd8/JbsHCfT9oRqHdmN76+2jtmRFOAcQCUVgn?=\n\t=?utf-8?q?k9+7+0wm2LSFajgYVvGXDdG9p4abnP6YgZkQ9d60lwFB5Ek45YNqMRSo+ImItugIL?=\n\t=?utf-8?q?FPJOh9qUmyMEHbQcQPaDshf4FAd2tRWCBNF76GAhWi2/KynC1F6JXWd/2wKRr4ckR?=\n\t=?utf-8?q?RE+vGGqt6pdE4wKiRoD726ezxIsdnLVj/jIjCZ8XC6J5GJd0IfMwYICXGc0sfRJIV?=\n\t=?utf-8?q?LhlKpBn62JC4?=", "X-OriginatorOrg": "corigine.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 96bace3c-f150-4b20-a605-08da54bfe009", "X-MS-Exchange-CrossTenant-AuthSource": "DM6PR13MB3004.namprd13.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "23 Jun 2022 02:27:10.3374 (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 PNQET0Mzs1InzHpYt+Df2ClMoCI+MhDM9UX28xEhRtJrA1RSvzp+cqvG7Ikqb9CITLX1Hg+bZs4zAFWb/Qzs0Q==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "MN2PR13MB3535", "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": [ "v4", "07/13" ] }{ "id": 113288, "url": "