get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 112983,
    "url": "http://patches.dpdk.org/api/patches/112983/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220617093444.2004000-10-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-10-jin.liu@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220617093444.2004000-10-jin.liu@corigine.com",
    "date": "2022-06-17T09:34:40",
    "name": "[v3,09/13] net/nfp: nfdk netdev option and queue function",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "3ebaa1364e1c7c5fcf403ef56a53988d0b2d1b97",
    "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-10-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/112983/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/112983/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 4C8DEA0093;\n\tFri, 17 Jun 2022 11:36:21 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B76D342B7C;\n\tFri, 17 Jun 2022 11:35:38 +0200 (CEST)",
            "from NAM10-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam10on2096.outbound.protection.outlook.com [40.107.94.96])\n by mails.dpdk.org (Postfix) with ESMTP id 6372142B81\n for <dev@dpdk.org>; Fri, 17 Jun 2022 11:35:34 +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:32 +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:32 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=Qe32sNi6g7iPZf5D9/+R5f+Y7lcQ60CZJBRX5awZjvTPn9GfXMKh1a/Xs4Wg2+5Lc4L8bPnzgldWqyaaNAtKFN3JHh2YOqhDFW+Bk46jaM2lITErW1R1d907ac1sMJvdItAHb/2XT/DGyjVPwSANolVQ5W/EOd5bzgLm8aGXaAXxj9wH8qqSbfKE8sd6vkuwgis8iGOjYwE5orvQq1Xff6OmQQrwowaCo8YcMrh/sjnvvfH+ir3781gA2ajJPgMKLfx0FjEIOGCfDhACdCN/adw4wOHuks3jiUcbB4h4IcPTHxIZKtTvjz2Xdf/BRk8H+4NQQ/PO/ZMBne/BYNHURQ==",
        "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=MoQsr4EhxfQ9iPrVyE2HRtvLfTCzUUfA8wN0a82cIj8=;\n b=eCyuGY6klLumQ5bTJeH7Qdfsj32XtngsWektnoLBXYAm5LVfTmG1vvfzgAIW5C3CAAMerM1IcoPwJ+eo9IelNNbC4wyntgFAyGE9Y6T37JOtVvhuQSzXHf7qeGDlLDrdSYcyYM++9zyIUj7+tRBCdnPpWAsNkR2QO18U+iQe/yzgZU3T0ye717mUNSmOHTYUtQ4wOlffbAGMY+XDrSIFUoDCwHF4Zdqp4kTZcq4Dui9tEerHk6KHvEToY9+TyJ2hFEl+0r/JAzxHAr+yaKQSUkBPQN+o9ObkCSoXvLomSABSWA1slEIW4AwJeCSOFGQaPXPBPnVBi4hoSLHW2qIgAg==",
        "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=MoQsr4EhxfQ9iPrVyE2HRtvLfTCzUUfA8wN0a82cIj8=;\n b=jDiWoiaECLtGsNEkfN6dqfVMlmpvUgoS+rpc2cSDd0yI26Xx+eGb/19Im41U2ON8/DZpDgzAJ4E93yetbkDktWxc5tYzGasmkfaHvVXat9aVKHhoa0MORMoNttscNRgDqq2cNvVG4kEWmA+JG2kE7zpOgTxF3px3otHItGTH0sA=",
        "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 09/13] net/nfp: nfdk netdev option and queue function",
        "Date": "Fri, 17 Jun 2022 11:34:40 +0200",
        "Message-Id": "<20220617093444.2004000-10-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": "e5d3b5f8-f35b-46b2-5467-08da5044b94d",
        "X-MS-TrafficTypeDiagnostic": "CO3PR13MB5671:EE_",
        "X-Microsoft-Antispam-PRVS": "\n <CO3PR13MB5671023A84473BB1C5A18EC294AF9@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 Gaqj8f4scivtv5Hz43yri7xfN7WTJJ7txxDvmb2g5uLnvI4jBIKtGYP3k/vmybvMJorpMFUTfFtandgE8a5liav4pbzCtUx4fUJN7cVgiewexSzCBHk+C0Du0c1bLYkznjtZ86ZjxYkCH5trII0IxSaxuG6cczJyj13nKXigE7/+SLjudzH7SG/078pdTGzMbGcGnpzgbgAH/ZjQok7CFFUDa125XBytZ2QtVd6Ic7Dw+3PgTUz4XmeDU+f7zxqlhuxRsdcmbAkPvMH0B09pVPe4l/xZN3VwfxFU6Z8G67YFxlOBvzApDzyFmkP2qIGrGTr0TXgnzSXvnDLrilmcLS7t4dqFU/ZUGoDPATG273EjkAbqBdttEfBUOd9VwIXDLsdn7eJQErXkT1pjCrWBKa4GKtbAGfiAalNiy0xywc4VojCppUo8CO1IPcfWCuToW/ROBdQll5V5OG2fnARhHcgV7wqdYxrtMvOBWXmn76Nz656yHZRiPKazhaI2VoXbGnno8nH2Wq6OyAh85Ry8t0X4yQC8Y6SqpuH7LVRCkSmPo7++WNApoBI2Hq9LKqlIsMapIxW6JzPaXSdqY/Tj07/lO6odT2y4yKTCSykmJAWiGUVOuW79OkjH5Cf5bD2rg1fGJVq7f2S64efAVIR5pSn2MGi8VOiWeZi8N9F70vDbr/aq09rHOublmoVCItFHXdcThq5aMD5bwZ14AClx1l5MBQtq5hlH3ZKPIZCp6TcUOo7jJ1ypBm1Oql2VAO0H",
        "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)(66574015)(6666004)(107886003)(66946007)(6506007)(6916009)(44832011)(2906002)(316002)(4326008)(38350700002)(186003)(508600001)(54906003)(5660300002)(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?MSqZph6VjcFcYQT1rXH7UAYg4Vmm?=\n\t=?utf-8?q?hLzhJvJLaHvcl0aPJOewxwPzbSCb+xvbBP/HqYbUNJ+P2OipN03prvJBbXbu6Am3T?=\n\t=?utf-8?q?K0BQtG+V1BbV68VGzivAM+nTh0QKfiyDc1i78HhDW3zZ31OnWDuiG32cxwXeG7xLG?=\n\t=?utf-8?q?m1Sszus+q+KyNk9KYA4r5IZuFFnEvFhVsGwtg8Lz6V7qzBbSfVkmg18W2bsFwN96+?=\n\t=?utf-8?q?J1nixHfcyHlVAFEiSAuOVdmxm6+j1d14ES0cAz47h5GoMAF7gUHdKsdrl0eg67aZE?=\n\t=?utf-8?q?uGaUevpGJVS7E8rmWhClRM1X476uWu+AA9jW8HEwGUfJwHcZmPFvehmsnkFqwQJ+8?=\n\t=?utf-8?q?FF4WPs8O5nq6ySESKviQZgGfxlOfBisL/QeZa7B123vK22lhYSAs1dsHoF4LZfaN0?=\n\t=?utf-8?q?RhucqP1UX3iBbeE/vIEg96rnOJd3zvQCrdRw65iB/sjDWbZdzV8iMZcMWwXA7TU8G?=\n\t=?utf-8?q?nMe6KPxABHluSyow2OSCJivTWp1HhFaS+jocJaCpmijiDARWbCEApK45j9c1Vvrgd?=\n\t=?utf-8?q?EYFj3WW7NTc6QW8SiZC4qO+bLcOa/6VbByhG7Q0I3qlzhPg2GWG36/Tu41z0+eZVz?=\n\t=?utf-8?q?Lj6Il82PAXnetJAoJRR2UTCnViJzaMUaDylrTqZkwvgAAarnTaqs+C5k5tOtUhrl9?=\n\t=?utf-8?q?Zwmz97hQCbRePbapJ0SC+cK2UbiPCXqeXh9ocWcjuWkE1BDZDTDocLkXsu1E7eV04?=\n\t=?utf-8?q?/AdsDvdvAIKWzHiyc5Rtpy1rHlO1g9BrARPgXHhUeX7a9U3kFV+FQhCkxnzyMkwPd?=\n\t=?utf-8?q?iIo8rYZXS9tHqelW/BTiE0Y2DriBAxu+Gc3T6oHK4vF4Vs6KYO9fW3vHkgBKZZdf+?=\n\t=?utf-8?q?3Xy25r355J7vTqQAtSj0MbgRPIkxX8n6bCGubThFihzjB2dGEdJNUHShTh6gfmHdJ?=\n\t=?utf-8?q?wk7dPK1SPQIjwfJ0wcOomYhYh36ytkVqOshQffa7HFXu4Wy3FbVfD8ruCJ2gpL+l6?=\n\t=?utf-8?q?dYfBdnWa3eyHoZU3UNtZwn3oX7HWCfvXnD2fBUZ5rqS/BuCCrXPiSDsfiYb0/LX0r?=\n\t=?utf-8?q?8VOkZszFAGy0ZJvDhbtdel+GQ4RHX1Jncz+ZmlIT9RDhgF4DTQY11TqSNGFjt1peN?=\n\t=?utf-8?q?BMkPVkLzBs+q19NID8rf3TY7pALO7R1dNDjmb+adNRWgp3wWOJ2ynjWsXiPsNxkB3?=\n\t=?utf-8?q?U+HcwIjpTwlDt6QrhR7FGx2SX033DjS+/dB/26H+4WeWa80j7bWLoiFWg0TD65s/y?=\n\t=?utf-8?q?FCdlxmsXQ/XY7SGLf1pYLg/jhZjdE1dnUhhf2fQos1IaRGoaFOne6Kvl9SA6aBEMr?=\n\t=?utf-8?q?QaDTJfu1vyFcFFp7C/YdaDmXtirVZECtbsaTb9BPNWW98OKUgOOGXJXWYkp6miAx9?=\n\t=?utf-8?q?8yYZ9DAkpd9dayEyN3S7BKP6ew+QuwJLUOWap4lYD9IBglZzsfbKTPWWEArWqTPvu?=\n\t=?utf-8?q?PhJ37f6h7c1fGuTeDjpaTwsTcrylB8MG+d5onYeNmiGDHSxn+aRcsdMMKVhFo9gQE?=\n\t=?utf-8?q?s81rqk168p65LbHiHLsSJKOwGw1dSliqeaTbUCIulpaxNcbMUiPuPg7QokyEFKZGK?=\n\t=?utf-8?q?MGZIbut1IVEcB5qaj13fg0TOXrYhUtLqdZGVrJWTVDSWzXO9doXQ0c+96/v3mafZa?=\n\t=?utf-8?q?x78pfPCwX8r3EK0HK9RSoiKTAiOjSA6SE4uvuog+EMQkK0FLAtxE7Vp8BEASga6CK?=\n\t=?utf-8?q?DIV1l+nHtwuQiqvtMzLj82b9CgxpgOVA=3D=3D?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n e5d3b5f8-f35b-46b2-5467-08da5044b94d",
        "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:32.6947 (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 8Qnt/nc8QvTBdle+w/xTsSdvEru3Qlp9HnY598xD3ZR+swg7YUkzNfQD2gljuCJ2psznC2RufdpCdPjzzdOEEg==",
        "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": "Add ethdev option for firmware with NFDk, implement tx_queue setup\nfunction for firmware with NFDk.\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 drivers/net/nfp/nfp_ethdev.c    |  32 ++++++++-\n drivers/net/nfp/nfp_ethdev_vf.c |  32 ++++++++-\n drivers/net/nfp/nfp_rxtx.c      | 117 ++++++++++++++++++++++++++++++++\n drivers/net/nfp/nfp_rxtx.h      |   5 ++\n 4 files changed, 184 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c\nindex 1bbba9187e..0d650efd27 100644\n--- a/drivers/net/nfp/nfp_ethdev.c\n+++ b/drivers/net/nfp/nfp_ethdev.c\n@@ -358,11 +358,41 @@ 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 const struct eth_dev_ops nfp_net_nfdk_eth_dev_ops = {\n+\t.dev_configure\t\t= nfp_net_configure,\n+\t.dev_start\t\t= nfp_net_start,\n+\t.dev_stop\t\t= nfp_net_stop,\n+\t.dev_set_link_up\t= nfp_net_set_link_up,\n+\t.dev_set_link_down\t= nfp_net_set_link_down,\n+\t.dev_close\t\t= nfp_net_close,\n+\t.promiscuous_enable\t= nfp_net_promisc_enable,\n+\t.promiscuous_disable\t= nfp_net_promisc_disable,\n+\t.link_update\t\t= nfp_net_link_update,\n+\t.stats_get\t\t= nfp_net_stats_get,\n+\t.stats_reset\t\t= nfp_net_stats_reset,\n+\t.dev_infos_get\t\t= nfp_net_infos_get,\n+\t.dev_supported_ptypes_get = nfp_net_supported_ptypes_get,\n+\t.mtu_set\t\t= nfp_net_dev_mtu_set,\n+\t.mac_addr_set\t\t= nfp_net_set_mac_addr,\n+\t.vlan_offload_set\t= nfp_net_vlan_offload_set,\n+\t.reta_update\t\t= nfp_net_reta_update,\n+\t.reta_query\t\t= nfp_net_reta_query,\n+\t.rss_hash_update\t= nfp_net_rss_hash_update,\n+\t.rss_hash_conf_get\t= nfp_net_rss_hash_conf_get,\n+\t.rx_queue_setup\t\t= nfp_net_rx_queue_setup,\n+\t.rx_queue_release\t= nfp_net_rx_queue_release,\n+\t.tx_queue_setup\t\t= nfp_net_nfdk_tx_queue_setup,\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+};\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\teth_dev->dev_ops = &nfp_net_nfd3_eth_dev_ops;\n \t\tbreak;\n \tcase NFP_NET_CFG_VERSION_DP_NFDK:\n \t\tif (NFD_CFG_MAJOR_VERSION_of(hw->ver) < 5) {\n@@ -370,13 +400,13 @@ nfp_net_ethdev_ops_mount(struct nfp_net_hw *hw, struct rte_eth_dev *eth_dev)\n \t\t\t\tNFD_CFG_MAJOR_VERSION_of(hw->ver));\n \t\t\treturn -EINVAL;\n \t\t}\n+\t\teth_dev->dev_ops = &nfp_net_nfdk_eth_dev_ops;\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;\ndiff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c\nindex 0b4660aba6..2342f44523 100644\n--- a/drivers/net/nfp/nfp_ethdev_vf.c\n+++ b/drivers/net/nfp/nfp_ethdev_vf.c\n@@ -265,11 +265,41 @@ 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 const struct eth_dev_ops nfp_netvf_nfdk_eth_dev_ops = {\n+\t.dev_configure\t\t= nfp_net_configure,\n+\t.dev_start\t\t= nfp_netvf_start,\n+\t.dev_stop\t\t= nfp_netvf_stop,\n+\t.dev_set_link_up\t= nfp_netvf_set_link_up,\n+\t.dev_set_link_down\t= nfp_netvf_set_link_down,\n+\t.dev_close\t\t= nfp_netvf_close,\n+\t.promiscuous_enable\t= nfp_net_promisc_enable,\n+\t.promiscuous_disable\t= nfp_net_promisc_disable,\n+\t.link_update\t\t= nfp_net_link_update,\n+\t.stats_get\t\t= nfp_net_stats_get,\n+\t.stats_reset\t\t= nfp_net_stats_reset,\n+\t.dev_infos_get\t\t= nfp_net_infos_get,\n+\t.dev_supported_ptypes_get = nfp_net_supported_ptypes_get,\n+\t.mtu_set\t\t= nfp_net_dev_mtu_set,\n+\t.mac_addr_set\t\t= nfp_net_set_mac_addr,\n+\t.vlan_offload_set\t= nfp_net_vlan_offload_set,\n+\t.reta_update\t\t= nfp_net_reta_update,\n+\t.reta_query\t\t= nfp_net_reta_query,\n+\t.rss_hash_update\t= nfp_net_rss_hash_update,\n+\t.rss_hash_conf_get\t= nfp_net_rss_hash_conf_get,\n+\t.rx_queue_setup\t\t= nfp_net_rx_queue_setup,\n+\t.rx_queue_release\t= nfp_net_rx_queue_release,\n+\t.tx_queue_setup\t\t= nfp_net_nfdk_tx_queue_setup,\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+};\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\teth_dev->dev_ops = &nfp_netvf_nfd3_eth_dev_ops;\n \t\tbreak;\n \tcase NFP_NET_CFG_VERSION_DP_NFDK:\n \t\tif (NFD_CFG_MAJOR_VERSION_of(hw->ver) < 5) {\n@@ -277,13 +307,13 @@ nfp_netvf_ethdev_ops_mount(struct nfp_net_hw *hw, struct rte_eth_dev *eth_dev)\n \t\t\t\tNFD_CFG_MAJOR_VERSION_of(hw->ver));\n \t\t\treturn -EINVAL;\n \t\t}\n+\t\teth_dev->dev_ops = &nfp_netvf_nfdk_eth_dev_ops;\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;\ndiff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c\nindex 9b769c9775..4f422c5090 100644\n--- a/drivers/net/nfp/nfp_rxtx.c\n+++ b/drivers/net/nfp/nfp_rxtx.c\n@@ -987,3 +987,120 @@ nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pk\n \n \treturn i;\n }\n+\n+int\n+nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,\n+\t\tuint16_t queue_idx,\n+\t\tuint16_t nb_desc,\n+\t\tunsigned int socket_id,\n+\t\tconst struct rte_eth_txconf *tx_conf)\n+{\n+\tconst struct rte_memzone *tz;\n+\tstruct nfp_net_txq *txq;\n+\tuint16_t tx_free_thresh;\n+\tstruct nfp_net_hw *hw;\n+\tuint32_t tx_desc_sz;\n+\n+\thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\n+\tPMD_INIT_FUNC_TRACE();\n+\n+\t/* Validating number of descriptors */\n+\ttx_desc_sz = nb_desc * sizeof(struct nfp_net_nfdk_tx_desc);\n+\tif (((NFDK_TX_DESC_PER_SIMPLE_PKT * tx_desc_sz) % NFP_ALIGN_RING_DESC) != 0 ||\n+\t    ((NFDK_TX_DESC_PER_SIMPLE_PKT * nb_desc) % NFDK_TX_DESC_BLOCK_CNT) != 0 ||\n+\t      nb_desc > NFP_NET_MAX_TX_DESC || nb_desc < NFP_NET_MIN_TX_DESC) {\n+\t\tPMD_DRV_LOG(ERR, \"Wrong nb_desc value\");\n+\t\treturn -EINVAL;\n+\t}\n+\n+\ttx_free_thresh = (uint16_t)((tx_conf->tx_free_thresh) ?\n+\t\t\t\ttx_conf->tx_free_thresh :\n+\t\t\t\tDEFAULT_TX_FREE_THRESH);\n+\n+\tif (tx_free_thresh > (nb_desc)) {\n+\t\tPMD_DRV_LOG(ERR,\n+\t\t\t\"tx_free_thresh must be less than the number of TX \"\n+\t\t\t\"descriptors. (tx_free_thresh=%u port=%d \"\n+\t\t\t\"queue=%d)\", (unsigned int)tx_free_thresh,\n+\t\t\tdev->data->port_id, (int)queue_idx);\n+\t\treturn -(EINVAL);\n+\t}\n+\n+\t/*\n+\t * Free memory prior to re-allocation if needed. This is the case after\n+\t * calling nfp_net_stop\n+\t */\n+\tif (dev->data->tx_queues[queue_idx]) {\n+\t\tPMD_TX_LOG(DEBUG, \"Freeing memory prior to re-allocation %d\",\n+\t\t\t\tqueue_idx);\n+\t\tnfp_net_tx_queue_release(dev, queue_idx);\n+\t\tdev->data->tx_queues[queue_idx] = NULL;\n+\t}\n+\n+\t/* Allocating tx queue data structure */\n+\ttxq = rte_zmalloc_socket(\"ethdev TX queue\", sizeof(struct nfp_net_txq),\n+\t\t\tRTE_CACHE_LINE_SIZE, socket_id);\n+\tif (txq == NULL) {\n+\t\tPMD_DRV_LOG(ERR, \"Error allocating tx dma\");\n+\t\treturn -ENOMEM;\n+\t}\n+\n+\t/*\n+\t * Allocate TX ring hardware descriptors. A memzone large enough to\n+\t * handle the maximum ring size is allocated in order to allow for\n+\t * resizing in later calls to the queue setup function.\n+\t */\n+\ttz = rte_eth_dma_zone_reserve(dev, \"tx_ring\", queue_idx,\n+\t\t\t\tsizeof(struct nfp_net_nfdk_tx_desc) *\n+\t\t\t\tNFDK_TX_DESC_PER_SIMPLE_PKT *\n+\t\t\t\tNFP_NET_MAX_TX_DESC, NFP_MEMZONE_ALIGN,\n+\t\t\t\tsocket_id);\n+\tif (tz == NULL) {\n+\t\tPMD_DRV_LOG(ERR, \"Error allocating tx dma\");\n+\t\tnfp_net_tx_queue_release(dev, queue_idx);\n+\t\treturn -ENOMEM;\n+\t}\n+\n+\ttxq->tx_count = nb_desc * NFDK_TX_DESC_PER_SIMPLE_PKT;\n+\ttxq->tx_free_thresh = tx_free_thresh;\n+\ttxq->tx_pthresh = tx_conf->tx_thresh.pthresh;\n+\ttxq->tx_hthresh = tx_conf->tx_thresh.hthresh;\n+\ttxq->tx_wthresh = tx_conf->tx_thresh.wthresh;\n+\n+\t/* queue mapping based on firmware configuration */\n+\ttxq->qidx = queue_idx;\n+\ttxq->tx_qcidx = queue_idx * hw->stride_tx;\n+\ttxq->qcp_q = hw->tx_bar + NFP_QCP_QUEUE_OFF(txq->tx_qcidx);\n+\n+\ttxq->port_id = dev->data->port_id;\n+\n+\t/* Saving physical and virtual addresses for the TX ring */\n+\ttxq->dma = (uint64_t)tz->iova;\n+\ttxq->ktxds = (struct nfp_net_nfdk_tx_desc *)tz->addr;\n+\n+\t/* mbuf pointers array for referencing mbufs linked to TX descriptors */\n+\ttxq->txbufs = rte_zmalloc_socket(\"txq->txbufs\",\n+\t\t\t\tsizeof(*txq->txbufs) * txq->tx_count,\n+\t\t\t\tRTE_CACHE_LINE_SIZE, socket_id);\n+\n+\tif (txq->txbufs == NULL) {\n+\t\tnfp_net_tx_queue_release(dev, queue_idx);\n+\t\treturn -ENOMEM;\n+\t}\n+\tPMD_TX_LOG(DEBUG, \"txbufs=%p hw_ring=%p dma_addr=0x%\" PRIx64,\n+\t\ttxq->txbufs, txq->ktxds, (unsigned long)txq->dma);\n+\n+\tnfp_net_reset_tx_queue(txq);\n+\n+\tdev->data->tx_queues[queue_idx] = txq;\n+\ttxq->hw = hw;\n+\t/*\n+\t * Telling the HW about the physical address of the TX ring and number\n+\t * of descriptors in log2 format\n+\t */\n+\tnn_cfg_writeq(hw, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma);\n+\tnn_cfg_writeb(hw, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(txq->tx_count));\n+\n+\treturn 0;\n+}\ndiff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h\nindex 106980b9a7..ba8ffbd1ff 100644\n--- a/drivers/net/nfp/nfp_rxtx.h\n+++ b/drivers/net/nfp/nfp_rxtx.h\n@@ -347,6 +347,11 @@ int nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,\n \t\t\t\t  const struct rte_eth_txconf *tx_conf);\n uint16_t nfp_net_nfd3_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n \t\t\t\t  uint16_t nb_pkts);\n+int nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,\n+\t\tuint16_t queue_idx,\n+\t\tuint16_t nb_desc,\n+\t\tunsigned int socket_id,\n+\t\tconst struct rte_eth_txconf *tx_conf);\n \n #endif /* _NFP_RXTX_H_ */\n /*\n",
    "prefixes": [
        "v3",
        "09/13"
    ]
}