get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 45327,
    "url": "http://patches.dpdk.org/api/patches/45327/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180925143719.23339-4-jackmin@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": "<20180925143719.23339-4-jackmin@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180925143719.23339-4-jackmin@mellanox.com",
    "date": "2018-09-25T14:37:19",
    "name": "[v2,3/3] net/mlx5: eswitch-modify TTL actions",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "e35d16f39d11e04e038ac2cc53dee621f497d4ba",
    "submitter": {
        "id": 1065,
        "url": "http://patches.dpdk.org/api/people/1065/?format=api",
        "name": "Xiaoyu Min",
        "email": "jackmin@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/20180925143719.23339-4-jackmin@mellanox.com/mbox/",
    "series": [
        {
            "id": 1496,
            "url": "http://patches.dpdk.org/api/series/1496/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1496",
            "date": "2018-09-25T14:37:16",
            "name": "ethdev: add generic TTL rewrite actions",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/1496/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/45327/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/45327/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 A2B981B3B5;\n\tTue, 25 Sep 2018 16:38:38 +0200 (CEST)",
            "from EUR01-HE1-obe.outbound.protection.outlook.com\n\t(mail-he1eur01on0084.outbound.protection.outlook.com [104.47.0.84])\n\tby dpdk.org (Postfix) with ESMTP id 94F0B1B3B1\n\tfor <dev@dpdk.org>; Tue, 25 Sep 2018 16:38:37 +0200 (CEST)",
            "from dev-r630-08.mtbc.labs.mlnx (118.201.220.138) by\n\tAM5PR0501MB2020.eurprd05.prod.outlook.com (2603:10a6:203:1a::18) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.22;\n\tTue, 25 Sep 2018 14:38:33 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com;\n\ts=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=JymLQkmq6SuKOQ69SipgSYjpG0CzcrTEaZQvDRguaJA=;\n\tb=nT1hM4ky83LXfVhKAOyB9MvBJ2CGNuaNUJjastmaxFNdS1EGZJp9JViMDvi5x8/Uzcg7XfAYDctMSc0likC2G56fr7o4OtFS8PrZP1pdB+zTN0nO/WlOxr8VGte5vk8HpyHEzddTO/Duy3kc5Kwjl5/i7SGZkTSwT4kmvCbFJO0=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=jackmin@mellanox.com; ",
        "From": "Xiaoyu Min <jackmin@mellanox.com>",
        "To": "ferruh.yigit@intel.com, Shahaf Shuler <shahafs@mellanox.com>,\n\tYongseok Koh <yskoh@mellanox.com>",
        "Cc": "dev@dpdk.org",
        "Date": "Tue, 25 Sep 2018 22:37:19 +0800",
        "Message-Id": "<20180925143719.23339-4-jackmin@mellanox.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20180925143719.23339-1-jackmin@mellanox.com>",
        "References": "<20180925134718.18945-1-jackmin@mellanox.com>\n\t<20180925143719.23339-1-jackmin@mellanox.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[118.201.220.138]",
        "X-ClientProxiedBy": "HK2PR04CA0045.apcprd04.prod.outlook.com\n\t(2603:1096:202:14::13) To AM5PR0501MB2020.eurprd05.prod.outlook.com\n\t(2603:10a6:203:1a::18)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "244f9a85-0e3b-4073-d35f-08d622f49372",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);\n\tSRVR:AM5PR0501MB2020; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; AM5PR0501MB2020;\n\t3:c60rsdiAgKFSuJOIcENXhtoWp0gsyekcSDYj2gVRunBVYDkJ4agf5KZd5hBSbOdE8mXnYIFjhZ9PWzF6iNq9PhK82dFio1Wdaq6QsFAXUa/1GaYFwZml6NtGpc7x0AwiGwjUTH3vOzLfFnKwijucGBcFMSfJlmW5vnAL0wse44hlWbB1Al9WJx5hpL/dLLVgZ/Zgi9nMt4ZKakRUBbBbMlLrO6n1R3QLcztvWZW5/zt17J7ZSRD7NWn0oH4AXpz3;\n\t25:/ztJir9zRF7vnC9KzM0VskCOgfcHl2VY5a0/0vWxBWGgjtkz6Tp1gihy7sX7OgwakPQWn7jOhIxqMoGuzjC9xUALU1LBXPR9nBTUT0fE03kFexe+aEkD4uMF1mw2oenLzdLG1RJRIgARxtE2AMV7g6fCgKoXcJsOr0IfVV09yZHovF/PrWVMIuwiluQTcx6hsdXnPK6MpyacM6lAPmOV3w/kwTbMxbTGVmvHbwRY1P3y427Ritr+oG8o+OVIXuBy2ZK68DwTu9Ac3A089/UddwWyBg1tWh68q3swluFfP20Bliv1jT3ZHP9Z7xLyYElT3JhTvxeNQLiX2vJaSDr4gg==;\n\t31:ZxsHlU2/qDniSCCfJUcyQp7YnRmrGSFChwmVfkiusJEW8RGSorGhOOMsg0sElwIe7EI62ALy3wSFvdzLdqObdSPHYWTkrMIX/tbONukalMmtGNa2QsbD88qtYByeJ4WTMYU/Ts/nWijp3Ep4wB5JJY2iAWnxh982bMEhQ1mzDZSW7bRMQPhJxKeXcKWhLIAs3J1A/+MoWD0Xo0BTcH+EqWzWTXfaONpOAvD4wfACxr4=",
            "1; AM5PR0501MB2020;\n\t20:wLcARC2+pWvNXuSuG2LL3aVojR18iRIbbAIvGi9TIHNrIeqX1ezaoF6P/4nL9vQwjXe/K9M85Ys8VNb52C5KWRBBc4axYg4ERBipdHNLd/6Z2PAGDJYrJxugUblv9y1o5qsEg01ayZpsVldqrGYuSOEQ5lhNDCgieNjMMXUUXKRXCPH3WhDBIl9mHNAU74+O5QkBZnhJ1HdjBu82LiXrZoALHY4mNt/MnUv8bs5U8IAMxr/Y+6+Q1Ek2uy21laY1tlddFabAE9golWCRkCH29ZZ5fkwQ9DGfQ79o6hiQ3XBh3vAr8NHMiAtDObrWgLNLKD4vAls0wGb4d3217IKuGs6WatvLKvWLXKEVubqJOq0H4479QW1Fgc7BMYFtYLdYTJG9Enis5h7lkn7VlpSieTV2pALU+gXO5rTyx5VfXjGDAicpqOeioXg/SNKNpVHRWHd6bxIz5PfZco47pHGzr0MdTZCA6u6HQiiLEDcxccCso4X8QoChYPHpbbFValH8;\n\t4:L2EW4JIJkJJVq2SGDQg5xjimgLF2SONMJXXi8kkuay39xTR9kk912h6J+vIJsLtRuvYeSNuEkidYGH9D5fHHY0tnla4vvtJsUGVbRp1YimKvEAn7h2EOuT6xJX59mlLJpzHn3bQwRJak1OrADTyq8kxpLwtWDORm28hZDGHN2TFcfocGY+dYQIcGMbjU/Xh0Ku06evhBnC7iIAdhfMApkrpJWl4tO0ECQZSxFZxrjIr+mtmcq29KLsk5eujL/mdNOy/KJ+mWVvn+ssyOhya8zQ==",
            "=?us-ascii?Q?1; AM5PR0501MB2020;\n\t23:MTQAvnRuYE764mjMaFuWpcSiBjo4a8n0EkE81JQ?=\n\tLh/T7vRuH5rhdJcFNgHlLGkk0PRORMZar0XNU8eMwtFiy3YARrYb79aYp3Qj/FoJZs4riEYkzwzkt/w2kKRE/tAPvFViqLexX/KjCKxVAELYRM2xjqmwe4Z+6wlGQU4wdDTC/v/Kix14w/6qBDYK+ENaLtt8BOmSYYHJi2v6F7kAfxX0iY0yZnmcu3UJIqM/J5VxFPpH/9Z/0HedjpxDr8rJ0xrEIp3PkNHkmHbg2F/JGZfNx0a2IprzVCgYoZP3G5siAm1bwV4SQ64Dz9jv1lW/tp2SDTaO8yCTHjoijqyAO7HmceFqih4YZUQLAMt7o/30wY6NdA3E/eylIjSgMH0KqTwtVC//isWD0eLIzfh6rjJelTBSDltfyOmHjXarZLk334qVXXa1oSae/EfuoS08BKt5LQOzIXjgzy8TrulmSadMzsOVY40AHwR/i0cphwWTDQdwLN4OYcpYJYdHteqxoB7AKUizYzXr/JNJ/SJ99d72ROiu60Mo6OtFAZwossob5SEfkLrWXouuDd9tarOMRYbftzIuPB8RnVQWcrPhURqgSFe90cdCkba++igwDu+Cavte/FWFnFalUl5gWJrF1F7EoPx/4Hvx3zJ/9dx3BW9BKyqhSIY685kEloBdVYcM9pyBG6tPp/2WMI4pbvJFdRnNQWV7WlynLjInB+MboKYPincl2ax0CoDr60+ERLH/3Qmh6iGEZ9UcLmE9cOBRN5GfM5/fQJ7EkhBv2N1c2Qkj4o/WYPjDeu5ClMpLA94RowfxMblo2KM3g72DWZEFWmhBJB+UGgw0deNDXwF6ER0VR6pKp6zb/OIDrxWLHNigNtrXPC2esYEFwKj8Ei6/eOhDclOg9xUyNqv65YLe3EWXM+6InNbxjXuCAbduhWfCui5AcflIrRPFJOWYSOaw2RRuzN9NfM1lM8tGuDu9wNa5ejbmeKmhCSVJGzcnYhrqKhyMyY5kiuiNzyXxesyWLuj6/E0X6Qq8tlo6ZFXJpeueyR57yXuKKzPDqDao3y42+k4D4RTGstmCoEB5zs3MBXWPCsXujkrQBPVu/4+Jt3yOXqHwkOQ3bfwRitMLbsC4afyAzXorcRQ2WuPTLolQhctU7G9WJM8uNSNHFix+sRNMgfRC/6Ok2Q1QpxPAt1f/cnVn0WYs4xfxbMBcqCdQf3i8adr4dWWrtwuCoN+cttQjd235GRe2+V76Bok+CDovNef0VitlMy18N5visRLYq",
            "1; AM5PR0501MB2020;\n\t6:dDfCM+dCMNoXwpxk04VXKDCV0JEEZ8gyodYdJB8isWKgYLN3gSqewX8kfDfZfdNLNM0sMycJ+J5eSv7vKEAubQhxGKlggorl++L51trCQHfs0/XWMWJbIGvZT9a/9eUzESX39Im2owribWnZcKhJFgLVX28lplaOygne17PUJhttXzGibGawhAbfD7uEgvQSt6FUyQmKPtCP/1oZE3ZNrbbgEvSbD7mdJMZWYZis239FOVtMm9oJgjQwGSA8Lt/otsmzDISVh35TyaE0pkuMbUTGQYNc9PWfEYxe5LHpkbjkcikFU7J8i90/L8AeQs/LCMLVq0o6JYyDBP0bb3kc2bKJPEP8XAy/5a8s4nbt4a9kitQNJX+OP5nU27mV1LwesDErtyjq/P8nJeF0FCUQT7TlApPijfIFJq11wCVbZFCsOmEKEKEJH8BY+uqNZYMCmw9zhltabb5f26iBjKz1EA==;\n\t5:ZD48J7ccspAHSprwtEWCDvL5BblDjKR8mO2CeQ11cTd23Pq/Q+erzoxQO/K6iBVxgXn8gFJu0Y73MYry26s3OlPcv/ZfLgwvOjQYHqmA4IGoY2neMI0sFX56gcoKOkf3GKN4+fzMl5cLa7BZbGKGnzUJW1X+DDGloVlOjes2BXc=;\n\t7:kHu9ZsrtRfv81/JO4IxN8BnXXo/F8sflAhO1P7hZZp/p8gGxTWTqH4gxf5rrpfR0QyeFYfQOlcjRChqDy6pT8NoyUTpLcTThofGTfELMOV01sCgpbFQ1aZVY2ZHRqVUu2aGrLyf39pRHu+kvdSGGRlM9dq3USU16TovhTYWMojlDKz9O4SY0sNhX6eNrb9mYrq+PSv+OXQr56+Mesr2MZuLCS7a3ut8xkUtZ95YxKqaEzjh9eTOaGkPNxEKUImL/"
        ],
        "X-MS-TrafficTypeDiagnostic": "AM5PR0501MB2020:",
        "X-Microsoft-Antispam-PRVS": "<AM5PR0501MB20203155CF75B6BED631C874CC160@AM5PR0501MB2020.eurprd05.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(93006095)(93001095)(3231355)(944501410)(52105095)(6055026)(149066)(150027)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(201708071742011)(7699051);\n\tSRVR:AM5PR0501MB2020; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0501MB2020; ",
        "X-Forefront-PRVS": "08062C429B",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(376002)(39860400002)(346002)(396003)(136003)(366004)(189003)(199004)(6512007)(478600001)(48376002)(14444005)(6486002)(476003)(50226002)(6116002)(486006)(2616005)(3846002)(956004)(53936002)(68736007)(8936002)(16586007)(97736004)(110136005)(386003)(305945005)(81156014)(4326008)(1076002)(25786009)(6506007)(16526019)(186003)(36756003)(2906002)(26005)(316002)(7736002)(81166006)(47776003)(76176011)(11346002)(575784001)(51416003)(86362001)(52116002)(446003)(66066001)(6666003)(6636002)(50466002)(105586002)(8676002)(5660300001)(106356001)(34290500001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0501MB2020;\n\tH:dev-r630-08.mtbc.labs.mlnx; \n\tFPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; ",
        "Received-SPF": "None (protection.outlook.com: mellanox.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "NnQ2BPS7oecWopaNHkzdJHeQ7Cji8rdI7eAgVMAVjxJbuU+n5O3Bq0F8/3TUYWsxYwQ/5TZsZueCFlo8TzFvdjELJyiKMIkiDzCHiyii893DZnKWCyh5FvVnMCMINdxhTzEitPGSe9GyBum5fupdM6zwk3fPzHq5HPfC6u6iHbi6CBN+SzzE90LX+hUHja+9FmNnmUFXPs37TMPhFhPAPyvCcsT5b7tzB8GVmZC343CYOw/xk+KA95GPM+CJwOmlN6jcmBqHg86vDGkaa9J4+UfAJBxZplUgPbAARY79EB5phMnDFzrVPPbCDI5lVBcpJ5jV7Kxhgr1GYFyTSthTwd+Wi3Qu3tY1lYdxrdBu7uY=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "Mellanox.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "25 Sep 2018 14:38:33.9997\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "244f9a85-0e3b-4073-d35f-08d622f49372",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "a652971c-7d2e-4d9b-a6a4-d149256f461b",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "AM5PR0501MB2020",
        "Subject": "[dpdk-dev] [PATCH v2 3/3] net/mlx5: eswitch-modify TTL actions",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Offload following modify TTL actions to E-Switch via\nTC-Flower driver\n\n- RTE_FLOW_ACTION_TYPE_SET_TTL\n- RTE_FLOW_ACTION_TYPE_DEC_TTL\n\nThe corresponding IP protocol rte_flow_item_ipv[4|6]\nmust be present in rte_flow pattern otherwith PMD\nreturn error\n\nSigned-off-by: Xiaoyu Min <jackmin@mellanox.com>\n---\n drivers/net/mlx5/mlx5_flow.h     |  2 +\n drivers/net/mlx5/mlx5_flow_tcf.c | 74 +++++++++++++++++++++++++++++++-\n 2 files changed, 74 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h\nindex be182a643..5237e31dd 100644\n--- a/drivers/net/mlx5/mlx5_flow.h\n+++ b/drivers/net/mlx5/mlx5_flow.h\n@@ -93,6 +93,8 @@\n #define MLX5_ACTION_SET_IPV6_DST (1u << 14)\n #define MLX5_ACTION_SET_TP_SRC (1u << 15)\n #define MLX5_ACTION_SET_TP_DST (1u << 16)\n+#define MLX5_ACTION_SET_TTL (1u << 17)\n+#define MLX5_ACTION_DEC_TTL (1u << 18)\n \n /* possible L3 layers protocols filtering. */\n #define MLX5_IP_PROTOCOL_TCP 6\ndiff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c\nindex 85c92f369..af88c4a0d 100644\n--- a/drivers/net/mlx5/mlx5_flow_tcf.c\n+++ b/drivers/net/mlx5/mlx5_flow_tcf.c\n@@ -217,6 +217,10 @@ struct tc_pedit_sel {\n #define TP_PORT_LEN 2 /* Transport Port (UDP/TCP) Length */\n #endif\n \n+#ifndef TTL_LEN\n+#define TTL_LEN 1\n+#endif\n+\n /** Empty masks for known item types. */\n static const union {\n \tstruct rte_flow_item_port_id port_id;\n@@ -297,7 +301,9 @@ struct flow_tcf_ptoi {\n \t\t(act) == RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC  || \\\n \t\t(act) == RTE_FLOW_ACTION_TYPE_SET_IPV6_DST  || \\\n \t\t(act) == RTE_FLOW_ACTION_TYPE_SET_TP_SRC    || \\\n-\t\t(act) == RTE_FLOW_ACTION_TYPE_SET_TP_DST) ?    \\\n+\t\t(act) == RTE_FLOW_ACTION_TYPE_SET_TP_DST    || \\\n+\t\t(act) == RTE_FLOW_ACTION_TYPE_SET_TTL       || \\\n+\t\t(act) == RTE_FLOW_ACTION_TYPE_DEC_TTL) ?       \\\n \t\t1 : 0; })\n #define MAX_PEDIT_KEYS (128)\n #define SZ_PEDIT_KEY_VAL (4)\n@@ -321,6 +327,34 @@ flow_tcf_calc_pedit_keys(const uint64_t size)\n \treturn keys;\n }\n \n+static void\n+flow_tcf_pedit_key_set_dec_ttl(const struct rte_flow_action *actions,\n+\t\t\t\tstruct pedit_parser *p_parser,\n+\t\t\t\tuint64_t item_flags)\n+{\n+\tint idx = p_parser->sel.nkeys;\n+\n+\tp_parser->keys[idx].mask = 0xFFFFFF00;\n+\tif (item_flags & MLX5_FLOW_LAYER_OUTER_L3_IPV4) {\n+\t\tp_parser->keys_ex[idx].htype = TCA_PEDIT_KEY_EX_HDR_TYPE_IP4;\n+\t\tp_parser->keys[idx].off = 8; /* IPv4 TTL Offset */\n+\t}\n+\tif (item_flags & MLX5_FLOW_LAYER_OUTER_L3_IPV6) {\n+\t\tp_parser->keys_ex[idx].htype = TCA_PEDIT_KEY_EX_HDR_TYPE_IP6;\n+\t\tp_parser->keys[idx].off = 7; /* IPv6 HopLimit Offset */\n+\t}\n+\tif (actions->type == RTE_FLOW_ACTION_TYPE_DEC_TTL) {\n+\t\tp_parser->keys_ex[idx].cmd = TCA_PEDIT_KEY_EX_CMD_ADD;\n+\t\tp_parser->keys[idx].val = 0xFF;\n+\t} else {\n+\t\tp_parser->keys_ex[idx].cmd = TCA_PEDIT_KEY_EX_CMD_SET;\n+\t\tp_parser->keys[idx].val =\n+\t\t\t((const struct rte_flow_action_set_ttl *)\n+\t\t\t actions->conf)->ttl_value;\n+\t}\n+\tp_parser->sel.nkeys = (++idx);\n+}\n+\n static void\n flow_tcf_pedit_key_set_tp_port(const struct rte_flow_action *actions,\n \t\t\t\tstruct pedit_parser *p_parser,\n@@ -408,6 +442,11 @@ flow_tcf_create_pedit_mnl_msg(struct nlmsghdr *nl,\n \t\t\tflow_tcf_pedit_key_set_tp_port(*actions,\n \t\t\t\t\t\t\t&p_parser, item_flags);\n \t\t\tbreak;\n+\t\tcase RTE_FLOW_ACTION_TYPE_SET_TTL:\n+\t\tcase RTE_FLOW_ACTION_TYPE_DEC_TTL:\n+\t\t\tflow_tcf_pedit_key_set_dec_ttl(*actions,\n+\t\t\t\t\t\t\t&p_parser, item_flags);\n+\t\t\tbreak;\n \t\tdefault:\n \t\t\tgoto pedit_mnl_msg_done;\n \t\t}\n@@ -488,6 +527,14 @@ flow_tcf_get_pedit_actions_size(const struct rte_flow_action **actions,\n \t\t\tkeys += flow_tcf_calc_pedit_keys(TP_PORT_LEN);\n \t\t\tflags |= MLX5_ACTION_SET_TP_DST;\n \t\t\tbreak;\n+\t\tcase RTE_FLOW_ACTION_TYPE_SET_TTL:\n+\t\t\tkeys += flow_tcf_calc_pedit_keys(TTL_LEN);\n+\t\t\tflags |= MLX5_ACTION_SET_TTL;\n+\t\t\tbreak;\n+\t\tcase RTE_FLOW_ACTION_TYPE_DEC_TTL:\n+\t\t\tkeys += flow_tcf_calc_pedit_keys(TTL_LEN);\n+\t\t\tflags |= MLX5_ACTION_DEC_TTL;\n+\t\t\tbreak;\n \t\tdefault:\n \t\t\tgoto get_pedit_action_size_done;\n \t\t}\n@@ -988,13 +1035,20 @@ flow_tcf_validate(struct rte_eth_dev *dev,\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_DST:\n \t\t\taction_flags |= MLX5_ACTION_SET_TP_DST;\n \t\t\tbreak;\n+\t\tcase RTE_FLOW_ACTION_TYPE_SET_TTL:\n+\t\t\taction_flags |= MLX5_ACTION_SET_TTL;\n+\t\t\tbreak;\n+\t\tcase RTE_FLOW_ACTION_TYPE_DEC_TTL:\n+\t\t\taction_flags |= MLX5_ACTION_DEC_TTL;\n+\t\t\tbreak;\n \t\tdefault:\n \t\t\treturn rte_flow_error_set(error, ENOTSUP,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t\t\t  actions,\n \t\t\t\t\t\t  \"action not supported\");\n \t\t}\n-\t\tif (IS_MODIFY_ACTION(actions->type)) {\n+\t\tif (IS_MODIFY_ACTION(actions->type) &&\n+\t\t    actions->type != RTE_FLOW_ACTION_TYPE_DEC_TTL) {\n \t\t\tif (!actions->conf)\n \t\t\t\treturn rte_flow_error_set(error, ENOTSUP,\n \t\t\t\t\t\tRTE_FLOW_ERROR_TYPE_ACTION_CONF,\n@@ -1029,6 +1083,16 @@ flow_tcf_validate(struct rte_eth_dev *dev,\n \t\t\t\t\t\t\"no TCP/UDP item found in\"\n \t\t\t\t\t\t\" pattern\");\n \t}\n+\tif (action_flags &\n+\t   (MLX5_ACTION_SET_TTL | MLX5_ACTION_DEC_TTL)) {\n+\t\tif (!(item_flags &\n+\t\t     (MLX5_FLOW_LAYER_OUTER_L3_IPV4 |\n+\t\t      MLX5_FLOW_LAYER_OUTER_L3_IPV6)))\n+\t\t\treturn rte_flow_error_set(error, ENOTSUP,\n+\t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n+\t\t\t\t\t\t  actions,\n+\t\t\t\t\t\t  \"no IP found in pattern\");\n+\t}\n \treturn 0;\n }\n \n@@ -1178,6 +1242,8 @@ flow_tcf_get_actions_and_size(const struct rte_flow_action actions[],\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_IPV6_DST:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_SRC:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_DST:\n+\t\tcase RTE_FLOW_ACTION_TYPE_SET_TTL:\n+\t\tcase RTE_FLOW_ACTION_TYPE_DEC_TTL:\n \t\t\tsize += flow_tcf_get_pedit_actions_size(&actions,\n \t\t\t\t\t\t\t\t&flags);\n \t\t\tbreak;\n@@ -1451,6 +1517,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow,\n \t\t\t\t\t\t  RTE_BE16(0x0fff)));\n \t\t\tbreak;\n \t\tcase RTE_FLOW_ITEM_TYPE_IPV4:\n+\t\t\titem_flags |= MLX5_FLOW_LAYER_OUTER_L3_IPV4;\n \t\t\tmask.ipv4 = flow_tcf_item_mask\n \t\t\t\t(items, &rte_flow_item_ipv4_mask,\n \t\t\t\t &flow_tcf_mask_supported.ipv4,\n@@ -1490,6 +1557,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow,\n \t\t\t}\n \t\t\tbreak;\n \t\tcase RTE_FLOW_ITEM_TYPE_IPV6:\n+\t\t\titem_flags |= MLX5_FLOW_LAYER_OUTER_L3_IPV6;\n \t\t\tmask.ipv6 = flow_tcf_item_mask\n \t\t\t\t(items, &rte_flow_item_ipv6_mask,\n \t\t\t\t &flow_tcf_mask_supported.ipv6,\n@@ -1718,6 +1786,8 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow,\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_IPV6_DST:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_SRC:\n \t\tcase RTE_FLOW_ACTION_TYPE_SET_TP_DST:\n+\t\tcase RTE_FLOW_ACTION_TYPE_SET_TTL:\n+\t\tcase RTE_FLOW_ACTION_TYPE_DEC_TTL:\n \t\t\tna_act_index =\n \t\t\t\tmnl_attr_nest_start(nlh, na_act_index_cur++);\n \t\t\tflow_tcf_create_pedit_mnl_msg(nlh,\n",
    "prefixes": [
        "v2",
        "3/3"
    ]
}