From patchwork Wed Oct 10 13:05:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 46493 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 D147A1B5C7; Wed, 10 Oct 2018 15:05:52 +0200 (CEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0047.outbound.protection.outlook.com [104.47.2.47]) by dpdk.org (Postfix) with ESMTP id 675351B5BF for ; Wed, 10 Oct 2018 15:05:51 +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=g7H6uKFKXKbJ7wRNCE91YMvpbpiTfsVrzzacYPUWxeA=; b=ALq3wCUQLgWp43YGW4VGIjOCr0eqllnZNC/En/yLIbdpIFEcF3Wci5cjRzdWt/WPXQrJGjCYOdQUkQFwXQoZtfnHMIIMh9a+3sL74wi7I7DHGlO2S6YYiQRUsEZWN1BjQ9vHqCtfbiUftSa6IiSUqTtYB66lLVUApfrgWSmffgM= Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com (10.168.9.17) by DB6PR0501MB2327.eurprd05.prod.outlook.com (10.168.56.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.23; Wed, 10 Oct 2018 13:05:50 +0000 Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com ([fe80::b1fb:bad3:b5b1:f913]) by DB6PR0501MB2023.eurprd05.prod.outlook.com ([fe80::b1fb:bad3:b5b1:f913%3]) with mapi id 15.20.1228.020; Wed, 10 Oct 2018 13:05:50 +0000 From: Jack Min To: Adrien Mazarguil , John McNamara , Marko Kovacevic , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko CC: "dev@dpdk.org" Thread-Topic: [PATCH v3 1/3] ethdev: add generic TTL rewrite actions Thread-Index: AQHUYJn3ns98KWIRkUu0qs20hJ3i6Q== Date: Wed, 10 Oct 2018 13:05:49 +0000 Message-ID: <20181010130524.23590-2-jackmin@mellanox.com> References: <20180925143719.23339-1-jackmin@mellanox.com> <20181010130524.23590-1-jackmin@mellanox.com> In-Reply-To: <20181010130524.23590-1-jackmin@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SG2PR01CA0102.apcprd01.prod.exchangelabs.com (2603:1096:3:15::28) To DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=jackmin@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [118.201.220.138] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB6PR0501MB2327; 6:d4fSySt5gB9mfH4g8mgX+m+Xav7PZZsaTiQcavm58Lu/oUxSI5vuWW0MCtVhbWGMuEz7in2tx6aaHkgkOwUhld3vXdRL3c0zxADBZTSYUwCZEs5yTEvba0MHGYxdbrw/IzjgkSJEOadwwdVB3OpEgk/KjrYZY5AM7X5ow7oG9WsBd2CIKCj0bDe3RoRsdDvJ8sqGBFDeitBzZFe9TLuQCle4kXch4MR5RXJMHM2u3hBADUTEYYxLsuJfB1L3NLKghfv5SEshgSdi/j4YjQWpVHTT2N/6tXahGOH+WMaHM4SWVPckA78JLfuCIJqYc4f4X3HE5WET+9hpOze8sZ1psPdAogOtVx0DZ0E5WteHlnHCjWZ6iMr03IOiHrVK1WWf3V7XarEfhq5nu181IPbg6XuNLWLls6zVhxd9ZERHUKr1Om5fN52VP43K4M1elo3lSrl0XnYliivzNpW3krgk7Q==; 5:OPGflVMxRbbDxf1D3Kg02FmUP63ZwJosA/IvT3mO/WRBCo1X791JLCNg/sKeqGV62Vs6IezezqsB/tmawhclIbpGIoiR/5vaICSj4M8yXG3AXrer8qT8t+F48cinsKvao32ejPRzrkn0SdzN2mqcSIQONTmR8kkgy2UxUZHgkVM=; 7:q5410X/LDxrITeurJmKJROiR0AEaBJ+xFjJ6ccU7NUm3fnERSUOWhmtU2E460NNxjm5bpzF8XY34FksrCGol6AwGd1CMu0SL1WFverjqDHhuLOsLK2gXoQw6/9Ezp56sLTJOwv3FIyTAZtYFbo+i5CbMv6zYue80YKieKyar3/nPuihQ00FUa0UHhzpKa0M5qJ7i0nj6Gw9zj6+zfBNxNV6CIpurRxue+aa07KsGsnnCHq6ZbXi0kbeddaX4/4kY x-ms-office365-filtering-correlation-id: 80549d49-ecec-42e2-fd6a-08d62eb119c8 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0501MB2327; x-ms-traffictypediagnostic: DB6PR0501MB2327: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr 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)(3002001)(3231355)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051); SRVR:DB6PR0501MB2327; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2327; x-forefront-prvs: 08213D42D3 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(396003)(366004)(376002)(346002)(136003)(189003)(199004)(97736004)(6486002)(186003)(7736002)(26005)(305945005)(5250100002)(66066001)(71200400001)(68736007)(71190400001)(53936002)(8936002)(102836004)(25786009)(2900100001)(256004)(6436002)(6512007)(36756003)(76176011)(81166006)(446003)(86362001)(316002)(105586002)(1076002)(2906002)(8676002)(3846002)(110136005)(11346002)(386003)(476003)(2616005)(99286004)(478600001)(106356001)(4326008)(5660300001)(6116002)(486006)(14454004)(81156014)(6506007)(52116002)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2327; H:DB6PR0501MB2023.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: GGcuQVDnrbK7G7gHEZTT5kZHKsNIQV6DtZanp+DsTFOkIZ6W1xxFUh1BU2vUcsZhD20aNB4soePhw0RV8+1WLclJhPdpTD3xeUH3sOdFUhF8GTz3Umqd3h0sl0UkvUy1kfz0kym5MlHDiEv4wiO5LFFE6tXtRYRz97ZEzsto6QutJcG+0kQbcr09tOeAgrc4zGlbcDJyo/jelmyGvcQlGzRYLuerXxzwtcBA0OY2cIYMi1izq6oeUFH7FuGBkyeCJr2tg2TLbug02ieLxpLNnbaglBZZ/AlLelAyr7V5q+FUC8lAn9+kI9VqbYAz/uZ6O55fioMwCmkkZQoK/y6zZRPkShUjXKsuJdb2j1MjQ4Y= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80549d49-ecec-42e2-fd6a-08d62eb119c8 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2018 13:05:50.0101 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2327 Subject: [dpdk-dev] [PATCH v3 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 Acked-by: Yongseok Koh --- 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 93daceca2..e8df1e488 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 4eeb392b6..458a05994 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -135,6 +135,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 fe7e2434f..bb07eba9d 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -1548,6 +1548,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, }; /** @@ -1956,6 +1976,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 Wed Oct 10 13:05:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 46494 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 7686E1B5C2; Wed, 10 Oct 2018 15:05:57 +0200 (CEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0086.outbound.protection.outlook.com [104.47.0.86]) by dpdk.org (Postfix) with ESMTP id CE73D1B597 for ; Wed, 10 Oct 2018 15:05:55 +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=UqQ4xf0w3BBstLqu45bMbXoFAxpHnTCbwkqY/9RmXe0=; b=nfXid6/C83sAbU1n5+Lfvhs6aXV2gXtkraBWjlea62ROaDc0S95J2nUg/4SuKMcsdFlR9K9vQHW4dqpxnCgQqZjNKz2Lce01l+n6ueonzDMg3Du393KNOt246jJtS8qsZh/CS9G7xz18qSoCcLWGApCR93oQKLFpkw0g92GeAxs= Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com (10.168.9.17) by DB6PR0501MB2327.eurprd05.prod.outlook.com (10.168.56.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.23; Wed, 10 Oct 2018 13:05:54 +0000 Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com ([fe80::b1fb:bad3:b5b1:f913]) by DB6PR0501MB2023.eurprd05.prod.outlook.com ([fe80::b1fb:bad3:b5b1:f913%3]) with mapi id 15.20.1228.020; Wed, 10 Oct 2018 13:05:54 +0000 From: Jack Min To: Adrien Mazarguil , Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic CC: "dev@dpdk.org" Thread-Topic: [PATCH v3 2/3] app/testpmd: add commands of modify TTL Thread-Index: AQHUYJn55pwF1KM08EG/u7qELWzifA== Date: Wed, 10 Oct 2018 13:05:54 +0000 Message-ID: <20181010130524.23590-3-jackmin@mellanox.com> References: <20180925143719.23339-1-jackmin@mellanox.com> <20181010130524.23590-1-jackmin@mellanox.com> In-Reply-To: <20181010130524.23590-1-jackmin@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SG2PR01CA0102.apcprd01.prod.exchangelabs.com (2603:1096:3:15::28) To DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=jackmin@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [118.201.220.138] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB6PR0501MB2327; 6:Sliy4L8B9uOVfH+wB3AJlCJZ+0DvN8C2mm+Zr1Ef5kElKk04LeV2wb81HV5D3U1tK405JTuUCBLp8KxlF6vJG6CnAvux1LUAJBJJycFUE75nvNK8WTrHJKt947WaesGd32KfuoizQPaCAMYv/n5PDbJHeLwhNNe6u9Dpi2DeDBI6EE5QGzAjhzXUH2UitCAbsaajAh9b3vyx1hoMlXuqRNDa2ltMVabOnD5xvzMd3E75V5k0MvxMJ1S7hXWPrOgYryEVmaCTodD45m/rYdwNCNNWhVpM35xCGqCHLZSDyTs6svPfrZfy34bzjNQ913DonNRUXvg+05+hMW0r0x0JSFFOvU5k5Hch44a5K2r6N7a2Un1sgs8QmoCAcuxSOw1GV78NgIXAgd2ZACiEzypO5FQwlK4v2a4KzdRwKYGxAzswZyqGbZT8P2OwPoDHa2MwPt3RL3CYFa1DDHHqpdQN+Q==; 5:IfTWktDKCBv+0AuDjiZTDIxtF3ysK2lLbYiDTk4/AIevWrOb6rdKPC++koxkgJL4BuV3KFnAlwAD4tAXBhC0Y73KkQgfqQKo+3NIbcz5GVbo4qxckaWKcvVaAKnS9qHp/HaLv9pFemI3DELdjPDLwJzzLSf1eoZPNU18pkbr3TE=; 7:R+rX5F6tIkP7+mGcZLiUvZyTFQsoNOxh+lEmlVvJ+0+3qhtl18WRD4f0VQOuwpnepiKv3Y57f7FplcEuCqoM60YETGCRIJYd/RjUYFHT3s0L5Jwa2PD4FpendFNau9Tk2wC+cRlq83EUNS0JFrY8/oafamX2k5l1FaSScbi5Na6y6GHijgQKEdPWTNhOr19T56smvBx0WnqmSmHW7irnS7xg/nWM11Eacm1SNezntJCwA9EIvJILEZ8E3o6hbAVS x-ms-office365-filtering-correlation-id: 218b0d8a-800f-4f69-8142-08d62eb11c13 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0501MB2327; x-ms-traffictypediagnostic: DB6PR0501MB2327: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr 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)(3002001)(3231355)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051); SRVR:DB6PR0501MB2327; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2327; x-forefront-prvs: 08213D42D3 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(396003)(366004)(376002)(346002)(136003)(189003)(199004)(97736004)(6486002)(186003)(7736002)(26005)(305945005)(5250100002)(66066001)(71200400001)(68736007)(71190400001)(53936002)(8936002)(102836004)(25786009)(2900100001)(256004)(6436002)(6512007)(36756003)(76176011)(81166006)(446003)(86362001)(316002)(105586002)(1076002)(2906002)(8676002)(3846002)(110136005)(11346002)(386003)(476003)(2616005)(99286004)(478600001)(106356001)(4326008)(5660300001)(6116002)(486006)(14454004)(81156014)(6506007)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2327; H:DB6PR0501MB2023.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: klQiZNvZ7KGnIFFBsj/kNFAMnT1LHD7ZlaE7hGKWlUK8Yp12Byz3hH/PB/c2DOlFCGUEWOaBQolN4K2ygXis2lat4PeNKdnwoBZEdcF6Itps26CKnFKoX8usGO1U/bX3hRLn8f9f8x7k9zrYcmJTU2ltebV6vF7Z3S589f1jMVPfoujilyQpsrZ9/O8P8g6goiOpfs7sSKEu0zwNIvyk5eiHZ0tBpTuuI/lTR/ouyU5JCPeBkmLpGSFlhBz0Z4vR+3CZC+sD+/miNKMuLRWyWHP3Jr8bY+4AhjDf18ee28xfG+uEJayJuETkGn+ZI5pcjulGRg36D+GLrMYvNRf5pl/ZvMNS1aC7Lz9GNzyr1eM= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 218b0d8a-800f-4f69-8142-08d62eb11c13 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2018 13:05:54.1195 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2327 Subject: [dpdk-dev] [PATCH v3 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 Acked-by: Yongseok Koh --- app/test-pmd/cmdline_flow.c | 34 +++++++++++++++++++++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 5 +++ 2 files changed, 39 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/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 86efed4bf..16cd4468e 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -3728,6 +3728,11 @@ This section lists supported actions and their attributes, if any. - ``port``: New TCP/UDP destination port number. +- ``dec_ttl``: Performs a decrease TTL value action + +- ``set_ttl``: Set TTL value with specificed value + - ``ttl_value {unsigned}``: The new TTL value to be set + Destroying flow rules ~~~~~~~~~~~~~~~~~~~~~ From patchwork Wed Oct 10 13:06:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 46495 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 2F3511B5E8; Wed, 10 Oct 2018 15:06:04 +0200 (CEST) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0082.outbound.protection.outlook.com [104.47.0.82]) by dpdk.org (Postfix) with ESMTP id 3C3531B5DE for ; Wed, 10 Oct 2018 15:06:02 +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=nHcLhq+FSXa5nheJIFtw1L8PeVvwCd41CNGmv1DOkps=; b=mZyrSQoLBXg2UBpTjFxba/DmUDP0JHuzLqpJIP6d0WH/D9FZWlEYOJTMEv2kiQNVVBuBiRgny+jz5DdG6ySiXEwRXynPZBdTyWkDQ8c9PaT9rpq+EFmMXtrACqcQo3VkoFRw2S6sEeTXgPHl1nFD2f68knZvnVVV0cEnvvCjTEA= Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com (10.168.9.17) by DB6PR0501MB2327.eurprd05.prod.outlook.com (10.168.56.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.23; Wed, 10 Oct 2018 13:06:00 +0000 Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com ([fe80::b1fb:bad3:b5b1:f913]) by DB6PR0501MB2023.eurprd05.prod.outlook.com ([fe80::b1fb:bad3:b5b1:f913%3]) with mapi id 15.20.1228.020; Wed, 10 Oct 2018 13:06:00 +0000 From: Jack Min To: Shahaf Shuler , Yongseok Koh CC: "dev@dpdk.org" Thread-Topic: [PATCH v3 3/3] net/mlx5: rewrite TTL by E-Switch Thread-Index: AQHUYJn811IzDKSYJUywmgmIa+d59A== Date: Wed, 10 Oct 2018 13:06:00 +0000 Message-ID: <20181010130524.23590-4-jackmin@mellanox.com> References: <20180925143719.23339-1-jackmin@mellanox.com> <20181010130524.23590-1-jackmin@mellanox.com> In-Reply-To: <20181010130524.23590-1-jackmin@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SG2PR01CA0102.apcprd01.prod.exchangelabs.com (2603:1096:3:15::28) To DB6PR0501MB2023.eurprd05.prod.outlook.com (2603:10a6:4:6::17) authentication-results: spf=none (sender IP is ) smtp.mailfrom=jackmin@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [118.201.220.138] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB6PR0501MB2327; 6:u2RE/AgWt3Ptxu+sikoi198UwFZajZv3Yf2akp8WeTqQM0uZHeQyMuBuFcwi4f79SfQGqBE05zUCCZ8VLSv3UVmC+7FEPwCwyZkHQ2lPOpceR+8SgGeGKQeQ7Jm6zjphvOmfqqFp0hs9AVOHwKivjzPwgd9YzqhDanO/wUabZRMmraNhIwF+Ja7HrWXmRMhSlaH1SDbNXb4nVi/DdnTpFEUvrSS6MEN/ZJvuIqdlc8v09Hvpo5UD4t8J0hxJaD6+6L62uj3fm3sRbrN35BDhUCyGHAG2f02ITct7dGHTOF3UBxQoRfSnVG2GKQKzB2hmkMZ52Y6uqZeB0l076+Ply5hdAI8iCJpl0yCDKFkJH/RcLZCex4LWWyn+9Gaj77nkNkUoYt4FNuIcOa0G3b4yL2H1enwB0cIhGzaJLvPGU8CtMdFqPjvD3/EbHNhbGArmtz6AeWHflL62sl6rr27iEQ==; 5:DunvxaIy6PwkKFFWvuzMapnKf4VEiMS+k0JwGlZW31Ss/bCDHoL4L74HAiFpjN8F7WjUu3SMLkMOochO2a2HXXR4d4dSV06Wlj/tcNHJR36G9ik7VFrat/SsU/Uy8StwIy7VWdcRM16RQV5XPSwKPkvgOP+Vs+Hg9UUs3uy7qEU=; 7:ou04XTh2N4nEsUgUX/wXdOsMAfAPLEr73eEKgZidYKCG0h7NLEtRrSa4CuDMEds0Wt0VqeeE2Vz6pABfacvA8xvplfIFfQFCRo1c1r0kK2GPmPDZ/D4H87SWoSK8s+Ia1K1CUqMWGt1g4TzCRw7fLsfyoj76LwKf0+2+3/WnhpBGPOB00dH7bOdO5oqDygWeGzNa34s9v8KMQkBukIjdfMm71QsZJq/g64ZXpN/9CvscL95IR1qheB7Gs/Z/qVUU x-ms-office365-filtering-correlation-id: 41cf6731-0fb8-4429-2162-08d62eb11d98 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0501MB2327; x-ms-traffictypediagnostic: DB6PR0501MB2327: 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)(3002001)(3231355)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(201708071742011)(7699051); SRVR:DB6PR0501MB2327; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2327; x-forefront-prvs: 08213D42D3 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(396003)(366004)(376002)(346002)(136003)(189003)(199004)(97736004)(6486002)(186003)(7736002)(26005)(305945005)(5250100002)(66066001)(71200400001)(68736007)(71190400001)(53936002)(8936002)(102836004)(25786009)(14444005)(2900100001)(256004)(6436002)(6512007)(36756003)(76176011)(81166006)(446003)(86362001)(316002)(105586002)(1076002)(2906002)(8676002)(3846002)(110136005)(11346002)(85306007)(386003)(476003)(2616005)(99286004)(478600001)(106356001)(4326008)(5660300001)(6636002)(6116002)(486006)(14454004)(81156014)(6506007)(52116002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2327; H:DB6PR0501MB2023.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: ZIfE2QaiKnYfTrFd6Oq4w/5my1aOF8hUZvhK9l7QkfQwvUOjGtIvpoL9zY7s2OPlBuhJXs0GOvGhn3OEEKuu/zq9R8sBPB2/iQNNMadbCDSZZ2PF1eJUXEU5Q8DMzHtysqbD9UejSbcNZqQZeXhA3iwohgi2eiwXn6PZXmT7nI5EvHmAqEf3QmMY3f+8L37WpaVIlONyPlRTkTCSM5+KB2hSpGwrmAZHb4fxnuYI1Q7lYt14Ee3mfZxyYzPHvP79n92HJCfQfnn8deg7mNGBURQH4aZWymBlQzKMcBcYYjqP3aiyfxEDvhC708/obYQkTi2qPcVuZmVvJWnXxtRHeNjbCN9p5gPo64eINqc59Nw= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 41cf6731-0fb8-4429-2162-08d62eb11d98 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2018 13:06:00.7758 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2327 Subject: [dpdk-dev] [PATCH v3 3/3] net/mlx5: rewrite TTL by E-Switch 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-Switch 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 The example testpmd commands are: flow create 0 transfer ingress pattern eth / ipv4 / udp dst is 7000 / end actions dec_ttl / port_id id 1 / end flow create 0 transfer ingress pattern eth / ipv4 / udp dst is 7001 / end actions set_ttl ttl_value 10 / port_id id 1 / end Signed-off-by: Xiaoyu Min Acked-by: Yongseok Koh --- drivers/net/mlx5/mlx5_flow.h | 2 + drivers/net/mlx5/mlx5_flow_tcf.c | 84 +++++++++++++++++++++++++++++++- 2 files changed, 84 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index cbb8c56c8..0ad8c12ea 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -84,6 +84,8 @@ #define MLX5_FLOW_ACTION_SET_IPV6_DST (1u << 14) #define MLX5_FLOW_ACTION_SET_TP_SRC (1u << 15) #define MLX5_FLOW_ACTION_SET_TP_DST (1u << 16) +#define MLX5_FLOW_ACTION_SET_TTL (1u << 17) +#define MLX5_FLOW_ACTION_DEC_TTL (1u << 18) #define MLX5_FLOW_FATE_ACTIONS \ (MLX5_FLOW_ACTION_DROP | MLX5_FLOW_ACTION_QUEUE | MLX5_FLOW_ACTION_RSS) diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c index 65e8a4b3f..af8a68529 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; @@ -299,13 +303,16 @@ struct flow_tcf_ptoi { MLX5_FLOW_ACTION_SET_IPV6_SRC | \ MLX5_FLOW_ACTION_SET_IPV6_DST | \ MLX5_FLOW_ACTION_SET_TP_SRC | \ - MLX5_FLOW_ACTION_SET_TP_DST) + MLX5_FLOW_ACTION_SET_TP_DST | \ + MLX5_FLOW_ACTION_SET_TTL | \ + MLX5_FLOW_ACTION_DEC_TTL) #define MLX5_TCF_CONFIG_ACTIONS (MLX5_FLOW_ACTION_PORT_ID | \ MLX5_FLOW_ACTION_OF_PUSH_VLAN | \ MLX5_FLOW_ACTION_OF_SET_VLAN_VID | \ MLX5_FLOW_ACTION_OF_SET_VLAN_PCP | \ - MLX5_TCF_PEDIT_ACTIONS) + (MLX5_TCF_PEDIT_ACTIONS & \ + ~MLX5_FLOW_ACTION_DEC_TTL)) #define MAX_PEDIT_KEYS (128) #define SZ_PEDIT_KEY_VAL (4) @@ -338,6 +345,46 @@ flow_tcf_calc_pedit_keys(const uint64_t size) return keys; } +/** + * Set pedit key of decrease/set ttl + * + * @param[in] actions + * pointer to action specification + * @param[in,out] p_parser + * pointer to pedit_parser + * @param[in] item_flags + * flags of all items presented + */ +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 = + offsetof(struct ipv4_hdr, time_to_live); + } + 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 = + offsetof(struct ipv6_hdr, hop_limits); + } + 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 = 0x000000FF; + } else { + p_parser->keys_ex[idx].cmd = TCA_PEDIT_KEY_EX_CMD_SET; + p_parser->keys[idx].val = + (__u32)((const struct rte_flow_action_set_ttl *) + actions->conf)->ttl_value; + } + p_parser->sel.nkeys = (++idx); +} + /** * Set pedit key of transport (TCP/UDP) port value * @@ -477,6 +524,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; } @@ -557,6 +609,14 @@ flow_tcf_get_pedit_actions_size(const struct rte_flow_action **actions, keys += flow_tcf_calc_pedit_keys(TP_PORT_LEN); flags |= MLX5_FLOW_ACTION_SET_TP_DST; break; + case RTE_FLOW_ACTION_TYPE_SET_TTL: + keys += flow_tcf_calc_pedit_keys(TTL_LEN); + flags |= MLX5_FLOW_ACTION_SET_TTL; + break; + case RTE_FLOW_ACTION_TYPE_DEC_TTL: + keys += flow_tcf_calc_pedit_keys(TTL_LEN); + flags |= MLX5_FLOW_ACTION_DEC_TTL; + break; default: goto get_pedit_action_size_done; } @@ -1075,6 +1135,12 @@ flow_tcf_validate(struct rte_eth_dev *dev, case RTE_FLOW_ACTION_TYPE_SET_TP_DST: current_action_flag = MLX5_FLOW_ACTION_SET_TP_DST; break; + case RTE_FLOW_ACTION_TYPE_SET_TTL: + current_action_flag = MLX5_FLOW_ACTION_SET_TTL; + break; + case RTE_FLOW_ACTION_TYPE_DEC_TTL: + current_action_flag = MLX5_FLOW_ACTION_DEC_TTL; + break; default: return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, @@ -1169,6 +1235,16 @@ flow_tcf_validate(struct rte_eth_dev *dev, return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, actions, "no fate action is found"); + if (action_flags & + (MLX5_FLOW_ACTION_SET_TTL | MLX5_FLOW_ACTION_DEC_TTL)) { + if (!(item_flags & + (MLX5_FLOW_LAYER_OUTER_L3_IPV4 | + MLX5_FLOW_LAYER_OUTER_L3_IPV6))) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, + actions, + "no IP found in pattern"); + } return 0; } @@ -1318,6 +1394,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; @@ -1862,6 +1940,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,