get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 29573,
    "url": "http://patches.dpdk.org/api/patches/29573/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/f883eb32e2d4db9da5c5337cdc1bb72405ac3c9d.1507104596.git.shahafs@mellanox.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": "<f883eb32e2d4db9da5c5337cdc1bb72405ac3c9d.1507104596.git.shahafs@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/f883eb32e2d4db9da5c5337cdc1bb72405ac3c9d.1507104596.git.shahafs@mellanox.com",
    "date": "2017-10-04T08:17:59",
    "name": "[dpdk-dev,v6,2/4] ethdev: introduce Tx queue offloads API",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "6e79c7899c091b8a98ae7f4181d6532d1d2d979c",
    "submitter": {
        "id": 634,
        "url": "http://patches.dpdk.org/api/people/634/?format=api",
        "name": "Shahaf Shuler",
        "email": "shahafs@mellanox.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/f883eb32e2d4db9da5c5337cdc1bb72405ac3c9d.1507104596.git.shahafs@mellanox.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/29573/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/29573/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 [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 34CE51B60B;\n\tWed,  4 Oct 2017 10:18:20 +0200 (CEST)",
            "from EUR01-DB5-obe.outbound.protection.outlook.com\n\t(mail-db5eur01on0040.outbound.protection.outlook.com [104.47.2.40])\n\tby dpdk.org (Postfix) with ESMTP id 311D71B608\n\tfor <dev@dpdk.org>; Wed,  4 Oct 2017 10:18:17 +0200 (CEST)",
            "from mellanox.com (82.166.227.17) by\n\tVI1PR05MB3149.eurprd05.prod.outlook.com (2603:10a6:802:1b::14) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7;\n\tWed, 4 Oct 2017 08:18:14 +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=XUIdhfW9RzxDIvHuHSYFUVgTN2xDABU2D837Gz+aFTc=;\n\tb=Vw75Oyza4I8ijubx/KThCqYw3jdJA32qGTr8H08aiVRSr8m1caBWTfpmISn0/1kRCLAPaTerglT2Qy7xDgMfxZExDqHYik5b5gcwTFhjz3rgLi8l9zjgUIlYV2UGlW7th0O40E3hdVq01ftZfgL7Kgp9z9I9kQmuMp6NjdQqxrk=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=shahafs@mellanox.com; ",
        "From": "Shahaf Shuler <shahafs@mellanox.com>",
        "To": "konstantin.ananyev@intel.com, thomas@monjalon.net,\n\tarybchenko@solarflare.com, jerin.jacob@caviumnetworks.com,\n\tferruh.yigit@intel.com",
        "Cc": "dev@dpdk.org",
        "Date": "Wed,  4 Oct 2017 11:17:59 +0300",
        "Message-Id": "<f883eb32e2d4db9da5c5337cdc1bb72405ac3c9d.1507104596.git.shahafs@mellanox.com>",
        "X-Mailer": "git-send-email 2.12.0",
        "In-Reply-To": "<cover.1507104596.git.shahafs@mellanox.com>",
        "References": "<cover.1506624250.git.shahafs@mellanox.com>\n\t<cover.1507104596.git.shahafs@mellanox.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[82.166.227.17]",
        "X-ClientProxiedBy": "VI1PR08CA0212.eurprd08.prod.outlook.com\n\t(2603:10a6:802:15::21) To VI1PR05MB3149.eurprd05.prod.outlook.com\n\t(2603:10a6:802:1b::14)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "4d9f8087-5c9f-438c-19f6-08d50b007603",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:VI1PR05MB3149; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; VI1PR05MB3149;\n\t3:whdjgaiWbMSRB9j+QRQBwtWGwARH630rp7jHzdr9Qg+NvXgT3M6ChkJ3yvxQA/EvP3xUBfzvmG9IgsP9WTIlHxt5arqbA2bwJiNw/ToMOMwf8FUlgi6z3dpq73ZwUNOuWpc2AXxIpny4aWVHPF1kG+qTNhc3fJglGkriewPG3ItbV/S8hX5TaFndGg3c3RDai/gd6xrMoZ02cRSmjKii+tjlrTBXFtifSvGxxq3VxEyYoZEQVfd5OuNYKXxgenbB;\n\t25:u8POS9r12JV9KuHwx81ZbbQM19Zj8sKcTRR8rBFe0ryejZFCZNbNbv/bbCqPmPuUXr4NGtc6Dlzxz/+t6zMdbTXOBmzLM6OAGHALMIckNMgP+zpfCgTkLknKKEut53SRoMwjZbtwcVTPbRWb+Zy6CCQPbCiiFmo+Oq7NzvDY1fVBdJ7Q8IE5UqCgQ8gu3fS08MM/sdYVuG6wDapRgkkDXNh9xXpW+3f7rtbZlEXbg4AQXewBLytFFHRzRfxmldLKP+DJVDzE81E3TJcynjvb8qciKeqHM1j02n4Z7Aw/U02oWZR6gME3WV5taWzhOWa1gC4XFzUmEzjEQsaRW1Ogwg==;\n\t31:5AVHFync3O36omRGMESNk6uEnyQNNRKQvbQNU/RGBkiAs19lA533wg3NF08CeXGCMfuNW/ATJhZqXLpuhBvLO9ic2CW5XJ2FDu7fvAY/HLFP+7Gvi+Sn96tPEO+txcnklW0KCueEX67DF9OCjoTPFdm2g9UDefWy/5+M1qr5T0RIOE5jxVXmqUup2wcLH+tiJ1Fs9Y+YufYf7GUE1LmgEIeXDYsmc3wBTquXh4xALmc=",
            "1; VI1PR05MB3149;\n\t20:sTus/LMORlmfX9rrmWugBDhDzbNhlEwXp1GDJX77NpICccz38vc+/7ZMgn/rYXQG2m1xKBEwwg6In0ehI660enteYhgUVz3FmYXSz1saSCGd4YJt7H4HUR4koOUQDzY3aAbS+y55riEntlwimL9TNc7zVVmBwEtfyxp3AoAkg/Ijp93WK2ZSwnXJKVuodzoxW7WbpP37zblktqqiAi54q3NR6OcqRK/ZZKBVyTH6rhgVa1r1lV8zEf3xtMfEFUbP7q+WQE68XzhJBuQRMFGWJ1wuFawIl7TMGfo5Co7dU2lwYB6CI7hrN9+8n+zDtk9iBMnnY/Hih/nMOUW+Z0b0SJfoD2n1Vskqy4DwEc/dsmL4t1loek0T6YV/1nZElVU/OmJznKIAOzYD3HOKEO1lREN+ab5hDxC2stYcx9uk6fCI/NJB1qPH2iLH8jefsQTEmvSl9zXc13nK3w9t8SNTpBw9T4VfgNZ9J44HoQAQDyR07U1zJg7Ta8vQJy/PuZUP;\n\t4:4IT3L95/Htkw5yO05bK0jCD3y3kT1btGLgicxi7S7pgKDAnG/ObmQgeH10yCARqe8cyj5l0fauZDTVHDDyaXWpHfwkIwQsav2z2/AB/nyTfvfQkHargf2adKUBCSFmPb8S0vNBIK75uixMZoRYRq8QHVl/hSJjdpNstdIND1O1y+wbetIhv9INZw2cu2tI8Bzkr7cgzMltTKmjA9gI+yt3pRtx7YhJKfeItCLsW2x3DKacKshgEnhV3334pAw5346e0TiaHjjx1vdnWj3uDkNDRUiFDQ2wF839DwycUmcko6HBP3UtgI+uloUt2Gi1wqI6MwOxzM0L+tKuyTOtXLrw==",
            "=?us-ascii?Q?1; VI1PR05MB3149;\n\t23:eBXixKnHS5fR7ZZKkPg1mh2M4jthCpfcCWqUWcluv?=\n\t1EnUaDdzIrHTwgmKOnXJbwroJphkt3BHCyxdiz01Zhh4D6iYfnXMUJ09vXeRY+OPXKwsSt03CaIrQ+MwBoMV+VtHDY19zzQoWRdUY+4SxkO3bUEAj7BLVA0+b9MmvBwhCJtsB/nh85v4DOTKX+TiH3Ew1A0kN0CzRaCGslwC4QM8CFa2CNsTE0Bsp/i+p0G8XGtCsj5G9gY5xHre+0FtoRytcAaM7+OGR4whKoSBhlpm428Fznj5dMs6lIc8AndUE05nNKMHtLjkkcG2W1/JJMs2opGf1hWAJuStaCWfvcWUqLkXb3jcF1rUoJbvm9Z8xRSWIwEVU1GJHOHZhGjTqHx0VdcqHCG5Ey/u8QXg1by3B+TbKVIDWhrJxpENuRHkRu3gqnxqsIlpczp3/59MvoV2tspeSO7zRsE8hYKfeASp1T+vO7G4iRbu3zbs1CrKJYTyQPSeOj4kXoq2X9QSeUWILh8AsLE95j4ptG9nQzGr7HF8rqOLdPsn6gQ9Hh0rWnW7125+Ml09V0A+w7yX1/d1FzP+MJPeS57qW3kos1hjsTNdi8sSx2Gafkj/U6QwGFAACuK2YVmm77VUt8MraaU/FPWRbQ/saFpWqTP7R4+Cnug3AnZI7SdNth6DPmBarhcT7tJ+bew6lVKsRJqKVoDtmp8kdcqhU7mQoYe/O7AYK6j68VF4igscXtPqytpw62u0SZz6KSPjVqUldTDe3UO4EQgj9R2ZaHkTJyYyjRpEpYTVvtFWSPIcvxG1glRfT6vmFDBSIh5mjZPe8h0mvjKK9nDElufJhzAwTeazLf+mF5caZdaHbK+UQplDXTuk8M8YRpweBp2nEL2w3fe23cIUJNc1zwrIDuScGTKIG8WgSrE3awZ8Iv7wkXtVUJIaJykA7XpofJAim6t5cAehGMSVxL57mfVQJXQhsGf+ElOsh3Y2CSywvviyV9EMHlMtXtMDJy7oJM5t4Mo8UAVfv8Wz2/qB7/W8bTpkRHbVCS9sEPu4sw6wuuI21qXOWkPL1EObbY6fIJSmcNzfmlKVIMJWIAee99KO3bYQ2jyTjVPgNNVScQKwqBR2ncm8d9bcek=",
            "1; VI1PR05MB3149;\n\t6:1RYSWQmppXh2KpT08mEtiM09N1rHkwP6rmUnsojNTUWLT7SHvQjFWPYskm0lvMPpBf6M54SPEGT7GqS07+b0dVCe6v3MUXwDlCotpUsPmRBtwFvR792n0sNOycv2MaN0YcvBiX8Q3P8HFH8Jtp1uMSdr4b33vGBQCqxSj3NeSwATE99khSmwlSu4CcgYWwR7m536/mXAwiHoTzafM//Xe8FTZQfVhTg61J3gLfPhpGpfeaVnaGYv4udQ24LRit+OTVfLuTaEOqryA87rAXoUhNGJ9UHPAOkh4qwC1ZXGOeVlV4Z3PXi23OLnbBBOYZNVjcNhMeBDp78recD3/XKK3g==;\n\t5:xb2qmfzK+L5ar0/dqULPKy+fDnCwkzeAjih6kcJL3igNlouFx7wG7BxNbxF9JTB0rwI3KsfLPctKNDGYGDo2wat5Ps30Vq9WLGUNeXf93/LEdPG6c4zKt8CVAaWvd6orSmtmGwWpIz+tCxhheOSiNw==;\n\t24:VMc+9rFrxftzWv/wX1QHiv8JQj7CFHu2tTfCIukWN1ey06aClBxVmgUxpZiFXtaHfL0iR1egYOWpD7QsCf2zQt6Uw0yftRs6iMw3iZiB+Gg=;\n\t7:xY9vXgx47mXCX428r3FJr3qZdMoS6IQVla5b0voeeEedLEN4fHKzfqNRHoUI6g4UoMlmsm8xQe0KtVT2+GDSkmGodCVUtCUV4Hen9uQXSxre5K6aoKk0dZCuZqwTuY6NQCnzSXkcSUlpb46Ui7YEz/5Bingu/T5i3mdQwICMtwworm/lsiOUEsjwamkiJ+30a71ZaW/uHOu0lRfgsVYFX2nqAIED7lvMFgoxT0kLTck="
        ],
        "X-MS-TrafficTypeDiagnostic": "VI1PR05MB3149:",
        "X-LD-Processed": "a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr",
        "X-Exchange-Antispam-Report-Test": "UriScan:(20558992708506)(278428928389397);",
        "X-Microsoft-Antispam-PRVS": "<VI1PR05MB3149D95FD8C782C6877D437EC3730@VI1PR05MB3149.eurprd05.prod.outlook.com>",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123564025)(20161123555025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:VI1PR05MB3149; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:VI1PR05MB3149; ",
        "X-Forefront-PRVS": "0450A714CB",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(6009001)(39860400002)(346002)(376002)(189002)(199003)(55016002)(105586002)(189998001)(21086003)(305945005)(8676002)(16586007)(106356001)(66066001)(25786009)(47776003)(33646002)(81166006)(8936002)(81156014)(16526018)(316002)(7736002)(86362001)(4326008)(53936002)(3846002)(50226002)(2950100002)(50466002)(97736004)(33026002)(6116002)(68736007)(48376002)(69596002)(5003940100001)(118296001)(5660300001)(36756003)(478600001)(6666003)(76176999)(50986999)(101416001)(2906002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3149; 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 Oct 2017 08:18:14.3269\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "a652971c-7d2e-4d9b-a6a4-d149256f461b",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "VI1PR05MB3149",
        "Subject": "[dpdk-dev] [PATCH v6 2/4] ethdev: introduce Tx queue offloads 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": "Introduce a new API to configure Tx offloads.\n\nIn the new API, offloads are divided into per-port and per-queue\noffloads. The PMD reports capability for each of them.\nOffloads are enabled using the existing DEV_TX_OFFLOAD_* flags.\nTo enable per-port offload, the offload should be set on both device\nconfiguration and queue configuration. To enable per-queue offload, the\noffloads can be set only on queue configuration.\n\nIn addition the Tx offloads will be disabled by default and be\nenabled per application needs. This will much simplify PMD management of\nthe different offloads.\n\nApplications should set the ETH_TXQ_FLAGS_IGNORE flag on txq_flags\nfield in order to move to the new API.\n\nThe old Tx offloads API is kept for the meanwhile, in order to enable a\nsmooth transition for PMDs and application to the new API.\n\nSigned-off-by: Shahaf Shuler <shahafs@mellanox.com>\n---\n doc/guides/nics/features.rst  | 24 ++++++++++-----\n lib/librte_ether/rte_ethdev.c | 62 +++++++++++++++++++++++++++++++++++++-\n lib/librte_ether/rte_ethdev.h | 33 +++++++++++++++++++-\n 3 files changed, 109 insertions(+), 10 deletions(-)",
    "diff": "diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst\nindex 4e68144ef..17745dace 100644\n--- a/doc/guides/nics/features.rst\n+++ b/doc/guides/nics/features.rst\n@@ -131,7 +131,8 @@ Lock-free Tx queue\n If a PMD advertises DEV_TX_OFFLOAD_MT_LOCKFREE capable, multiple threads can\n invoke rte_eth_tx_burst() concurrently on the same Tx queue without SW lock.\n \n-* **[provides] rte_eth_dev_info**: ``tx_offload_capa:DEV_TX_OFFLOAD_MT_LOCKFREE``.\n+* **[uses]    rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_MT_LOCKFREE``.\n+* **[provides] rte_eth_dev_info**: ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_MT_LOCKFREE``.\n * **[related]  API**: ``rte_eth_tx_burst()``.\n \n \n@@ -220,11 +221,12 @@ TSO\n \n Supports TCP Segmentation Offloading.\n \n+* **[uses]       rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_TCP_TSO``.\n * **[uses]       rte_eth_desc_lim**: ``nb_seg_max``, ``nb_mtu_seg_max``.\n * **[uses]       mbuf**: ``mbuf.ol_flags:PKT_TX_TCP_SEG``.\n * **[uses]       mbuf**: ``mbuf.tso_segsz``, ``mbuf.l2_len``, ``mbuf.l3_len``, ``mbuf.l4_len``.\n * **[implements] datapath**: ``TSO functionality``.\n-* **[provides]   rte_eth_dev_info**: ``tx_offload_capa:DEV_TX_OFFLOAD_TCP_TSO,DEV_TX_OFFLOAD_UDP_TSO``.\n+* **[provides]   rte_eth_dev_info**: ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_TCP_TSO,DEV_TX_OFFLOAD_UDP_TSO``.\n \n \n .. _nic_features_promiscuous_mode:\n@@ -510,10 +512,11 @@ VLAN offload\n Supports VLAN offload to hardware.\n \n * **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_VLAN_STRIP,DEV_RX_OFFLOAD_VLAN_FILTER,DEV_RX_OFFLOAD_VLAN_EXTEND``.\n+* **[uses]       rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_VLAN_INSERT``.\n * **[implements] eth_dev_ops**: ``vlan_offload_set``.\n * **[provides]   mbuf**: ``mbuf.ol_flags:PKT_RX_VLAN_STRIPPED``, ``mbuf.vlan_tci``.\n * **[provides]   rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_VLAN_STRIP``,\n-  ``tx_offload_capa:DEV_TX_OFFLOAD_VLAN_INSERT``.\n+  ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_VLAN_INSERT``.\n * **[related]    API**: ``rte_eth_dev_set_vlan_offload()``,\n   ``rte_eth_dev_get_vlan_offload()``.\n \n@@ -526,11 +529,12 @@ QinQ offload\n Supports QinQ (queue in queue) offload.\n \n * **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_QINQ_STRIP``.\n+* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_QINQ_INSERT``.\n * **[uses]     mbuf**: ``mbuf.ol_flags:PKT_TX_QINQ_PKT``.\n * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_QINQ_STRIPPED``, ``mbuf.vlan_tci``,\n    ``mbuf.vlan_tci_outer``.\n * **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_QINQ_STRIP``,\n-  ``tx_offload_capa:DEV_TX_OFFLOAD_QINQ_INSERT``.\n+  ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_QINQ_INSERT``.\n \n \n .. _nic_features_l3_checksum_offload:\n@@ -541,13 +545,14 @@ L3 checksum offload\n Supports L3 checksum offload.\n \n * **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_IPV4_CKSUM``.\n+* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_IPV4_CKSUM``.\n * **[uses]     mbuf**: ``mbuf.ol_flags:PKT_TX_IP_CKSUM``,\n   ``mbuf.ol_flags:PKT_TX_IPV4`` | ``PKT_TX_IPV6``.\n * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_IP_CKSUM_UNKNOWN`` |\n   ``PKT_RX_IP_CKSUM_BAD`` | ``PKT_RX_IP_CKSUM_GOOD`` |\n   ``PKT_RX_IP_CKSUM_NONE``.\n * **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_IPV4_CKSUM``,\n-  ``tx_offload_capa:DEV_TX_OFFLOAD_IPV4_CKSUM``.\n+  ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_IPV4_CKSUM``.\n \n \n .. _nic_features_l4_checksum_offload:\n@@ -558,6 +563,7 @@ L4 checksum offload\n Supports L4 checksum offload.\n \n * **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_UDP_CKSUM,DEV_RX_OFFLOAD_TCP_CKSUM``.\n+* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_UDP_CKSUM,DEV_TX_OFFLOAD_TCP_CKSUM,DEV_TX_OFFLOAD_SCTP_CKSUM``.\n * **[uses]     mbuf**: ``mbuf.ol_flags:PKT_TX_IPV4`` | ``PKT_TX_IPV6``,\n   ``mbuf.ol_flags:PKT_TX_L4_NO_CKSUM`` | ``PKT_TX_TCP_CKSUM`` |\n   ``PKT_TX_SCTP_CKSUM`` | ``PKT_TX_UDP_CKSUM``.\n@@ -565,7 +571,7 @@ Supports L4 checksum offload.\n   ``PKT_RX_L4_CKSUM_BAD`` | ``PKT_RX_L4_CKSUM_GOOD`` |\n   ``PKT_RX_L4_CKSUM_NONE``.\n * **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_UDP_CKSUM,DEV_RX_OFFLOAD_TCP_CKSUM``,\n-  ``tx_offload_capa:DEV_TX_OFFLOAD_UDP_CKSUM,DEV_TX_OFFLOAD_TCP_CKSUM,DEV_TX_OFFLOAD_SCTP_CKSUM``.\n+  ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_UDP_CKSUM,DEV_TX_OFFLOAD_TCP_CKSUM,DEV_TX_OFFLOAD_SCTP_CKSUM``.\n \n \n .. _nic_features_macsec_offload:\n@@ -576,9 +582,10 @@ MACsec offload\n Supports MACsec.\n \n * **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_MACSEC_STRIP``.\n+* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_MACSEC_INSERT``.\n * **[uses]     mbuf**: ``mbuf.ol_flags:PKT_TX_MACSEC``.\n * **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_MACSEC_STRIP``,\n-  ``tx_offload_capa:DEV_TX_OFFLOAD_MACSEC_INSERT``.\n+  ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_MACSEC_INSERT``.\n \n \n .. _nic_features_inner_l3_checksum:\n@@ -589,6 +596,7 @@ Inner L3 checksum\n Supports inner packet L3 checksum.\n \n * **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM``.\n+* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM``.\n * **[uses]     mbuf**: ``mbuf.ol_flags:PKT_TX_IP_CKSUM``,\n   ``mbuf.ol_flags:PKT_TX_IPV4`` | ``PKT_TX_IPV6``,\n   ``mbuf.ol_flags:PKT_TX_OUTER_IP_CKSUM``,\n@@ -596,7 +604,7 @@ Supports inner packet L3 checksum.\n * **[uses]     mbuf**: ``mbuf.outer_l2_len``, ``mbuf.outer_l3_len``.\n * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_EIP_CKSUM_BAD``.\n * **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM``,\n-  ``tx_offload_capa:DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM``.\n+  ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM``.\n \n \n .. _nic_features_inner_l4_checksum:\ndiff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex 9b73d2377..856a54a8e 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -1214,6 +1214,50 @@ 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 API.\n+ */\n+static void\n+rte_eth_convert_txq_flags(const uint32_t txq_flags, uint64_t *tx_offloads)\n+{\n+\tuint64_t offloads = 0;\n+\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOMULTSEGS))\n+\t\toffloads |= DEV_TX_OFFLOAD_MULTI_SEGS;\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOVLANOFFL))\n+\t\toffloads |= DEV_TX_OFFLOAD_VLAN_INSERT;\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOXSUMSCTP))\n+\t\toffloads |= DEV_TX_OFFLOAD_SCTP_CKSUM;\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOXSUMUDP))\n+\t\toffloads |= DEV_TX_OFFLOAD_UDP_CKSUM;\n+\tif (!(txq_flags & ETH_TXQ_FLAGS_NOXSUMTCP))\n+\t\toffloads |= DEV_TX_OFFLOAD_TCP_CKSUM;\n+\n+\t*tx_offloads = offloads;\n+}\n+\n+/**\n+ * A conversion function from offloads API.\n+ */\n+static void\n+rte_eth_convert_txq_offloads(const uint64_t tx_offloads, uint32_t *txq_flags)\n+{\n+\tuint32_t flags = 0;\n+\n+\tif (!(tx_offloads & DEV_TX_OFFLOAD_MULTI_SEGS))\n+\t\tflags |= ETH_TXQ_FLAGS_NOMULTSEGS;\n+\tif (!(tx_offloads & DEV_TX_OFFLOAD_VLAN_INSERT))\n+\t\tflags |= ETH_TXQ_FLAGS_NOVLANOFFL;\n+\tif (!(tx_offloads & DEV_TX_OFFLOAD_SCTP_CKSUM))\n+\t\tflags |= ETH_TXQ_FLAGS_NOXSUMSCTP;\n+\tif (!(tx_offloads & DEV_TX_OFFLOAD_UDP_CKSUM))\n+\t\tflags |= ETH_TXQ_FLAGS_NOXSUMUDP;\n+\tif (!(tx_offloads & DEV_TX_OFFLOAD_TCP_CKSUM))\n+\t\tflags |= ETH_TXQ_FLAGS_NOXSUMTCP;\n+\n+\t*txq_flags = flags;\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@@ -1221,6 +1265,7 @@ 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_txconf local_conf;\n \tvoid **txq;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);\n@@ -1265,8 +1310,23 @@ 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+\t/*\n+\t * Convert between the offloads API to enable PMDs to support\n+\t * only one of them.\n+\t */\n+\tlocal_conf = *tx_conf;\n+\tif (tx_conf->txq_flags & ETH_TXQ_FLAGS_IGNORE) {\n+\t\trte_eth_convert_txq_offloads(tx_conf->offloads,\n+\t\t\t\t\t     &local_conf.txq_flags);\n+\t\t/* Keep the ignore flag. */\n+\t\tlocal_conf.txq_flags |= ETH_TXQ_FLAGS_IGNORE;\n+\t} else {\n+\t\trte_eth_convert_txq_flags(tx_conf->txq_flags,\n+\t\t\t\t\t  &local_conf.offloads);\n+\t}\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, &local_conf);\n }\n \n void\ndiff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h\nindex e02d57881..da91f8740 100644\n--- a/lib/librte_ether/rte_ethdev.h\n+++ b/lib/librte_ether/rte_ethdev.h\n@@ -692,6 +692,12 @@ struct rte_eth_vmdq_rx_conf {\n  */\n struct rte_eth_txmode {\n \tenum rte_eth_tx_mq_mode mq_mode; /**< TX multi-queues mode. */\n+\t/**\n+\t * Per-port Tx offloads to be set using DEV_TX_OFFLOAD_* flags.\n+\t * Only offloads set on tx_offload_capa field on rte_eth_dev_info\n+\t * structure are allowed to be set.\n+\t */\n+\tuint64_t offloads;\n \n \t/* For i40e specifically */\n \tuint16_t pvid;\n@@ -734,6 +740,15 @@ struct rte_eth_rxconf {\n \t\t(ETH_TXQ_FLAGS_NOXSUMSCTP | ETH_TXQ_FLAGS_NOXSUMUDP | \\\n \t\t ETH_TXQ_FLAGS_NOXSUMTCP)\n /**\n+ * When set the txq_flags should be ignored,\n+ * instead per-queue Tx offloads will be set on offloads field\n+ * located on rte_eth_txq_conf struct.\n+ * This flag is temporary till the rte_eth_txq_conf.txq_flags\n+ * API will be deprecated.\n+ */\n+#define ETH_TXQ_FLAGS_IGNORE\t0x8000\n+\n+/**\n  * A structure used to configure a TX ring of an Ethernet port.\n  */\n struct rte_eth_txconf {\n@@ -744,6 +759,12 @@ struct rte_eth_txconf {\n \n \tuint32_t txq_flags; /**< Set flags for the Tx queue */\n \tuint8_t tx_deferred_start; /**< Do not start queue with rte_eth_dev_start(). */\n+\t/**\n+\t * Per-queue Tx offloads to be set  using DEV_TX_OFFLOAD_* flags.\n+\t * Only offloads set on tx_queue_offload_capa or tx_offload_capa\n+\t * fields on rte_eth_dev_info structure are allowed to be set.\n+\t */\n+\tuint64_t offloads;\n };\n \n /**\n@@ -968,6 +989,8 @@ struct rte_eth_conf {\n /**< Multiple threads can invoke rte_eth_tx_burst() concurrently on the same\n  * tx queue without SW lock.\n  */\n+#define DEV_TX_OFFLOAD_MULTI_SEGS\t0x00008000\n+/**< Device supports multi segment send. */\n \n struct rte_pci_device;\n \n@@ -990,9 +1013,12 @@ struct rte_eth_dev_info {\n \tuint16_t max_vmdq_pools; /**< Maximum number of VMDq pools. */\n \tuint64_t rx_offload_capa;\n \t/**< Device per port RX offload capabilities. */\n-\tuint32_t tx_offload_capa; /**< Device TX offload capabilities. */\n+\tuint64_t tx_offload_capa;\n+\t/**< Device per port TX offload capabilities. */\n \tuint64_t rx_queue_offload_capa;\n \t/**< Device per queue RX offload capabilities. */\n+\tuint64_t tx_queue_offload_capa;\n+\t/**< Device per queue TX offload capabilities. */\n \tuint16_t reta_size;\n \t/**< Device redirection table size, the total number of entries. */\n \tuint8_t hash_key_size; /**< Hash key size in bytes */\n@@ -2027,6 +2053,11 @@ int rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,\n  *   - The *txq_flags* member contains flags to pass to the TX queue setup\n  *     function to configure the behavior of the TX queue. This should be set\n  *     to 0 if no special configuration is required.\n+ *     This API is obsolete and will be deprecated. Applications\n+ *     should set it to ETH_TXQ_FLAGS_IGNORE and use\n+ *     the offloads field below.\n+ *   - The *offloads* member contains Tx offloads to be enabled.\n+ *     Offloads which are not set cannot be used on the datapath.\n  *\n  *     Note that setting *tx_free_thresh* or *tx_rs_thresh* value to 0 forces\n  *     the transmit function to use default values.\n",
    "prefixes": [
        "dpdk-dev",
        "v6",
        "2/4"
    ]
}