From patchwork Tue Sep 25 13:47:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 45321 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B12FB1B1D5; Tue, 25 Sep 2018 15:47:57 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0083.outbound.protection.outlook.com [104.47.1.83]) by dpdk.org (Postfix) with ESMTP id 0FE171B1CF for ; Tue, 25 Sep 2018 15:47:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jZ+x0o+4JE15hOSNZ4qC7kuVtGxbL/dgh3M1mGO1Xzk=; b=Vw7br83DT/nl9PkEViJcAqnwO/AIIqL+v/Hq4b2lk1nHRRJ6XCk0Hj8yKLjdukl61SeOUk/KAWRB/80Hw537cSCSrh97SO/Z5bBaJYHfIevIcUJuN840ruFk/cQUJKFJInDjvo6dMRhf2Ri5O+PS/hK68gbCuANa6+gVad0nD3g= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=jackmin@mellanox.com; Received: from dev-r630-08.mtbc.labs.mlnx (118.201.220.138) by DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.22; Tue, 25 Sep 2018 13:47:50 +0000 From: Xiaoyu Min To: ferruh.yigit@intel.com, Adrien Mazarguil , John McNamara , Marko Kovacevic , Thomas Monjalon , Andrew Rybchenko Cc: dev@dpdk.org Date: Tue, 25 Sep 2018 21:47:16 +0800 Message-Id: <20180925134718.18945-2-jackmin@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180925134718.18945-1-jackmin@mellanox.com> References: <20180925134718.18945-1-jackmin@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [118.201.220.138] X-ClientProxiedBy: HK0PR03CA0050.apcprd03.prod.outlook.com (2603:1096:203:52::14) To DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3980f6ac-8c57-4f39-b052-08d622ed7e65 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0501MB2023; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 3:39H1ZGwSKW/Uyh/A/3bwWpMNX5O0bx8dM2aCpuqJwCiKMX7b0OQaLDa/qpV9SBH66S+6OqhUywSfnEx4Sb0sGUHAxOpDynOtfR6QgNLQq+hBQkUVrzIdcov62jjqXTjgHBRgiRqBAmfXBmEoaNGshEvfVdhMSIiK99HFvMc/dusKPtstGBp3p7AWkl2AZWvKmpVe0CmjOQLcHCfFsXTkoiN4zilE85UdTufACqJbwYHcbtBGyApXph4q9TEzLKSb; 25:CS3jWi7Eu4zH7l4LcbEwCEJfjNcM8v3vBiHWL60+P1ynYRo90PRn/y5EbcUVh0H+ugwgxYizQbJONajVT5Z7ESO/kHaFYrRnOR8iROlZDs9ZjUOSxlW3GX9S7n/4Kn1Rkb9VZrLp92r3FtucZLrDPaQVNj/qTIyraFISVXMpUIQdc6jAWXwpFeLvfBs/8DUB3RfGY73tQSaOsxPyeMLFEM/EgGbqhahcj+DAJQMtpZKl+wPQxQmRMnl+7PsU7hhbQDNnUljzchLvLJArJ7a2FpceDXuTU8c9Bc/B5dsYHvalGa5RioJu8ABLo61tlBE/ZM2rQvZCrRUH3Gj3Gvs7Lw==; 31:jG0xqXcYotPbsz3NlZaZ2/USxBYNQd+FYVZimxmR8jIw8XAhLbeMA5RRbEMGvkgDA7f4uQk+7JOsP9Aiwuf1i1LYzHu0aWHopHLdsgeJ60+GdFZneC4WWN9ilAoFvRHn8vGRah0BixazOIuokGtqOW2N2ZCDAZlETJJbl2k3kk9kJxEDOCujLvKqFfpYodxt81HkqNRsDQ4OGwzCvHGUr93L7Izl9c47ABnhT+rNq5g= X-MS-TrafficTypeDiagnostic: DB6PR0501MB2023: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 20:qptXJmCzTfY4vb9J7SVfGoqwpNrSLMpYZOxmWRd9uLwqVGilwvyMogM+lzPWqLnAnNDjUsQjtkc10+NyzWr5BIDc8U9KmKPlR5PEclRNX4iHl7gF8dUrV1b1J6THjIZ1QQxNVXoodODgni9TMgDFHPWPb6cB5W3Di0I1Fc311B74JfEZBDliTQQ3N5mgt4rMyKtBdoI5vZ3MzVVi4yYfO+9bCsk9Ym323RLEIx1WzJ4jJlvp//suPTtJzRHtPpJZFcxVWZj0dLJNAw1Ei+JWDdHDaZ3UxHzwWDJRZhyjJmi6gzyyJKpTJDzEgYuYNW4YaA+rZwYHyrDHoqwpkSDz8SFQ8yVS9TOU4q+x2LI3DBUEz9HtDfgqO6wwkYeYDDkY9WbxTfz46ZHrBn4d+4XxV8NAXa9elE477OkQFtrq2ddrIk5Erj33tV4Jcg0MMO/MNBytskrgVvrwAaaTKRAJS9Km5eOyBEkSRDFSNambscgQFpcqE95478kbdCjYeU31; 4:ky1PBmdiRYS2oqhb5OVZwV/lnf0SzD26yPETFLkGt/uxwe4I/U7LJdNB1vjdq8/4WO0r572GOdLvjaQqeNlOw1BcYixplokTeM1hMaG7Yg9wXNKhF3py9kmXMD2GNimF2AxSeGuCZ7fQS2r/qpC7/NImqxLSY4q0ex3xih1fFPDCAVHNuj6q5aI0ioWm7+DpVdrPWaMr1iKW1pvYzhmw2nMnv9W284t6eFkJXjlda5AK3YGr6VTMqO6U6YxCt8iiydUh/5UYoXbgNW5MtU976g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231355)(944501410)(52105095)(10201501046)(3002001)(6055026)(149066)(150027)(6041310)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051); SRVR:DB6PR0501MB2023; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2023; X-Forefront-PRVS: 08062C429B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(396003)(39860400002)(376002)(199004)(189003)(6512007)(4326008)(446003)(68736007)(11346002)(476003)(486006)(86362001)(2616005)(16586007)(956004)(3846002)(5660300001)(25786009)(6506007)(316002)(106356001)(26005)(110136005)(105586002)(6666003)(6116002)(386003)(1076002)(50226002)(186003)(16526019)(2906002)(36756003)(478600001)(81156014)(305945005)(7736002)(50466002)(52116002)(48376002)(81166006)(51416003)(8676002)(97736004)(76176011)(66066001)(53936002)(47776003)(6486002)(8936002)(34290500001)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2023; H:dev-r630-08.mtbc.labs.mlnx; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0501MB2023; 23:vkk+de8Vce/RCPn2fIQW/AXuP/dw5pELodLbj65?= BFSjn76eJdXi/HU6VD81iSc0uQHpV6nVJEQM2Hm8ej0nGNKEqgLOZFBasPrPTNMfl3cnKGKLGSvcn+51hw8GH0S3lt+QnQyntIr0SAa7GZqAmWZrksLTejUtehMzg6tZc9wiQWdWaxaeEbfvQQq5LrQKpVuhnuf93CRWPfo0OlPuXxIPfoi+Z1UyzhyW7O3gFY1dJ8IfGV1CSA5Dm39oXUvL/q+utYqw2hoo1TVuXujySdhIiJSEAMMlGgQwxFAz0mdWW+NRoiar3Nx4VBOLR469BjIDhJB9IfDObIcZhzGv1JH8VXVngwRMFJ/3Zr+NZ4sPGwhYf3rAF/oJEqpC73gPgepFfKxapNe+k1WheP3I5SsMb0Zxn26w+ajemWmBOgwVGturLBOcuWlNIOMYdRf7nNhEF7qmpWK711c99eEgn/tWk3wQh2LfAFR9qWfGYkte+FoP272jnBiy6QBn/3m9mUA25DS4B0WgeNs3QKObupd8Qprg5VhPxF9tVrk350wqOQHIvECpiTU8eyrgTLlPdK4/Zrf6V/1/aAFjUVNLzcji9G2FNn+69Nmh4enyJ8L6BLPpVePRDKvYQJOaSJqqn2M2HKmqxrWzjGQx7EzIsXhs2oIeFJxDb3CsCVwrk+lXBPagJ01pf+9X5R6fBV3cx3tHAuyzUJg3z23ULbItOY66hk37Y/vE/xgnlHXKKP1Gu8dI65Ow9VlACuSAdiTsV48kbN8Vfj034LryHJZ6P2xuc4j0f4BkW7WMONQHe+ZZr9tX5WrR65LevJRojASnlUydCp9CD2qcq7wURgb88ts1vA4FQ7IYA0nRXJvwufKuwpfEVfL0UkiQjDTN57OOiuhiGTd9rP6ouNu/OJHeq0uNxEHjfHjdISWfK2z5qD6u+ONYLoGmJZwXrMew9uBlZAQaEJV2Drjdz5Tc23rivWlk0iGIKdOXU6JeB5o/Dob2UQNAEe3XHbJo/0NUJ8pRf+gqQKBTLbJfDtZxMiRv85K1gm9yuv7b4qMa+aUmFEId0A2B9L3EoJEzOeLPjwiYJdprAT3UAxRfO0yoP26GANMbPdY60cqCK5HeA7x78iq60H2BXnzK7KLKPkwcVD3V7ctDl3fpi74Wet6uWXzSjC5K5PlVDv/uHUVFkdY+5KuAg4rK/5Q43cq9ZF51KzlsulEf2baGrsoAO/WQt63oVKw== X-Microsoft-Antispam-Message-Info: NqIYhaqr7QFI88Is3Qy4yrx+9XFlTT9YrhWxlDDRdn8UdWqwue0WzXEJPTPnTRM2A7LhbVjG9x1+wWoKUGX0LREGoqAtA6vhtX3lHinD7KHivF10zAyJMd1gHajvNaoQdwfSWZynGTWhezbF4gx1uE93LdrhDDGZpR82ZvKmQ7S//x2aizjYxG65kbiEoOLNnZ1Up6qUdb7h7rO5EB3H3o+tcxg3LsVtmu4n47UuiHO44Bv9TvFGmZZq69dSWGVfDzevwu9IvePHvT13qHXGZn0/RAW95ZMwkL3pRWjfcUjob6JUtgrZMONIwJC4xnDIqjqRg6raw4JmrQyrxWc2X/FsMH0eGI+4v/u/WqJRToY= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 6:jQXt6A4O66UNDzH55rjNLH3bGxeQz1NIIVqof5oEyxTIJ6yalrlqGv3sZCDEfo9vQnXJFnR/Gc3QXx//DCkfsZe11grDc7Xm84uTuTDW60okgcJNtgqoKObcoDXxMoL4S5/ae1frGFZTz/evt7gXhLuOW1rSWoM6mboiF6XykkMi01Pw9VywA83NMFfKrOwEQuAkCID2gcJf6WA+33ytUAhKM4mNzXjc7FGCba4bXU7L+Zum7Kwy9TR68TjDmEO+bge7co71a3rd+6QQ30XLSZm5P2245Svhz96Xi2LB9M+SSbfDSXnrUCAWnQIOJ9HBGF4elxUGET84sBdObxs50CZWPqWtM/IsfrqJlsEPwwsHYfUixtWPcFfzUUY2krN81OCboqgvjDKoTODXe5VMxausuSDD9Mb06m7P4p9dHvt/gg1Tf6EnycwedMZAwI44uG0iq99f9a2tmWfersYTFg==; 5:k1jyOw8pJoVWEXTtOSgtPNSNHdeo37LNovV5UFmXKFpJwElJnN1fXpCeGYT+yREpubSaoYYApu7YOv8vqby4X/Rswu+3YG/dLCH7wKsGYnI0yzX6SSRAnB/1x3xMqAtNuf6YsfizLGTqblVWGM9Me0UIGH6mPUr3JD4DFJZTN2c=; 7:A7ebQMOBLggJ+2z2/5aE1T8AhonSCUM2FgNPJE0M5A7cwo2R9UjTUk8tnbBUGpzennZLEOZbV7ZdJV4lEMsx+kqXFqj+lRJ5zu+b4SMf6jCIxz9m4KBsUGEQnTWGaGf8KrmbbYZRd4Ieaopvg/h7hOZtYM095JrKwRCoCOcfHnE2D56Jars/5L+8k6QogNdqskGL1E0gr59sbjHdpbSnAUmYL64+5OtSJOmk2CfqyD++nyG3xwUPo53ISkbh6cJ8 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2018 13:47:50.6988 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3980f6ac-8c57-4f39-b052-08d622ed7e65 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2023 Subject: [dpdk-dev] [PATCH 1/3] ethdev: add generic TTL rewrite actions X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" rewrite TTL by decrease or just set it directly it's not necessary to check if the final result is zero or not This is slightly different from the one defined by openflow and more generic Signed-off-by: Xiaoyu Min --- doc/guides/prog_guide/rte_flow.rst | 30 +++++++++++++++++++++++++++++ lib/librte_ethdev/rte_flow.c | 2 ++ lib/librte_ethdev/rte_flow.h | 31 ++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 4faf8cb40..3aec0834b 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -2166,6 +2166,36 @@ Set a new TCP/UDP destination port number. | ``port`` | new TCP/UDP destination port | +---------------+-------------------------+ +Action: ``DEC_TTL`` +^^^^^^^^^^^^^^^^^^^ + +Decrease TTL value. + +.. _table_rte_flow_action_dec_ttl: + +.. table:: DEC_TTL + + +---------------+ + | Field | + +===============+ + | no properties | + +---------------+ + +Action: ``SET_TTL`` +^^^^^^^^^^^^^^^^^^^ + +Assigns a new TTL value. + +.. _table_rte_flow_action_set_ttl: + +.. table:: SET_TTL + + +---------------+--------------------+ + | Field | Value | + +===============+====================+ + | ``ttl_value`` | new TTL value | + +---------------+--------------------+ + Negative types ~~~~~~~~~~~~~~ diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index 409c79741..631f80efd 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -121,6 +121,8 @@ static const struct rte_flow_desc_data rte_flow_desc_action[] = { sizeof(struct rte_flow_action_set_tp)), MK_FLOW_ACTION(SET_TP_DST, sizeof(struct rte_flow_action_set_tp)), + MK_FLOW_ACTION(DEC_TTL, 0), + MK_FLOW_ACTION(SET_TTL, sizeof(struct rte_flow_action_set_ttl)), }; static int diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index c80771b25..b41e37a31 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -1547,6 +1547,26 @@ enum rte_flow_action_type { * See struct rte_flow_action_set_tp. */ RTE_FLOW_ACTION_TYPE_SET_TP_DST, + + /** + * Decrease TTL value directly + * + * If flow pattern doesn't define a valid RTE_FLOW_ITEM_TYPE_IPV4, or + * RTE_FLOW_ITEM_TYPE_IPV6, the PMD should return a + * RTE_FLOW_ERROR_TYPE_ACTION error. + */ + RTE_FLOW_ACTION_TYPE_DEC_TTL, + + /** + * Set TTL value + * + * If flow pattern doesn't define a valid RTE_FLOW_ITEM_TYPE_IPV4, or + * RTE_FLOW_ITEM_TYPE_IPV6, the PMD should return a + * RTE_FLOW_ERROR_TYPE_ACTION error. + * + * See struct rte_flow_action_set_ttl + */ + RTE_FLOW_ACTION_TYPE_SET_TTL, }; /** @@ -1955,6 +1975,17 @@ struct rte_flow_action_set_tp { uint16_t port; }; +/** + * RTE_FLOW_ACTION_TYPE_SET_TTL + * + * Set the TTL value directly for IPv4 or IPv6 + * The RTE_FLOW_ITEM_TYPE_IPV4 or RTE_FLOW_ITEM_TYPE_IPV6 + * must be present in pattern + */ +struct rte_flow_action_set_ttl { + uint8_t ttl_value; +}; + /* * Definition of a single action. * From patchwork Tue Sep 25 13:47:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 45322 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8519C1B1E8; Tue, 25 Sep 2018 15:48:02 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80041.outbound.protection.outlook.com [40.107.8.41]) by dpdk.org (Postfix) with ESMTP id 60F541B1E8 for ; Tue, 25 Sep 2018 15:48:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kwbu4W+Srd388MPosE7QzdYZXqTSBLpflXrvD5RYOsk=; b=q3puUScc/CtveDX1CG4pAnue0qHDVpd6wGKeaKKwiz/1TJUY0R0NBxjadjbK8ZUB5nSK86M6dBSlQYdOD+8r5lqNyYTz0/rnQDoeR2t35JdnJtt0H1csHCQTZGnb6HyC/4GbFPeeUXntnMs7YWr1r5fiaiy6BHxukpM4ovN4q+U= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=jackmin@mellanox.com; Received: from dev-r630-08.mtbc.labs.mlnx (118.201.220.138) by DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.22; Tue, 25 Sep 2018 13:47:54 +0000 From: Xiaoyu Min To: ferruh.yigit@intel.com, Adrien Mazarguil , Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic Cc: dev@dpdk.org Date: Tue, 25 Sep 2018 21:47:17 +0800 Message-Id: <20180925134718.18945-3-jackmin@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180925134718.18945-1-jackmin@mellanox.com> References: <20180925134718.18945-1-jackmin@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [118.201.220.138] X-ClientProxiedBy: HK0PR03CA0050.apcprd03.prod.outlook.com (2603:1096:203:52::14) To DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9f50df53-a1e8-447a-eb70-08d622ed811a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0501MB2023; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 3:pkSEnx1B6JudJIbgZZpHDLj/VD3UA5Eh6hmYfhYhgJayS86vl/8P+7VvFT/CkoD2beuv1P90dsDN6HZVZK2p2g7pM+IBVuyWAh7Ng1UChwbSwQ/3rKhcEISAYYYYDluXm5sjvFrxQX7yGS3dRj7ZTmbXdLwiFOnlXI5YJ68MlL1Rh6CVt8xUkKsKWka44JU3sVuseBDmKEEU62iEvWXBC/9iY6B1qv7ASD+Z1RinHRG2lX4npEksZ1mzGtQGt6TQ; 25:ygi1px6HSRBQTE1vvkq/OSrNgZYQvvxTiR66jDLVPaLF0n2mWaeMJrmUwMiUhFhI+0sy7dmL1bIYIXNiIS1fYaXS5VzPqbctdN+GSYGePo1WfNC/JswSBl/IH9JI+n37dSlDiSKGQrvB42C6roCC4zm6CpY9JVl+FQtj/abJDZuvUnpqqG+hpQjKEMcrm06Y9wi+GoAiIcRtWcUfyJA1uA9I2CNt+jO7FNZRHNlcNIRRtR4SEoltAuChToLtm6sIJNXWkM+0X6iFL1QkfvcfrKytSPuEONpQq1auFXG2LC+nS8AS6hzElg7FMQ/srG3K/uyybFtcFGr0F7cdF/0XkA==; 31:f2KM3z9xwdYI83f3/Mt/CfMGHnyqOCMZXOxIUv2zaUIjF4HE0vw7tdEuITAK8NwgDKNYuJt4b9IyntPdvwacAEQPLIXWwLrZv1SZ/9bHaCP8bwXxfm2DyX+IfVKda7iy6eIoU8bByixAWQl3vjRBYiWDtKBHO+ItBVLzJ0wSJ/l7rOxC6yuE+It/Pz3a8ziY9yj3h65PAP++7qCiArVnR+7fPtsd0ODE9PJLtuZhZNI= X-MS-TrafficTypeDiagnostic: DB6PR0501MB2023: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 20:e+xsCRAdDeUt/LX6EJ9lTVuQopgoPSmxA5gz3haYouhMouSKZ30NtTtVj+hhKWv7Wfyf1hrQjrtpIuP1KJlnGQjnxrArfMFKofJk1qrtI9dl857HMqYsXwwMQ2LhrOLazf35crdzNj71CQgikP4p/lhehNxj+Tj/pvbgIIfLAfovBtmZKAaqoT2UEhHOljBvey1Rq0fIpqp6fUEFtkhLUn00O4LQutNlubif6+0iWM3o2CpZqtUMuRmqKRPFpkBoDkT3dRzh23bRA4QNifVA9CQyfxMGxaCsh4ibfopZ8mwIKAenUg9+Jow8fmTJLQwybgl3BqBOmDTEjr5fnUmfs5s8aYHGTpSGX2fEXi32xlAQM7l2zN9Lpn8TyXPdJFMHNLzhhhwTq3B56d15wVMmr0sXDO/7LQC4bjw4q33ciP4kvYqsXOAEOfN0j/TIScFMWwy09wdr/fdRXkf961bTvevyHAX0bhftKMl7RgI+qbKD6zOEMKaWvl+8a3RFR83M; 4:kSXLpLlBXMASrRxwExKyOtpPiSFxboigoeUUHERzgGryIoyeXlVqv+2cUU0QebJ9HqyPKKl81EK+2Qun66DSMB77mAynNbiAuni+03klgqD+kMW1lm/8dYIrgBxF9fcCDIhDHP709CjblGz3ogtSdB2EWA5nhY+pCNUF7XMycZ3avhypXrXWb2mxXBzZKhcZWjtpr25AtN6konWslmlTIYB8k4BJJQG6vGhyIZ1+imXMsA8FMmDRWQ+6WpTRdPV3Ok+C2n5u3M7N2KVU5kKWbw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231355)(944501410)(52105095)(10201501046)(3002001)(6055026)(149066)(150027)(6041310)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051); SRVR:DB6PR0501MB2023; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2023; X-Forefront-PRVS: 08062C429B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(396003)(39860400002)(376002)(199004)(189003)(6512007)(4326008)(446003)(68736007)(11346002)(476003)(486006)(86362001)(2616005)(16586007)(956004)(3846002)(14444005)(5660300001)(25786009)(6506007)(316002)(106356001)(26005)(110136005)(105586002)(6666003)(6116002)(386003)(1076002)(50226002)(186003)(16526019)(2906002)(36756003)(478600001)(81156014)(305945005)(7736002)(50466002)(52116002)(48376002)(81166006)(51416003)(8676002)(97736004)(76176011)(66066001)(53936002)(47776003)(6486002)(8936002)(34290500001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2023; H:dev-r630-08.mtbc.labs.mlnx; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0501MB2023; 23:6kNPLnDLLHi8scbE1Et3fWmQzH+5/fDTS3eGjp+?= OE1xtfF1DgVRG20/Jx3Ehyq12P1DkSXXtOb/1ZJFnIgoprFoJzeX6eSQqlG6CSvdrUsKrCJMdMZ2SvoutCUv1UBYQfq1ZdAX+v6bGL6aJ1+gaQwPCfuhJCDVIl17b9DeN4V0JDMY6I8vlDBAGvWSRN7RS9cSdCoRsNnPDcXFD8GsTBLQvXoS83sMe3k4zalXzX1qXNxAHOns42zjIluZYSiiERfYbTbhoIPsU7uRcXvpNkbbjyTOOKbQqCv1ZTc9YNL88R9UENPJsSRAYfdptyNkneEvJC17v+tldRhcuiREybqwTfpQ/7SvkiJxPnOwpufrDegW6mtbEW+lhjo8S+rvCJOOOYBLEcpKKPqc67TzSYEyBGfHTcPdVNGhRdH6oUrdU4faBQAkk+6nYZEyTLNNPqVIYCBWBO6RRc7kK0CeZq+7Fg602uXHhS+mGT/U+RllQnvQxB6gDWTOpQ8//pfL8vx2P2v1ZMf9dMSC6+bMjgeRtHdAt/M5lTsjwHlrf+Qzp5yE2KT99garojn1QdryrpLxbnuw1eD1lJDNlFYymT5tIpxwd1ZPu5QG5UrTL4UogUWNIvwKDK3CHzCas8VlLXbQct+vUJwuniGCLtyqn/NwpUf7LBLFs9iwsoEWUd6RPWJFQSW/1yE5YoPglk7ZDOU406DzpXHTxST90X0ZsaBy/vgHo9alCMmeDF8/SY8dVytBKwJ4zihH/Dg55KbijqFRgSQOAYMjhdTC55z70zTDqeBbplcbBX77CHQCBsx5AHt3WaUPSbs4E8whHSsoZt1l273nrUqqNeQtS9ZLj++B4EwTvm0Pkx+HTv26/X0YHm1PQi336QsPvVOAQYNebJRzQbDSgAxk266UojlVorVmqEQ06HzNzADLqwCjLjGxeXgw31wI1LzYBUpzPCVHpZxZx00WTxlJ+WOS2VC8fbMSC+p2EMJGpGi2bZvvRXSWmh7mY3KsE8PhT4AU5e851iscjut6x7V5IenBvS39hPtWe2WoXzDIYh/McsowBoJ97m+pxWnohl4Bt0yUnrvS5pXduS3OCG4eBQj+amUSBov1Oz1rkMsilEXcoKvzChvuGXVo0qbOoacbVnqriLNvF/NSBdS9eK+sGQwTNBEc7UAyK8JqQGnHJ+BWjbMrdgp0EP728B8ljb9SoxZydm6LRb4OwjUa/GfY4VS4WUNgPTQ== X-Microsoft-Antispam-Message-Info: 0rx7bwqu6RmRatYc/LwliznPttzBK0CE2rjD9EuF6R+H5yM1ftQGMMS2bBRqqc47bTJz4LtDIVOGyfIFNzSVfSoWcHBV7BNqjYTypyDOGWgkKZGEFf47QqFXg2h7dKMqkIDPR4QEozmS9f2HnebRuWEtwU2/7rl8dfdAv2LDu/WfVzi3MnwY0MPuQgQptZjrWjetPUQviI0sbOQxT84YvsvFBeMg9KymtS2iKs9gIL3JQAwZdPzZ2B7tIr+/P8D/7iG4dHIIFgejQCdhOxX4uRCkbNpNakEbLb62LAC3kStNy8sCxv/mqfFDlUXDLOALXYUFUYvFZU5Nlfwcokqy65fcyztCltcZPS2sxC3jODs= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 6:NMPuFTJ9TPqc88dU5lWCS2kucATLpF+5buo7bt54yNxXW+0IwUGuCJNgtoQOLDERf7JImhwhdFjTvWA7S6hDS9/0wQjhIhXgUhTYOJsCblRTXa2rDX8CXp32D7Skl9cUMW5h2G/QnkqIRSx7j3zEozcZPhJDtQlQ+rhZD8xaLTxbuS3qYuuaSQ88DGNH9hVSpuanH6INloFQsp3yoKBqGObC1PClQnOJdk05szIv+0wnXwwJ2NAfWGEXHkK+FXCXM5j5ij6OYMBsoErmSmwnR4I3LoYjHYcfWmag6znVRw1zhodrZxA6DwCgTYvCm+BTgj3DLIEicHBm3h3rXeaTz2hxal7yYfYqKORFNb8XOvyYCA9pAmAxVixj8c3eW+WtUqV2VC90E+EBAH74EfKKQcwTWQVRj2RETUpE73MlSnWdXyfUWjW/FA6JHmMK/wsW3exrAtoM7JzdmPxbjgF1SQ==; 5:aXmYuB0awGSKKXXx0R8Q6gO2Yx0wYYczpL52zKOiIOvmnAsGF/hKekFm0r7PA9Nh7YqsLKRuXwjLfgsEhVRt08swH2rVJGFKHWJ0O3k+yyRW46a1nEPh+zy/yoX2oRm9poJZ0lfaSvyQzfS07YKToIgwxJSCIjF/+vQoGi4fBeY=; 7:EO0AG5NeDsHNRms0oDyBx4d6MoUQjNfcM+A67C74slScQu9zqRwe4Ono+UaaQa92fVhQS1ibISg8ls+UMHN1h5iiHaTAK9z7THJoSRL8RFkar5WK1c4TlWmLtZHlSy28D3+5GjQBhWRkwQ7wfEUUcFkSPa2hQQwzqTBf6dO0cf5TvW4qy1jAI/YHatA0rsDfHiEMrvjXBmn0LLhtQN3o5O6yowG3ZfFEC5x0Ph7RxAalVkMryeHd7Gd43nS0r+JU SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2018 13:47:54.9417 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9f50df53-a1e8-447a-eb70-08d622ed811a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2023 Subject: [dpdk-dev] [PATCH 2/3] app/testpmd: add commands of modify TTL X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" add commands which supports following TTL actions: - RTE_FLOW_ACTION_TYPE_DEC_TTL - RTE_FLOW_ACTION_TYPE_SET_TTL Signed-off-by: Xiaoyu Min --- app/test-pmd/cmdline_flow.c | 34 +++++++++++++++++++++ app/test-pmd/config.c | 3 ++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 5 +++ 3 files changed, 42 insertions(+) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 3935539cb..fae825462 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -255,6 +255,9 @@ enum index { ACTION_SET_TP_SRC_TP_SRC, ACTION_SET_TP_DST, ACTION_SET_TP_DST_TP_DST, + ACTION_DEC_TTL, + ACTION_SET_TTL, + ACTION_SET_TTL_TTL, }; /** Maximum size for pattern in struct rte_flow_item_raw. */ @@ -834,6 +837,8 @@ static const enum index next_action[] = { ACTION_SET_IPV6_DST, ACTION_SET_TP_SRC, ACTION_SET_TP_DST, + ACTION_DEC_TTL, + ACTION_SET_TTL, ZERO, }; @@ -972,6 +977,12 @@ static const enum index action_set_tp_dst[] = { ZERO, }; +static const enum index action_set_ttl[] = { + ACTION_SET_TTL_TTL, + ACTION_NEXT, + ZERO, +}; + static const enum index action_jump[] = { ACTION_JUMP_GROUP, ACTION_NEXT, @@ -2620,6 +2631,29 @@ static const struct token token_list[] = { (struct rte_flow_action_set_tp, port)), .call = parse_vc_conf, }, + [ACTION_DEC_TTL] = { + .name = "dec_ttl", + .help = "decrease network TTL if available", + .priv = PRIV_ACTION(DEC_TTL, 0), + .next = NEXT(NEXT_ENTRY(ACTION_NEXT)), + .call = parse_vc, + }, + [ACTION_SET_TTL] = { + .name = "set_ttl", + .help = "set ttl value", + .priv = PRIV_ACTION(SET_TTL, + sizeof(struct rte_flow_action_set_ttl)), + .next = NEXT(action_set_ttl), + .call = parse_vc, + }, + [ACTION_SET_TTL_TTL] = { + .name = "ttl_value", + .help = "new ttl value to set", + .next = NEXT(action_set_ttl, NEXT_ENTRY(UNSIGNED)), + .args = ARGS(ARGS_ENTRY_HTON + (struct rte_flow_action_set_ttl, ttl_value)), + .call = parse_vc_conf, + }, }; /** Remove and return last entry from argument stack. */ diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index d1028d03e..d28b6ed14 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1174,6 +1174,9 @@ static const struct { sizeof(struct rte_flow_action_set_tp)), MK_FLOW_ACTION(SET_TP_DST, sizeof(struct rte_flow_action_set_tp)), + MK_FLOW_ACTION(DEC_TTL, 0), + MK_FLOW_ACTION(SET_TTL, + sizeof(struct rte_flow_action_set_ttl)), }; /** Compute storage space needed by action configuration and copy it. */ diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index f60be0862..e2674292b 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -3721,6 +3721,11 @@ This section lists supported actions and their attributes, if any. - ``port``: New TCP/UDP destination port number. +- ``dec_ttl``: Performs a decrease TTL vaule action + +- ``set_ttl``: Set TTL value with specificed value + - ``ttl_value {unsigned}``: The new TTL value to be set + Destroying flow rules ~~~~~~~~~~~~~~~~~~~~~ From patchwork Tue Sep 25 13:47:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 45323 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 061E91B1F3; Tue, 25 Sep 2018 15:48:05 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0060.outbound.protection.outlook.com [104.47.1.60]) by dpdk.org (Postfix) with ESMTP id 0CD071B1EA for ; Tue, 25 Sep 2018 15:48:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zhIRQIVlhySSTz2mzNzlMVAxBvbnj67XA/Xz+ha8J1k=; b=lWehFTBwONr3fT49do9Sc29zyKf/B6xlg2apHf6gCbPMC4UpSJH0G6FOwRpTOrQQzR0pCkDdhPSxXKXkGbp6TRC6Djjrv6QCnfCpfqBINIWaV8XhbqiVPBG8OTq6LoRjhiruo2TO48bx9zlTa49ufDI0C9ASvizLBNVt5+tw7qo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=jackmin@mellanox.com; Received: from dev-r630-08.mtbc.labs.mlnx (118.201.220.138) by DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.22; Tue, 25 Sep 2018 13:47:59 +0000 From: Xiaoyu Min To: ferruh.yigit@intel.com, Shahaf Shuler , Yongseok Koh Cc: dev@dpdk.org Date: Tue, 25 Sep 2018 21:47:18 +0800 Message-Id: <20180925134718.18945-4-jackmin@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180925134718.18945-1-jackmin@mellanox.com> References: <20180925134718.18945-1-jackmin@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [118.201.220.138] X-ClientProxiedBy: HK0PR03CA0050.apcprd03.prod.outlook.com (2603:1096:203:52::14) To DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cbf026f3-4bca-44b7-a141-08d622ed82e6 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0501MB2023; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 3:xBNrnnGmIXhZdbo2yfMN/LDBw+lDryLu9jZfEleZw8fbEbrk/MnAhVp8Z5r/M8mjUlIPLw9WIrcxDUpqbyoxzVFAsC9nwnlcwHOm3Kkbkz+XBej6jjwn8oM+LWRG0kdI7YrgICHOtHTytS8leiIxDdT3Sc/dreNk2jQnj8IbgGtywtlEC0HA79261VAQx34jqHL1E+GFubrT2hC1ZI+POVhLkVxsBdTTVPlAJUbRnL+6i+TbyO0Bl7nHalQR7D8J; 25:eK7qKAdGBewv6O+nXLf442vTq/BioyyVCr7TC1PxnJ5FH+Vq2GIh9tkppmFa+7joiu4DR8a/ndxmhK/oE7SYueAhJXuCXv+3P4HTogmoaxd9cALdC08heiJFd1HFIhNyAYNlFbEthJXBks3h3NYI+r4XjeVgNC+PIH2LhoaCYomWhEshLMH7JGAI/qnWkPMXbPB4OB5Myed41uUp7Pp3aH4fYHRzEBiwdLCehAR9eZNJDAOSnOKnngeu8WlwNVb5Meo7t42xKyYbQ/ms3kCDHR3AVsJU4migidqSkQ005JW7AwPwfatQKuXMm2ufoxEsIfhqqLhlOmIiuH1i3XuZmw==; 31:rIj6YJAq/5PydVqT1eeLUm8PLEfWtmaRk2bLefkAgNuDwnKJkWBRwR+hOEroGOz/zDUpqiHwY+AQObmCrZdqGDKmkAr1iJRYI4R8yReFYwSwpdKgS1wGAHbEQO0aoycMeu5pFMdHKmCiK7G54cvI1mKvh8FtY20F0WR8wVccIYBuAoYGUW0oIh7G/Pg72QD+2WFg0A1SGmZAezjIaeppL10MX2+ZIMZSpVt+PqGPyYc= X-MS-TrafficTypeDiagnostic: DB6PR0501MB2023: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 20:th6S7HfQQUmKA0AEOfgNOTIAwTBn8WGEPLLlnnIq/b3iNVERT0CzSjGaxPUZb5867qMn5EXhcBCcAWOeMDlkZ29BKTmQYymCJqR2K7dBMR0/wG1Pb+5pkEkb5UkjdXg+ifgRsEEn7fEpJtujXIiDcSC2eeYqgrBrVz0TSoQ8RFddFTTm0dh3wVNsfpE9h0uyzQ2eIUn1dLrjicq+8K94OmubAKO9cEccuwe01xDdiwoW6QjA0HdvWRpGumwg/wjuH19GIlX47MOoL8rr76ZBp47PpBJbaYhEPqCxDKqvgWButmN91bn7G2NEqBPIAJEyKrTYvvYyncbV1wqjfSSlF+1gSuoTwr5bWQHEZhdEz2JZE5KUCR00ynpdy6Tg86AeDkTHCdaabq8dB4gV6yr3dKpZ011Ko5s212q36HlKaIHo/sOEJpYd703qbF4mG6OyWtjlVpC6hOM5daZTaEdNfvE1o/FfEn6jxlDmMMIr3Xc0uu5D+20GrW1neMZ2VQB0; 4:tuctpAWvvwH4enYA8TBB/Bi5CYu1vzop+EajtIGytKbSi4GGlSJNU3jdVmggxsK3gvjuqtksT7dXwol69FMlT2vBnvoHiVdP0mn2FJdnW1y0TvZ6Kh5mvxZa6bN05iQsbr0xoxHXHtYP031CyOZ794a0Lrrc+TwF19z/vJ+fJkH6LL5Sh8qJY64AFP9yPnzUGEcxIg/xwIBZW0YwzgQV1/5VTBX2dFAt1lKifRi2AaKK3QhqnZbk/sOyk2ctBb+18TdH0gGNHRblQGC+H4H81Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231355)(944501410)(52105095)(10201501046)(3002001)(6055026)(149066)(150027)(6041310)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(201708071742011)(7699051); SRVR:DB6PR0501MB2023; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2023; X-Forefront-PRVS: 08062C429B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(366004)(136003)(396003)(39860400002)(376002)(199004)(189003)(6512007)(4326008)(446003)(68736007)(11346002)(476003)(486006)(86362001)(2616005)(575784001)(16586007)(956004)(3846002)(14444005)(5660300001)(25786009)(6506007)(316002)(6636002)(106356001)(26005)(110136005)(105586002)(6666003)(6116002)(386003)(1076002)(50226002)(186003)(16526019)(2906002)(36756003)(478600001)(81156014)(305945005)(7736002)(50466002)(52116002)(48376002)(81166006)(51416003)(8676002)(97736004)(76176011)(66066001)(53936002)(47776003)(6486002)(8936002)(34290500001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2023; H:dev-r630-08.mtbc.labs.mlnx; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0501MB2023; 23:gnSm1Xv2WHuPIVemEMHPYYAlUnjltnEUHAgDcQX?= CYTItJpAWd+e2sDyw/R/n3pCxt+HhuGZHWMHB76Lupke44MuYy8rrFBc6G1oEQlFBAmmqqAh8Cz/+/l2Bcy7K6XWHw721IB7Fm6tBP6DHo3i/CzVi8ojkIcf6Eog2322lIsiYBePUHMfk9JKBzB+CD0x5M5x/oErE23KnibRdazJ0u7421gSqW4Cpu5PWBN91UXkqvVziMImd7WhwOWVZ7JUMwCp6bsBCVIfvtGhzyc0qORhtA5WONIuMPors0V8o2G4L+PJ4HLcDQRhqPjklJ6EniMn8lXq7fTO7fvnBjMm02nCTR8IwiWX8H0bUfH6gVxFnnQIIbUePBpfABcgaPtulF4+NpF5zgLmtDEd7vRMU52ESGEAtpVxe4gz6PbjQfvFZ8ww/bTRJYDTg8Laho6yz/YG5K1XPIgGJrt5CUDpuB9xeCePn4G6EkKY1VydK7D9qd6WNrWWZpW9EUht86RBm9RLn1apEGYU7eD7J1gKJf417DdtAX6nxan1uhFshywEvFv+fskMx+N08VemXHvIMGsZfwtL/PS6VOmrUbJ4czHNwoN/xUNwTuGDatqbyCeoOzR+luJqMfIOZSwdwzvJcQebdtOxnlP7BdoTa8aSPgD29TaCJgXA/jD+2reRn02jB6htrjJGROqmUtaadBov++7NSxMpmsgLawS4z8ktTrV6F3FVSC+ZQmEIykTNCUesEC4E8Xz+lgRqukNdM2UpQS1yFOL+F4JfEH03kN6XrpoNMdOp+OCu8AXtLaEHyy4NisJ0ZxirUVeG8Q8qO5uO5zUHn+ov6clH2WFNu8KTy75kmgZIxcAMBMnB2q0TqQQ85SsMusfV2Ox1+iyw2Ni39J4t09noo/T9v0x1uQudQ84E5IlZnVEzV1hnR8daDV4lvfLeHMvM0frEM3xWsxbqaKkwzIWqwiwAk7zk193ykxDDw2TEbFCidCCnH/e1+xH9tgBIA/SZK2rNpmJTFYLS6egsGaqF72FwLKxl1qLTwlY+oRP+oc9AMvgYVZbvUWQ01tXXhZR0r4VMrKb8IS80bT7xj9kxde/4nxHnARvwzblMfuenSiY2vL23rFWd3FhrXJBFZ//yqHlxXW4GqXmNfKYlhAFIBFYKltz72eY6Jv5DofQVW3iV56f2hGz9irg6wFRoP4eS9YM0eCE14+RUBM/3Wz1mkhBsfM0TaAoN5y3dOV6oU8jUXXxHTbsAVSu3cq4A8AK3S6K2AoqKPUpgP X-Microsoft-Antispam-Message-Info: Y7YorWrPvQr13AB/9I26akQNzwqTsIjRQ/bmUuUh38L8jBZ/d7d+bTZojfzJ5F1Os7UPw20ZPyN0pXSq2zbWsvY3FAHBvHQTwr1Nu3CrRhqj/AEkyGRefKGlu6IFYckNI+zgve+DgQ5FzabWzrDeXkE9ZZ5aUHFBQGRRHeFEMOIFvhtqeISRfDTkwWONONrAmFXJzsA/yltcixRZS7h9Bmh7JA6w2d5xmU4xDv+JRDNR04GDyh4sdFmzP0dqTk+EbTgjztQlzCwhV9LsnPWV8k2AaROEbtSJ8emwpAgfx1o98voOZiYb85Iu8AzNrdDwLv78CDQCyESU4U128DwMvZ7V8MAbQkmWgHHeGjVEDow= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2023; 6:PTqpsALLntt2KdR2QCKzPG0lHuqaIVaMLDuUHIUnBALWIsG/AdkkQEjTQuLD4IkhRp0DSRGHE8l3FnbbAfOFEgeIA2R2Yb3wWr2CbT/N8m6Xhklf0BgVseKptb1ZaH5pFvguZftoCuoKrRP9To43VA7861nE3wr9y8XdfcGR+I8YZzT8NzYwhIhXfEat9C9il/Sdn+NC9hXbL7bsjXgADZHQDRSmt38tYHD+eSxQxg34RtNiyObSbZLNfnMOS5sNDqbMpp3UVFniFIj3q5mxAGNfyabN9OpEfLYET4EwY1P12qMrrLSx7aIphwUCZLzBztvv+ajT/fXADAU1Sum3bN33NPrJD3o90ZtZ09ghF4lDCiCz1bVAmf9KmG3T9jxq9iFNwbDZNOE9WpwvKqhzL8z3xpwRwKbtxqcQ9i4tWir5omLiQD/X+vAUYo6SUYErgjGT852iDqDpNg9cpP2q6Q==; 5:/7bfo3ZtPvfazrI/jQAd7Zi6P2+gKzRhMdhfnltAe9ZHaWdYDvdAYyESIEr73V3gjFb3zWLtOtVjtloCVIrL0hPy/Vn6qY5BH3gnafRyY94kZDyW8Rfjyj3iUze9nFzERr5cI6VNRSq/fJ6sjY2cWQI06ATcwaZ3lGSfGQuRxlM=; 7:sGPvleqH/fF7UKreA1XIka5Y2pzD74rQpky+5rtPQZHhn7jpMM4fxHJ2izIDYsGh+sLdn30O6rll+ojjtce/itRbyK4axdOYsccw7QRQtZQT61Ec8LxaBEWdC+uATux9ZXnfM/XJ4GgAQhsdlynnRCxqIuu6enyV5kqYBJZjQjb2oibChey9dO8ZET0+0Kscbjpmybqir7brkWXoa39LPdHtmk/FHzWIvagb1N01aEj6ohx5kV8pENM7XUhQ4L5g SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2018 13:47:59.5098 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cbf026f3-4bca-44b7-a141-08d622ed82e6 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2023 Subject: [dpdk-dev] [PATCH 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Offload following modify TTL actions to E-Swtich via TC-Flower driver - RTE_FLOW_ACTION_TYPE_SET_TTL - RTE_FLOW_ACTION_TYPE_DEC_TTL The corresponding IP protocol rte_flow_item_ipv[4|6] must be present in rte_flow pattern otherwith PMD return error Signed-off-by: Xiaoyu Min --- drivers/net/mlx5/mlx5_flow.h | 2 + drivers/net/mlx5/mlx5_flow_tcf.c | 74 +++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index be182a643..5237e31dd 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -93,6 +93,8 @@ #define MLX5_ACTION_SET_IPV6_DST (1u << 14) #define MLX5_ACTION_SET_TP_SRC (1u << 15) #define MLX5_ACTION_SET_TP_DST (1u << 16) +#define MLX5_ACTION_SET_TTL (1u << 17) +#define MLX5_ACTION_DEC_TTL (1u << 18) /* possible L3 layers protocols filtering. */ #define MLX5_IP_PROTOCOL_TCP 6 diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c index 85c92f369..af88c4a0d 100644 --- a/drivers/net/mlx5/mlx5_flow_tcf.c +++ b/drivers/net/mlx5/mlx5_flow_tcf.c @@ -217,6 +217,10 @@ struct tc_pedit_sel { #define TP_PORT_LEN 2 /* Transport Port (UDP/TCP) Length */ #endif +#ifndef TTL_LEN +#define TTL_LEN 1 +#endif + /** Empty masks for known item types. */ static const union { struct rte_flow_item_port_id port_id; @@ -297,7 +301,9 @@ struct flow_tcf_ptoi { (act) == RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC || \ (act) == RTE_FLOW_ACTION_TYPE_SET_IPV6_DST || \ (act) == RTE_FLOW_ACTION_TYPE_SET_TP_SRC || \ - (act) == RTE_FLOW_ACTION_TYPE_SET_TP_DST) ? \ + (act) == RTE_FLOW_ACTION_TYPE_SET_TP_DST || \ + (act) == RTE_FLOW_ACTION_TYPE_SET_TTL || \ + (act) == RTE_FLOW_ACTION_TYPE_DEC_TTL) ? \ 1 : 0; }) #define MAX_PEDIT_KEYS (128) #define SZ_PEDIT_KEY_VAL (4) @@ -321,6 +327,34 @@ flow_tcf_calc_pedit_keys(const uint64_t size) return keys; } +static void +flow_tcf_pedit_key_set_dec_ttl(const struct rte_flow_action *actions, + struct pedit_parser *p_parser, + uint64_t item_flags) +{ + int idx = p_parser->sel.nkeys; + + p_parser->keys[idx].mask = 0xFFFFFF00; + if (item_flags & MLX5_FLOW_LAYER_OUTER_L3_IPV4) { + p_parser->keys_ex[idx].htype = TCA_PEDIT_KEY_EX_HDR_TYPE_IP4; + p_parser->keys[idx].off = 8; /* IPv4 TTL Offset */ + } + if (item_flags & MLX5_FLOW_LAYER_OUTER_L3_IPV6) { + p_parser->keys_ex[idx].htype = TCA_PEDIT_KEY_EX_HDR_TYPE_IP6; + p_parser->keys[idx].off = 7; /* IPv6 HopLimit Offset */ + } + if (actions->type == RTE_FLOW_ACTION_TYPE_DEC_TTL) { + p_parser->keys_ex[idx].cmd = TCA_PEDIT_KEY_EX_CMD_ADD; + p_parser->keys[idx].val = 0xFF; + } else { + p_parser->keys_ex[idx].cmd = TCA_PEDIT_KEY_EX_CMD_SET; + p_parser->keys[idx].val = + ((const struct rte_flow_action_set_ttl *) + actions->conf)->ttl_value; + } + p_parser->sel.nkeys = (++idx); +} + static void flow_tcf_pedit_key_set_tp_port(const struct rte_flow_action *actions, struct pedit_parser *p_parser, @@ -408,6 +442,11 @@ flow_tcf_create_pedit_mnl_msg(struct nlmsghdr *nl, flow_tcf_pedit_key_set_tp_port(*actions, &p_parser, item_flags); break; + case RTE_FLOW_ACTION_TYPE_SET_TTL: + case RTE_FLOW_ACTION_TYPE_DEC_TTL: + flow_tcf_pedit_key_set_dec_ttl(*actions, + &p_parser, item_flags); + break; default: goto pedit_mnl_msg_done; } @@ -488,6 +527,14 @@ flow_tcf_get_pedit_actions_size(const struct rte_flow_action **actions, keys += flow_tcf_calc_pedit_keys(TP_PORT_LEN); flags |= MLX5_ACTION_SET_TP_DST; break; + case RTE_FLOW_ACTION_TYPE_SET_TTL: + keys += flow_tcf_calc_pedit_keys(TTL_LEN); + flags |= MLX5_ACTION_SET_TTL; + break; + case RTE_FLOW_ACTION_TYPE_DEC_TTL: + keys += flow_tcf_calc_pedit_keys(TTL_LEN); + flags |= MLX5_ACTION_DEC_TTL; + break; default: goto get_pedit_action_size_done; } @@ -988,13 +1035,20 @@ flow_tcf_validate(struct rte_eth_dev *dev, case RTE_FLOW_ACTION_TYPE_SET_TP_DST: action_flags |= MLX5_ACTION_SET_TP_DST; break; + case RTE_FLOW_ACTION_TYPE_SET_TTL: + action_flags |= MLX5_ACTION_SET_TTL; + break; + case RTE_FLOW_ACTION_TYPE_DEC_TTL: + action_flags |= MLX5_ACTION_DEC_TTL; + break; default: return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, actions, "action not supported"); } - if (IS_MODIFY_ACTION(actions->type)) { + if (IS_MODIFY_ACTION(actions->type) && + actions->type != RTE_FLOW_ACTION_TYPE_DEC_TTL) { if (!actions->conf) return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION_CONF, @@ -1029,6 +1083,16 @@ flow_tcf_validate(struct rte_eth_dev *dev, "no TCP/UDP item found in" " pattern"); } + if (action_flags & + (MLX5_ACTION_SET_TTL | MLX5_ACTION_DEC_TTL)) { + if (!(item_flags & + (MLX5_FLOW_LAYER_OUTER_L3_IPV4 | + MLX5_FLOW_LAYER_OUTER_L3_IPV6))) + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ACTION, + actions, + "no IP found in pattern"); + } return 0; } @@ -1178,6 +1242,8 @@ flow_tcf_get_actions_and_size(const struct rte_flow_action actions[], case RTE_FLOW_ACTION_TYPE_SET_IPV6_DST: case RTE_FLOW_ACTION_TYPE_SET_TP_SRC: case RTE_FLOW_ACTION_TYPE_SET_TP_DST: + case RTE_FLOW_ACTION_TYPE_SET_TTL: + case RTE_FLOW_ACTION_TYPE_DEC_TTL: size += flow_tcf_get_pedit_actions_size(&actions, &flags); break; @@ -1451,6 +1517,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, RTE_BE16(0x0fff))); break; case RTE_FLOW_ITEM_TYPE_IPV4: + item_flags |= MLX5_FLOW_LAYER_OUTER_L3_IPV4; mask.ipv4 = flow_tcf_item_mask (items, &rte_flow_item_ipv4_mask, &flow_tcf_mask_supported.ipv4, @@ -1490,6 +1557,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, } break; case RTE_FLOW_ITEM_TYPE_IPV6: + item_flags |= MLX5_FLOW_LAYER_OUTER_L3_IPV6; mask.ipv6 = flow_tcf_item_mask (items, &rte_flow_item_ipv6_mask, &flow_tcf_mask_supported.ipv6, @@ -1718,6 +1786,8 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, case RTE_FLOW_ACTION_TYPE_SET_IPV6_DST: case RTE_FLOW_ACTION_TYPE_SET_TP_SRC: case RTE_FLOW_ACTION_TYPE_SET_TP_DST: + case RTE_FLOW_ACTION_TYPE_SET_TTL: + case RTE_FLOW_ACTION_TYPE_DEC_TTL: na_act_index = mnl_attr_nest_start(nlh, na_act_index_cur++); flow_tcf_create_pedit_mnl_msg(nlh,