get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 28321,
    "url": "https://patches.dpdk.org/api/patches/28321/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/810c1d26724f82f0d9fc9d6684dc4b1c62fd5f62.1504508375.git.shahafs@mellanox.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": "<810c1d26724f82f0d9fc9d6684dc4b1c62fd5f62.1504508375.git.shahafs@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/810c1d26724f82f0d9fc9d6684dc4b1c62fd5f62.1504508375.git.shahafs@mellanox.com",
    "date": "2017-09-04T07:12:18",
    "name": "[dpdk-dev,4/4] ethdev: add helpers to move to the new offloads API",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "67ed6e94c701d3b6466b37b86896342473b4cbc2",
    "submitter": {
        "id": 634,
        "url": "https://patches.dpdk.org/api/people/634/?format=api",
        "name": "Shahaf Shuler",
        "email": "shahafs@mellanox.com"
    },
    "delegate": null,
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/810c1d26724f82f0d9fc9d6684dc4b1c62fd5f62.1504508375.git.shahafs@mellanox.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/28321/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/28321/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id E726E7D10;\n\tMon,  4 Sep 2017 09:12:33 +0200 (CEST)",
            "from EUR01-HE1-obe.outbound.protection.outlook.com\n\t(mail-he1eur01on0067.outbound.protection.outlook.com [104.47.0.67])\n\tby dpdk.org (Postfix) with ESMTP id C8D1C7CC5\n\tfor <dev@dpdk.org>; Mon,  4 Sep 2017 09:12:29 +0200 (CEST)",
            "from mellanox.com (82.166.227.17) by\n\tHE1PR05MB3148.eurprd05.prod.outlook.com (2603:10a6:7:36::18) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10;\n\tMon, 4 Sep 2017 07:12:28 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n\ts=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=IR4/iVzKuMy/PvPk8Fi6J15yEuqSm/DQF17jIQ1Vu80=;\n\tb=W5Ti0/CeuEjzdG3MVmBm+ECuxWTcJIcPJecEv9GRTiwiRzK2LBrcbjwaHTkHyONqMGBA24FORIWbWENxgaV5MlJorLuKdNO8eXapv2i+YdTYngzJbXdTwnWMJj6lEu2p4hCvvF7q7DPHH0jhWnq4g2DLSn4vicgF+mWCAVAwzgI=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=shahafs@mellanox.com; ",
        "From": "Shahaf Shuler <shahafs@mellanox.com>",
        "To": "thomas@monjalon.net",
        "Cc": "dev@dpdk.org",
        "Date": "Mon,  4 Sep 2017 10:12:18 +0300",
        "Message-Id": "<810c1d26724f82f0d9fc9d6684dc4b1c62fd5f62.1504508375.git.shahafs@mellanox.com>",
        "X-Mailer": "git-send-email 2.12.0",
        "In-Reply-To": "<cover.1504508374.git.shahafs@mellanox.com>",
        "References": "<cover.1504508374.git.shahafs@mellanox.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[82.166.227.17]",
        "X-ClientProxiedBy": "HE1PR07CA0005.eurprd07.prod.outlook.com\n\t(2603:10a6:7:67::15) To HE1PR05MB3148.eurprd05.prod.outlook.com\n\t(2603:10a6:7:36::18)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "009cfd12-ec71-4567-5534-08d4f3644d7a",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:HE1PR05MB3148; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; HE1PR05MB3148;\n\t3:1U5qvLE4XgLWUomjkHfyCtYAyoUyzErBrGovDjlQGfE1d9QmG8KjygIcuBzF7Qk2XF5KBCleia2HXsedv/ghjJ66I+/LsgNPF18WDPleKT0WCUESVucJC3AkHCzfLR5f50tL0B0DfSL7/+vl+9v1fukIRwlS5j5fCOC+pJROlsg/EnuYTompAdcJOhf4Ce99DmVzliYm1tYRStS7EM3BS2DtXo4CMBYYllLS4AzTAUN50tqISD9d39fTyKbwCOab;\n\t25:nIHvYXeq4qzqA2jMih2n0yawP3iR9g2Hb9ZtnKhkqm8tt6QbZFZ3P1jaUBp8v7KEviM9tuINL4iSCPwfrRnDhsNDl0sMk8y6GVpN7XJ2Xc8IPuE7soFAh8t9/NAAftTilrdRSxCYTCBAUbx/F/uz16/KMz5VLfmtPz7l1d6XYLrX1Sq3Tz9MxVjuIfcXLpRsgbIy5tp3S9/Q96JMMyDyXnquwvziEkk+azM3Nf8jbDEsFmIASfXjtRF9IzfLwvWbrI3hmBFWoxLxBS0dM1/sByXf0es/O0MHHMVpW+m7P7TOAdBgjNtenW1oOZ4FfHibkUQY/kGO557rd3qXkZ/aTw==;\n\t31:j2qeaRwTrsa99UZ/PSn2vuwCOxm7ni7R4AnrhYfwrqrFQzSYQZXr41xlRXn7oAX1JD7Km92jPjh4lhAb2dIczNtN7dc4mTsPFdWnb40GMrdGKQtFVbpmZxenJXPTdpMKJrVbuJWQrv3SQZuk7CAGjfeHTOQY9D7a+QWsj6O5IWN7wV4lnK7iBdzMOnVDrC1UIlSMms64tjHLErXk7dTNB0oYul5xM1mryvcPYsHEUBU=",
            "1; HE1PR05MB3148;\n\t20:paAbmLn3fQp2ewUeph2LlKc7EXamqawysd/U9KKL7URnjh02Yerklji1ly8vPZexFuQxJOcbSMz+LSkfUXJmL/Wb6MsxDu/dwDNoiw3WPj1hTmJjSEjm4c2PXIO7cJ5KW5Mcs+mJpc1YWxLugBnzNKDa/9RSykSqdUe7oClg6cCIO2Y+dHYXhCxKQiCwa462eKJND46a1plF9QCQ2KcLGYol6JlFH3BcasOMpt/uN/o/TeJQHSBtu1YGP1nh3z9EP0m7qlpa/Bv4/7eYnaQE6axqZCK+9MLplKR9qq/ORUBBzO/80L43c/+GZ7tlGpw9aSi5A/TibY5VJOcqpKP3CFqsQHXSD6MmmvbaIgl0bQGZCTuHHR5N3+Qpv4JR62geEtcKZVs1fNtApYm2xZj7NGQtl61H7lYCrHkHS6Z5iR4rWkzHLkYKMFmHGcyTkuYc014eodsQA8OoJd/ioIvvtmSNcJHAJHyyhDHXYHJ1kHrD5iWc7Qh594v+Ioxl7cvi;\n\t4:u6dKGaiP1gNV+8fyPUPbxFwQCmsdxaXGTyYxG10xivxLjnPCc6NkQi3dLvecViY4AI0BMfHpChvBkYv8G5QE/Yf1IGMl4FMCQWmM+THf/tgzEEQb0E95nWr8etEpVGmtCL/ga8hMXTF5xfx/gWUbLaQoWBbIAmtC6zyGSOS2tqWsgwmQ/WvokynPl3N1u+RiWpnxnp13BfSkLUW8IuSnhlxgqgv19Fw2k2+IowchmfVigYyLxXXe8aJbnUr86OMz",
            "=?us-ascii?Q?1; HE1PR05MB3148;\n\t23:fyPtUSgg0Kl7a0JbX4FgT+1QyKKtmhd2A394W0e2b?=\n\tieS9vR9I7C0z6lZ8V9ooyYHicY11ViRoD6GUQvm/PJjsRZY9gex3IU3f5KyT6XN/ZLTTy9KtTcyXTy7JBE+cPayUVIIktDdRWm/1rChRV0YB6T5oooBNr2NyDlzyr1H0fo31Dxcw7jUBK/PMfaTMhheGEy/gKpzjqqBMaIdU1oeQJg2qDJa67et8weJbyLyyIJ6Y+78GgDG0sepKuueC55jD+hhALZSoOAkigw2zqrQQ1moRgDtcqlvqSbwfVzd5aCLEcP79oBq8SS0n4FZY5YZM6zEfZbE6mCzT6oLn4slUNDe646nwDxQQQf+zkPAsJ640Zm9kxEIm9D0zBIFIOAaGJkfGH7fb3ubg7cTw6ifJKGx/vhtWesCDVil088oa4jcbHQCVquWc1OvQnzfqC6nv91bkKL2qJCON3Qx7A6EJAwW3e26acSS8zmnPf3Ooh6q9v1rcUMd6OkZXNl70bug4l/I+AvWkUFdpBDlwf8WcmIgTQ3Rh4MoxsjBVvXqCm0IL7vTE6JRJR6xcu2fYOfbzf8x145z6JWvXrBwJ/HTecW7xR4WM+9LsvtmhkHAzhPco95BqZ3BigjR1WWoNl9n5Wt31WmUFCiYOYIW4Tg0NzQHYHzL7svByQzJDXlkBdcL2esXDCXWB9UFUAEyPcyMHUPNC72q/nQ9O88q5+WAQAkjbeuhK5LWaVQI5d+JFwcAJD+CubLeNZJYLUV35v3k7GTd2iTkIeOJlmnag2kmdc0ehX6wyM7m0bQWwG/yAWXAdtAXeWVjiW7TZAnKbl75Wt76d5nt8NCOEs9fyYsZhmCWMs8sl/3rgLtaxNmq9rqfHRHL3ATyx5GOaCf0r16cZ1RueIPkNMcr+fYB82HAebZYw02wyi2jzTez5Po9s/Nd/LQxw5zAaTklqw3eedFmsUgFZdqwYoNv771A2jxe2yGb+9CbnfxuAYhm/b6DsPvsd2DsteOj6uV1huF4dMt/2WzMLGcThUQ1NLrDw5POZtEGT8m3RlF7nCloWOtArUDBGPo5sLjhX48xjEiCOWFeQUhaWtkA1xZXyBZ02SKibPwFHQBa+GlNjrVtXuL3xaCXFfFFbS+CU2Oqk4rqF3bT1dPmNksrPUJVsEKClHb7rz5emhIdUnbk21uqg5lQ/E0rrdYlxVfXLgaS7gKEJdfk",
            "1; HE1PR05MB3148;\n\t6:/E0tdspqV+5Gr+dw6WNNYFykMQSBQnnXgZ/+Ozku6/DzZ6x/ehzYB85XIUF6ipBVNQyU4f7q2lwg4v0k6UG3KM8dr10hVeQDysYbBJzEogeKKCoxCPjVd5On1ZmI/n0nL89i02m3SSmkCqMvgUYlLb5UGniCtsMSjJIWNEY6gMo0NHSZ58DFs35viuhlftrdEFp5bbN4UKf6r1dF8FgdvFW5zyQXNSDwF8XEQ+sFueGWM30ZiwR0uy3pVsWr8xpbQMtH2EYmWeObReL+k9N02b7X2kZ4k1XOmMtJ+M/GJy1FyURxhzVm77Y/HoMblsxs7h0SgFOK8cPy3LyXfV7DwA==;\n\t5:gDdyfeHChKjJH9awbB1nelxvPf/31B7EYomRJRoCBi+jx11Xzp+9QtBzci3zI2LvEp3q18b0islHxS7uvFQW+SRwfdVZe2nsubP0+y5O9YY7k4mi/giRN4DqYIo/xAcyWEkzpE5XQ5XDwSnGr8hfSg==;\n\t24:g6IRvAeRHbp0XDGjgtUq2TB11jAX8fNqo5BHn3OpURDmbWxq3zGct6veJ2Re3XeYNb/+NRyLc+gLXZ8axDj17DlLGA+FlJSVPh4Xn1X7EdE=;\n\t7:sz1eMr/dHcc9W1BqIIgs0q8jkaxiZqufXbHe46dp5Q748t4LhrnvVUyZtUalkOOl1222R/ouKO6JvQl3O3LqBwWenqLfSxTzChqS3BzKRtYovXOVRZ+iG4L+FMGk3qoEe1LPtEjXeL/ui73UBjoTsphmyiDXvXH/91cejmC+WHzmFk5iL1N3C6k/WRjBJdTBl03CT0NAiJIJEBY+b0+6xQgU0cAK/PAgUQJ6mknSbOE="
        ],
        "X-MS-TrafficTypeDiagnostic": "HE1PR05MB3148:",
        "X-LD-Processed": "a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-Microsoft-Antispam-PRVS": "<HE1PR05MB314803200AE2AA3616153C32C3910@HE1PR05MB3148.eurprd05.prod.outlook.com>",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(6055026)(6041248)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:HE1PR05MB3148; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:HE1PR05MB3148; ",
        "X-Forefront-PRVS": "0420213CCD",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(7370300001)(6009001)(39860400002)(189002)(199003)(105586002)(36756003)(69596002)(97736004)(4326008)(305945005)(5003940100001)(2950100002)(7736002)(6916009)(106356001)(50226002)(53936002)(86362001)(118296001)(5660300001)(68736007)(2361001)(6666003)(110136004)(2351001)(42186005)(55016002)(21086003)(478600001)(33646002)(189998001)(33026002)(3846002)(101416001)(6116002)(2906002)(76176999)(50986999)(48376002)(50466002)(81156014)(81166006)(25786009)(66066001)(47776003)(8676002)(7350300001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR05MB3148; H:mellanox.com; FPR:;\n\tSPF:None; \n\tPTR:InfoNoRecords; MX:1; A:1; LANG:en; ",
        "Received-SPF": "None (protection.outlook.com: mellanox.com does not designate\n\tpermitted sender hosts)",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "Mellanox.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "04 Sep 2017 07:12:28.4005\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "HE1PR05MB3148",
        "Subject": "[dpdk-dev] [PATCH 4/4] ethdev: add helpers to move to the new\n\toffloads API",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "A new offloads API was introduced by commits:\n\ncommit 121fff673172 (\"ethdev: introduce Rx queue offloads API\")\ncommit 35ac80d92f29 (\"ethdev: introduce Tx queue offloads API\")\n\nIn order to enable the PMDs to support only one of the APIs,\na conversion functions from the old to new API were added.\n\nSigned-off-by: Shahaf Shuler <shahafs@mellanox.com>\n---\n lib/librte_ether/rte_ethdev.c | 99 +++++++++++++++++++++++++++++++++++++-\n 1 file changed, 97 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex 50f8aa98d..1aa21a129 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -1006,6 +1006,34 @@ rte_eth_dev_close(uint8_t port_id)\n \tdev->data->tx_queues = NULL;\n }\n \n+/**\n+ * A conversion function from rxmode offloads API to rte_eth_rxq_conf\n+ * offloads API.\n+ */\n+static void\n+rte_eth_convert_rxmode_offloads(struct rte_eth_rxmode *rxmode,\n+\t\t\t\tstruct rte_eth_rxq_conf *rxq_conf)\n+{\n+\tif (rxmode->header_split == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_HEADER_SPLIT;\n+\tif (rxmode->hw_ip_checksum == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_CHECKSUM;\n+\tif (rxmode->hw_vlan_filter == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_VLAN_FILTER;\n+\tif (rxmode->hw_vlan_strip == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;\n+\tif (rxmode->hw_vlan_extend == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_VLAN_EXTEND;\n+\tif (rxmode->jumbo_frame == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\tif (rxmode->hw_strip_crc == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_CRC_STRIP;\n+\tif (rxmode->enable_scatter == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_SCATTER;\n+\tif (rxmode->enable_lro == 1)\n+\t\trxq_conf->offloads |= DEV_RX_OFFLOAD_TCP_LRO;\n+}\n+\n int\n rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,\n \t\t       uint16_t nb_rx_desc, unsigned int socket_id,\n@@ -1016,6 +1044,8 @@ rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,\n \tuint32_t mbp_buf_size;\n \tstruct rte_eth_dev *dev;\n \tstruct rte_eth_dev_info dev_info;\n+\tstruct rte_eth_rxq_conf rxq_trans_conf;\n+\t/* Holds translated configuration to be passed to the PMD */\n \tvoid **rxq;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);\n@@ -1062,6 +1092,11 @@ rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,\n \t\treturn -EINVAL;\n \t}\n \n+\tif ((!(dev->data->dev_flags & RTE_ETH_DEV_RXQ_OFFLOAD)) &&\n+\t    (dev->data->dev_conf.rxmode.ignore_offloads == 1)) {\n+\t\treturn -ENOTSUP;\n+\t}\n+\n \tif (nb_rx_desc > dev_info.rx_desc_lim.nb_max ||\n \t\t\tnb_rx_desc < dev_info.rx_desc_lim.nb_min ||\n \t\t\tnb_rx_desc % dev_info.rx_desc_lim.nb_align != 0) {\n@@ -1086,8 +1121,15 @@ rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,\n \tif (rx_conf == NULL)\n \t\trx_conf = &dev_info.default_rxconf;\n \n+\trxq_trans_conf = *rx_conf;\n+\tif ((dev->data->dev_flags & RTE_ETH_DEV_RXQ_OFFLOAD) &&\n+\t    (dev->data->dev_conf.rxmode.ignore_offloads == 0)) {\n+\t\trte_eth_convert_rxmode_offloads(&dev->data->dev_conf.rxmode,\n+\t\t\t\t\t\t&rxq_trans_conf);\n+\t}\n+\n \tret = (*dev->dev_ops->rx_queue_setup)(dev, rx_queue_id, nb_rx_desc,\n-\t\t\t\t\t      socket_id, rx_conf, mp);\n+\t\t\t\t\t      socket_id, &rxq_trans_conf, mp);\n \tif (!ret) {\n \t\tif (!dev->data->min_rx_buf_size ||\n \t\t    dev->data->min_rx_buf_size > mbp_buf_size)\n@@ -1097,6 +1139,49 @@ rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,\n \treturn ret;\n }\n \n+/**\n+ * A conversion function from txq_flags to rte_eth_txq_conf offloads API.\n+ */\n+static void\n+rte_eth_convert_txq_flags(struct rte_eth_txq_conf *txq_conf)\n+{\n+\tuint32_t txq_flags = txq_conf->txq_flags;\n+\tuint64_t *offloads = &txq_conf->offloads;\n+\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOMULTSEGS))\n+\t\t*offloads |= DEV_TX_OFFLOAD_MULTI_SEGS;\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOVLANOFFL))\n+\t\t*offloads |= DEV_TX_OFFLOAD_VLAN_INSERT;\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOXSUMSCTP))\n+\t\t*offloads |= DEV_TX_OFFLOAD_SCTP_CKSUM;\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOXSUMUDP))\n+\t\t*offloads |= DEV_TX_OFFLOAD_UDP_CKSUM;\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOXSUMTCP))\n+\t\t*offloads |= DEV_TX_OFFLOAD_TCP_CKSUM;\n+}\n+\n+/**\n+ * A conversion function between rte_eth_txq_conf offloads API to txq_flags\n+ * offloads API.\n+ */\n+static void\n+rte_eth_convert_txq_offloads(struct rte_eth_txq_conf *txq_conf)\n+{\n+\tuint32_t *txq_flags = &txq_conf->txq_flags;\n+\tuint64_t offloads = txq_conf->offloads;\n+\n+\tif (!(offloads & DEV_TX_OFFLOAD_MULTI_SEGS))\n+\t\t*txq_flags |= ETH_TXQ_FLAGS_NOMULTSEGS;\n+\tif (!(offloads & DEV_TX_OFFLOAD_VLAN_INSERT))\n+\t\t*txq_flags |= ETH_TXQ_FLAGS_NOVLANOFFL;\n+\tif (!(offloads & DEV_TX_OFFLOAD_SCTP_CKSUM))\n+\t\t*txq_flags |= ETH_TXQ_FLAGS_NOXSUMSCTP;\n+\tif (!(offloads & DEV_TX_OFFLOAD_UDP_CKSUM))\n+\t\t*txq_flags |= ETH_TXQ_FLAGS_NOXSUMUDP;\n+\tif (!(offloads & DEV_TX_OFFLOAD_TCP_CKSUM))\n+\t\t*txq_flags |= ETH_TXQ_FLAGS_NOXSUMTCP;\n+}\n+\n int\n rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id,\n \t\t       uint16_t nb_tx_desc, unsigned int socket_id,\n@@ -1104,6 +1189,8 @@ rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id,\n {\n \tstruct rte_eth_dev *dev;\n \tstruct rte_eth_dev_info dev_info;\n+\tstruct rte_eth_txq_conf txq_trans_conf;\n+\t/* Holds translated configuration to be passed to the PMD */\n \tvoid **txq;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);\n@@ -1148,8 +1235,16 @@ rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id,\n \tif (tx_conf == NULL)\n \t\ttx_conf = &dev_info.default_txconf;\n \n+\ttxq_trans_conf = *tx_conf;\n+\tif ((dev->data->dev_flags & RTE_ETH_DEV_TXQ_OFFLOAD) &&\n+\t    (!(tx_conf->txq_flags & ETH_TXQ_FLAGS_IGNORE)))\n+\t\trte_eth_convert_txq_flags(&txq_trans_conf);\n+\telse if (!(dev->data->dev_flags & RTE_ETH_DEV_TXQ_OFFLOAD) &&\n+\t\t (tx_conf->txq_flags & ETH_TXQ_FLAGS_IGNORE))\n+\t\trte_eth_convert_txq_offloads(&txq_trans_conf);\n+\n \treturn (*dev->dev_ops->tx_queue_setup)(dev, tx_queue_id, nb_tx_desc,\n-\t\t\t\t\t       socket_id, tx_conf);\n+\t\t\t\t\t       socket_id, &txq_trans_conf);\n }\n \n void\n",
    "prefixes": [
        "dpdk-dev",
        "4/4"
    ]
}