get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 128241,
    "url": "http://patchwork.dpdk.org/api/patches/128241/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20230607015709.336420-7-chaoyong.he@corigine.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20230607015709.336420-7-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230607015709.336420-7-chaoyong.he@corigine.com",
    "date": "2023-06-07T01:57:05",
    "name": "[06/10] net/nfp: add the xmit function of NFDk for ctrl VNIC",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "6483f0aa723f09b5e3435091e5d955f924592d39",
    "submitter": {
        "id": 2554,
        "url": "http://patchwork.dpdk.org/api/people/2554/?format=api",
        "name": "Chaoyong He",
        "email": "chaoyong.he@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20230607015709.336420-7-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 28380,
            "url": "http://patchwork.dpdk.org/api/series/28380/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=28380",
            "date": "2023-06-07T01:56:59",
            "name": "support rte_flow for flower firmware with NFDk",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/28380/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/128241/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/128241/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 B811242C45;\n\tWed,  7 Jun 2023 03:58:38 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id DD0E142D38;\n\tWed,  7 Jun 2023 03:58:06 +0200 (CEST)",
            "from NAM11-CO1-obe.outbound.protection.outlook.com\n (mail-co1nam11on2107.outbound.protection.outlook.com [40.107.220.107])\n by mails.dpdk.org (Postfix) with ESMTP id 07DC842D4B\n for <dev@dpdk.org>; Wed,  7 Jun 2023 03:58:05 +0200 (CEST)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by PH7PR13MB5453.namprd13.prod.outlook.com (2603:10b6:510:138::5)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.33; Wed, 7 Jun\n 2023 01:58:03 +0000",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::d2cb:a650:e1ce:2174]) by SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::d2cb:a650:e1ce:2174%3]) with mapi id 15.20.6455.030; Wed, 7 Jun 2023\n 01:58:03 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=ks4jjV1shBSRz8ltN4RKfHHohn+4FF5L892dd0Oc5Jb1TNxsOxdQfC2XlR2plf6k9ZNqHirNGZbhifnaMhYfOlEOe9xixNuE/gv3Xjuxjq7+bfobbYWmW856o7m49QwsbV1Z6bn4uPzURMwqE6goCl+bx5VGhMmSgH5tiJVYKF+AZM2ymvU0kFtkbsRW9HmoTE/vZ/hMZ3sxFKsKXFN96m4qQQn3+P5qZW3HeiFrADmyfE48sgwoxyOzVxzyPi9nifaGM+BlhgqV8OOWjudKT+oAAA3C9RfVAAxRZdCpN870liUIt/MTk/OHV2+KZdYcYuQZJvbFSEXDrDWWqtMylw==",
        "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=ORAqiyXYpYTjrDA7OPWWBxfZkMgncqSdyt5HOOxFRvU=;\n b=ILq1YDlRut6a0pBV43Y39dhjZj+nT/tWhoEtvUv0t7nxyyq15vE3Yail2g4IfjdheGRSGZKRvKrMUIQSfR1rH6HWcRxrZQ6hxQLUOyk8X6I3/xPh+PL8oRNuHDKNKx+OTLIIi+fl3trpr2HXpIs/KPpTC3qzVi1EJ6XsLhU+8GBwJnEh9uU2oVD5FchhaVhqKDxJPlFYngPXyy8TuT6wSgVp94WNSF40sbTY/4s4GBRxp19wcK0ANB/QVBVVmX/n+87w9HJNU/1XA76v70xFk5ArsmWQ3Ii++2VJTfZl5iLQbsjXunxCJgqqgwHYZJo3PzqeiluPyD/tYcFP4dmaeg==",
        "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=ORAqiyXYpYTjrDA7OPWWBxfZkMgncqSdyt5HOOxFRvU=;\n b=doscEb22wgnYh94cb+OkSMhCxXiJlNdaDEHbZvagETyu3Lx60EFe03XwezZWiI6KlVfyAR189T0b/XaiKzeGvZy7iYtasj7aOfnDDF+6gCV5TVyhnjGOMj1UrbjMcW0cIZrdqhbXopHwB+AFU18ZXT3HcfFt3iJQjnV2eSKt3K0=",
        "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 06/10] net/nfp: add the xmit function of NFDk for ctrl VNIC",
        "Date": "Wed,  7 Jun 2023 09:57:05 +0800",
        "Message-Id": "<20230607015709.336420-7-chaoyong.he@corigine.com>",
        "X-Mailer": "git-send-email 2.39.1",
        "In-Reply-To": "<20230607015709.336420-1-chaoyong.he@corigine.com>",
        "References": "<20230607015709.336420-1-chaoyong.he@corigine.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "SG2PR02CA0131.apcprd02.prod.outlook.com\n (2603:1096:4:188::6) 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_|PH7PR13MB5453:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "1dc6d8ea-0ce1-43a9-2ffb-08db66faa111",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n c/62Rv0v0T7jxlNSao3nndczmleTbTGf31SRkyZiTZ5f+z3ixs+J5Ro++4Th+7jgIAL8jdqPlHAq0Je0F1iHBJJwtFXjQTS+SLt93CJVa1hAtJDhEZP/4sRVANCrXKvqGcVNJUdK2l0tofzR3VAS5eNBAWC4imvttOxgqOOPwCsx9HtTDjSaYz7mBtpPHS3/knn3Z4+fLiKxMDNXdvxfJAVMoG+WPKmBMde3P6EYbMBA235FpY/dmAW0fVdBMFm9bgsWV3GHEBdQaO6WZ+0emTkRVIObhZhUIt/18b8bg99YIAKFkJGLnXpcGOE2kEfD/TedIA2+4EJe3x5AhtU+/HuYxJnmofrvlWr+BXKKMWsJ4Ug4qNgAKZ0LPQTuQeggXUP1qKsmhH/oOh7/lIqtMP9Cz7akD4XiJVdxgoK8FO3GMLW8mQAUX4c1weq/7zq6lHS447nNleHGuQS10Jv/VSXZlNfdCCpgajqom8uxJHzZNDNdBhcenGVLRQxwqr/+B86EhYErGjp7li3yLQi1E1XvgmvY7fH2SBandHw+OhWVVPBe88SR3KbiCrjT3zQ2bGdMyKcsLd3QalS4s5nhAc3fWpFbfHbhYzkAl0ioqmXQKweCWizSLPYZji8ZaYNI",
        "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)(346002)(396003)(376002)(136003)(366004)(39840400004)(451199021)(107886003)(1076003)(6506007)(26005)(6512007)(36756003)(66574015)(83380400001)(38350700002)(86362001)(38100700002)(186003)(2616005)(8676002)(4326008)(41300700001)(44832011)(6916009)(478600001)(66946007)(66476007)(2906002)(316002)(8936002)(5660300002)(6486002)(52116002)(66556008);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?mh202Yyk2of9s94ZoQg9GUL1on/Z?=\n\t=?utf-8?q?ayvhzlvadRPIlFGj7XgfPb0Us8frdEacqjPl7o8ldHbHuf7O+TzwWr2+wAMIa4NRc?=\n\t=?utf-8?q?UqVUOUYftw/gqRh0vqD1w4YYctmQ7bbtRMGbaaZ3NmTqdTKEwWbbvn8W1gmhfK8JB?=\n\t=?utf-8?q?KDFiGnVf/eEqb63hr22e66Ykx8N/KqC7FvJMRVApvWQawVhhrbGZxi8NMpZ5wvnk+?=\n\t=?utf-8?q?V/XoiCCufIKyAkGjtTX94KiAtT4Eqgcxr5DbSrJKAlV/A2zREqLxU0Sy62ad98J4k?=\n\t=?utf-8?q?UZOkbQI6r9LDt4PMepTM1Mvof/SdInFj73o1HAOqYKR/cpc3+yJg7MKmoZeecLiLh?=\n\t=?utf-8?q?puUha0B9z9G6S+aL+uY9/1xMQ9kGrCOpWWCs93rmJQFe0BAZa2cwewFsqBFCutmbs?=\n\t=?utf-8?q?i+pvCm79PX0x1JxaO990u1wypOA1ZK4v8uhS+6lwH9J0TfQ58q1Un+/ME+SjqZuE+?=\n\t=?utf-8?q?jmWkKQj0JEAdYr93U9euQoXacXkzgFoP72Vx8wVfZtDuzRhiuKdrvxjzGuurGc5Yv?=\n\t=?utf-8?q?CBc27wDsSFM+G+35Bf5/Wnci6StkNGoxit+Lhl3fLCNEN1wRf8ODeFVz+TMQgzUoU?=\n\t=?utf-8?q?/Jt823Krm5F8q2bOq8qP+3Md2YzST2Rafb3mRppBh71K3xSQaE65OXLc2Wks8x3FN?=\n\t=?utf-8?q?VhYcqpOo4wPB2Wt0cRx+ULoRs1cPHggw/kD8yqjBfHV3dPhRirhVRh6W6OZL7kelM?=\n\t=?utf-8?q?SJ43KcwPBHyAh24xwIcuZdwzHCbZoE7OZRVJjClo4nwp9RZy4k0Jq5AlYA9u1q4JP?=\n\t=?utf-8?q?4EVC371Cxl6ISdvOWfc44fqFEqK5I2cEkd9HWZrEAENoI0O/L0+w89WTi5muBiCL7?=\n\t=?utf-8?q?+98qIYaZIDejzu9UoHkH3/m3UqJ3t/cYN4R3n2XNBWfuDSb3wJWQBz5ZmqS38a3on?=\n\t=?utf-8?q?4/oUO86W5b/hG/l0YyhtBb8Pv5NFjM7ukEeysdZx7rHXy2hFrX88le7sSRjxwYlLD?=\n\t=?utf-8?q?NxBZN38xJMws97wlxKpN0VcAdi5GlHZTGDbF1XBR9UvzB0Bp2xvkJnBPrfQaWRlaE?=\n\t=?utf-8?q?HNvdaHbALrC3YvFuoaScYRseK/dl0HlKEiIRLhJ5OsW/g5xEPPUU5BjC1VbIY5f23?=\n\t=?utf-8?q?qiZ/6YN06Qn+cpLR4nmZFm6JVmsxVThTFxDvFRH2EA/78IN9upZH+mN3qeQ9cI1hN?=\n\t=?utf-8?q?RWVDr4/DX9pyHEHkTZ6kM2v1rDlSrYvwZxQbA0O08di6OZl9aTDV9xNAwrzH4W3fo?=\n\t=?utf-8?q?TUkNMCZFxLixAJ8VNgGukR+9M2B8I034fx6RmyKXp5aAPIdEL2l9moaR+6oaUUgAw?=\n\t=?utf-8?q?aBDS+66ALS0kU9P+SSHogW0qPJH/K6TkwgfFwPhlBjEKNyu8yP8Y3kyG2rTJYjuY3?=\n\t=?utf-8?q?72ZircPa6Rl7qisHjLX7cr7joEwGmd3SS0W5MBJGLzec4B9kjvpdzCU3Em4UDBYN2?=\n\t=?utf-8?q?5y4JbFK0Bt3GiA3bVFXucu2pzX5LOmiKIaXBUxgd+pjV0VrV43DDD9zG/B6KqxAce?=\n\t=?utf-8?q?ItBmd8VhIiaJYPsrcak+VF73P48x7GMGosF+H334/KO/dvUEP87nlmTTIIfRcfiKl?=\n\t=?utf-8?q?hvLTmJPIW/cUjra28kR2AU/p+ImxJ2WD1w=3D=3D?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 1dc6d8ea-0ce1-43a9-2ffb-08db66faa111",
        "X-MS-Exchange-CrossTenant-AuthSource": "SJ0PR13MB5545.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "07 Jun 2023 01:58:03.5256 (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 SaLNRp4up5rjDu0JwEVsWXlVsemEHdnbsMYii0JB6eOLavGdf9Ou1dFsjBV0C/Uq5T5R5nZAQ5O9du9cZ+o1uPgG68pg12CI6CNT7BWLGhI=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PH7PR13MB5453",
        "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 the xmit function of NFDk for ctrl VNIC.\n\nSigned-off-by: Chaoyong He <chaoyong.he@corigine.com>\nReviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>\n---\n drivers/net/nfp/flower/nfp_flower_ctrl.c | 138 ++++++++++++++++++++++-\n drivers/net/nfp/nfdk/nfp_nfdk.h          |   2 +\n drivers/net/nfp/nfdk/nfp_nfdk_dp.c       |   2 +-\n 3 files changed, 140 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c\nindex bafcf5b017..0be44a68aa 100644\n--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c\n+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c\n@@ -12,6 +12,7 @@\n #include \"../nfp_ctrl.h\"\n #include \"../nfp_rxtx.h\"\n #include \"../nfd3/nfp_nfd3.h\"\n+#include \"../nfdk/nfp_nfdk.h\"\n #include \"nfp_flower.h\"\n #include \"nfp_flower_ctrl.h\"\n #include \"nfp_flower_cmsg.h\"\n@@ -224,14 +225,149 @@ nfp_flower_ctrl_vnic_nfd3_xmit(struct nfp_app_fw_flower *app_fw_flower,\n \treturn cnt;\n }\n \n+static uint16_t\n+nfp_flower_ctrl_vnic_nfdk_xmit(struct nfp_app_fw_flower *app_fw_flower,\n+\t\tstruct rte_mbuf *mbuf)\n+{\n+\tint nop_descs;\n+\tuint32_t type;\n+\tuint32_t dma_len;\n+\tuint32_t tmp_dlen;\n+\tuint64_t dma_addr;\n+\tuint32_t dlen_type;\n+\tuint32_t used_descs;\n+\tuint32_t free_descs;\n+\tstruct rte_mbuf **lmbuf;\n+\tstruct nfp_net_txq *txq;\n+\tuint32_t issued_descs = 0;\n+\tstruct rte_eth_dev *ctrl_dev;\n+\tstruct nfp_net_nfdk_tx_desc *ktxds;\n+\n+\tctrl_dev = app_fw_flower->ctrl_hw->eth_dev;\n+\n+\t/* Flower ctrl vNIC only has a single tx queue */\n+\ttxq = ctrl_dev->data->tx_queues[0];\n+\n+\tif (unlikely(mbuf->nb_segs > 1)) {\n+\t\tPMD_TX_LOG(ERR, \"Multisegment packet not supported\");\n+\t\treturn 0;\n+\t}\n+\n+\tif (nfp_net_nfdk_free_tx_desc(txq) < NFDK_TX_DESC_PER_SIMPLE_PKT ||\n+\t\t\tnfp_net_nfdk_txq_full(txq))\n+\t\tnfp_net_tx_free_bufs(txq);\n+\n+\tfree_descs = nfp_net_nfdk_free_tx_desc(txq);\n+\tif (unlikely(free_descs < NFDK_TX_DESC_PER_SIMPLE_PKT)) {\n+\t\tPMD_TX_LOG(ERR, \"ctrl dev no free descs\");\n+\t\treturn 0;\n+\t}\n+\n+\tnop_descs = nfp_net_nfdk_tx_maybe_close_block(txq, mbuf);\n+\tif (nop_descs < 0)\n+\t\treturn 0;\n+\n+\tissued_descs += nop_descs;\n+\tktxds = &txq->ktxds[txq->wr_p];\n+\n+\t/*\n+\t * Checksum and VLAN flags just in the first descriptor for a\n+\t * multisegment packet, but TSO info needs to be in all of them.\n+\t */\n+\tdma_len = mbuf->data_len;\n+\tif (dma_len <= NFDK_TX_MAX_DATA_PER_HEAD)\n+\t\ttype = NFDK_DESC_TX_TYPE_SIMPLE;\n+\telse\n+\t\ttype = NFDK_DESC_TX_TYPE_GATHER;\n+\n+\t/* Implicitly truncates to chunk in below logic */\n+\tdma_len -= 1;\n+\n+\t/*\n+\t * We will do our best to pass as much data as we can in descriptor\n+\t * and we need to make sure the first descriptor includes whole\n+\t * head since there is limitation in firmware side. Sometimes the\n+\t * value of 'dma_len & NFDK_DESC_TX_DMA_LEN_HEAD' will be less\n+\t * than packet head len.\n+\t */\n+\tif (dma_len > NFDK_DESC_TX_DMA_LEN_HEAD)\n+\t\tdma_len = NFDK_DESC_TX_DMA_LEN_HEAD;\n+\tdlen_type = dma_len | (NFDK_DESC_TX_TYPE_HEAD & (type << 12));\n+\tktxds->dma_len_type = rte_cpu_to_le_16(dlen_type);\n+\tdma_addr = rte_mbuf_data_iova(mbuf);\n+\tktxds->dma_addr_hi = rte_cpu_to_le_16(dma_addr >> 32);\n+\tktxds->dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff);\n+\tktxds++;\n+\n+\t/*\n+\t * Preserve the original dlen_type, this way below the EOP logic\n+\t * can use dlen_type.\n+\t */\n+\ttmp_dlen = dlen_type & NFDK_DESC_TX_DMA_LEN_HEAD;\n+\tdma_len -= tmp_dlen;\n+\tdma_addr += tmp_dlen + 1;\n+\n+\t/*\n+\t * The rest of the data (if any) will be in larger DMA descriptors\n+\t * and is handled with the dma_len loop.\n+\t */\n+\tlmbuf = &txq->txbufs[txq->wr_p].mbuf;\n+\tif (*lmbuf != NULL)\n+\t\trte_pktmbuf_free_seg(*lmbuf);\n+\t*lmbuf = mbuf;\n+\twhile (dma_len > 0) {\n+\t\tdma_len -= 1;\n+\t\tdlen_type = NFDK_DESC_TX_DMA_LEN & dma_len;\n+\n+\t\tktxds->dma_len_type = rte_cpu_to_le_16(dlen_type);\n+\t\tktxds->dma_addr_hi = rte_cpu_to_le_16(dma_addr >> 32);\n+\t\tktxds->dma_addr_lo = rte_cpu_to_le_32(dma_addr & 0xffffffff);\n+\t\tktxds++;\n+\n+\t\tdma_len -= dlen_type;\n+\t\tdma_addr += dlen_type + 1;\n+\t}\n+\n+\t(ktxds - 1)->dma_len_type = rte_cpu_to_le_16(dlen_type | NFDK_DESC_TX_EOP);\n+\n+\tktxds->raw = rte_cpu_to_le_64(NFDK_DESC_TX_CHAIN_META);\n+\tktxds++;\n+\n+\tused_descs = ktxds - txq->ktxds - txq->wr_p;\n+\tif (RTE_ALIGN_FLOOR(txq->wr_p, NFDK_TX_DESC_BLOCK_CNT) !=\n+\t\t\tRTE_ALIGN_FLOOR(txq->wr_p + used_descs - 1, NFDK_TX_DESC_BLOCK_CNT)) {\n+\t\tPMD_TX_LOG(INFO, \"Used descs cross block boundary\");\n+\t\treturn 0;\n+\t}\n+\n+\ttxq->wr_p = D_IDX(txq, txq->wr_p + used_descs);\n+\tif (txq->wr_p % NFDK_TX_DESC_BLOCK_CNT)\n+\t\ttxq->data_pending += mbuf->pkt_len;\n+\telse\n+\t\ttxq->data_pending = 0;\n+\n+\tissued_descs += used_descs;\n+\n+\t/* Increment write pointers. Force memory write before we let HW know */\n+\trte_wmb();\n+\tnfp_qcp_ptr_add(txq->qcp_q, NFP_QCP_WRITE_PTR, issued_descs);\n+\n+\treturn 1;\n+}\n+\n void\n nfp_flower_ctrl_vnic_xmit_register(struct nfp_app_fw_flower *app_fw_flower)\n {\n+\tstruct nfp_net_hw *hw;\n \tstruct nfp_flower_nfd_func *nfd_func;\n \n+\thw = app_fw_flower->pf_hw;\n \tnfd_func = &app_fw_flower->nfd_func;\n \n-\tnfd_func->ctrl_vnic_xmit_t = nfp_flower_ctrl_vnic_nfd3_xmit;\n+\tif (hw->ver.extend == NFP_NET_CFG_VERSION_DP_NFD3)\n+\t\tnfd_func->ctrl_vnic_xmit_t = nfp_flower_ctrl_vnic_nfd3_xmit;\n+\telse\n+\t\tnfd_func->ctrl_vnic_xmit_t = nfp_flower_ctrl_vnic_nfdk_xmit;\n }\n \n uint16_t\ndiff --git a/drivers/net/nfp/nfdk/nfp_nfdk.h b/drivers/net/nfp/nfdk/nfp_nfdk.h\nindex 0e3c6cc90d..898454102d 100644\n--- a/drivers/net/nfp/nfdk/nfp_nfdk.h\n+++ b/drivers/net/nfp/nfdk/nfp_nfdk.h\n@@ -237,5 +237,7 @@ int nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,\n \t\tuint16_t nb_desc,\n \t\tunsigned int socket_id,\n \t\tconst struct rte_eth_txconf *tx_conf);\n+int nfp_net_nfdk_tx_maybe_close_block(struct nfp_net_txq *txq,\n+\t\tstruct rte_mbuf *pkt);\n \n #endif /* _NFP_NFDK_H_ */\ndiff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c\nindex 59c507e03b..dbb15581c4 100644\n--- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c\n+++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c\n@@ -63,7 +63,7 @@ nfp_net_nfdk_tx_close_block(struct nfp_net_txq *txq,\n \ttxq->wr_p = D_IDX(txq, wr_p + nop_slots);\n }\n \n-static int\n+int\n nfp_net_nfdk_tx_maybe_close_block(struct nfp_net_txq *txq,\n \t\tstruct rte_mbuf *pkt)\n {\n",
    "prefixes": [
        "06/10"
    ]
}