From patchwork Thu Oct 11 13:27: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: 46623 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 A8F361B579; Thu, 11 Oct 2018 15:27:19 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40045.outbound.protection.outlook.com [40.107.4.45]) by dpdk.org (Postfix) with ESMTP id 2D0C51B579 for ; Thu, 11 Oct 2018 15:27:18 +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=Glsw8D9IMas74ddfk44mgXQmexaK4zRAEdlaF2Dekqo=; b=MCHvsjPqIiN+emU5CqZAjmrdxflAhgCclTuTYTcE21aPJxAJPeJEEkfcEPfsjMM3MDPKSVCtL2/gTduUhNQVIVub07kUiGXmb7ovPl+Zfv2dWQOTZ4UnIrOUJiiZRgWjUzoNc68FFeST2ryzdlubZxTx0Cscr42bp+WTEI5L3p8= Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com (10.168.9.17) by DB6PR0501MB2568.eurprd05.prod.outlook.com (10.168.74.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.21; Thu, 11 Oct 2018 13:27:17 +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; Thu, 11 Oct 2018 13:27:17 +0000 From: Jack Min To: Adrien Mazarguil , John McNamara , Marko Kovacevic , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko CC: "dev@dpdk.org" Thread-Topic: [PATCH v4 1/3] ethdev: add generic TTL rewrite actions Thread-Index: AQHUYWYgV9vSLmrceUmopPRXA9y/Nw== Date: Thu, 11 Oct 2018 13:27:16 +0000 Message-ID: <20181011132641.1000-2-jackmin@mellanox.com> References: <20181010130524.23590-1-jackmin@mellanox.com> <20181011132641.1000-1-jackmin@mellanox.com> In-Reply-To: <20181011132641.1000-1-jackmin@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR04CA0077.apcprd04.prod.outlook.com (2603:1096:202:15::21) 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; DB6PR0501MB2568; 6:mBvwROmmYx6qFzvj66oPSUH9P9sW8syvl+yLwvMYQo9z4Zd3EK8aAduqyU48/1WI5sB79Zn4927t4KN2M/CiQAt3fcradBkzYbjWR4hSzE6fAe35fUp+gBJUxcSY1fBx3GGvZgP1geCJlReU9t+vldS8U/4Dict0NOblN9S9HbwVzUuL3h0lDaeFSyyK/BTw75/uMYxoq9bFAy+w8LsfWESyGmi4VU0E7aMKB7nO7Dm92UbTSh0u3In4vkYgxAGtZaHyswwKM6HlgRfpkMQ6wAs+Vxa+uEueyIKFGaI5QQqNES1y6fdOtUgFHGz1H1n0IvfQe+4LZQCqj/t8sSWGeyRdoaA4owWzltjBDVIsaxoBpdTwSsZaZLAQbPu5h0CGUgcRieJPsOjQqdnaAIBt0Q4ODuOZuACIYVSKdl4GGy5N8qza7zNHEQMB4uZURqFftEqkfR8EczvTbPcSSsi7fA==; 5:cnZHKEpwb9219wPBmrVtbXIuipb6qjeknMdBvWpck4JxCNXVZrnQogh4/vQnaxEmTxcfhALeHRB7Gtk2gK2DVkZQR9XdYQhw7jVJ81YR9cVY6KMVqdol27ItY3E2PoUAkTV4sqv6qJYPhgtXX3JtqPOKes6oQYDdHEjmWb3p1A4=; 7:S0DzFQP9uj1HNeawRZ/LkaC/0QIUbhcgpEJ20DRYgTnhnRhKchCgUrRITlBXGAG/0RYtETJOJ9YVkV424yaaoQ14L8I2Z82OhBqfebMYp/hAx+Bkm9x6H6JYrLfoVsv8VqjtkKbHnWpMm0V1FgvnLSfagj35NnITRKJiWaRmBWpDFCl+JHjH/cWQe70tuiNBP7qJQEnkdqJ1tIY26B3uo7vKiHTBJngciC29FvCk/0n6V1m8X/738j5hVMBj5sSf x-ms-office365-filtering-correlation-id: e5ccd235-23e1-4140-1d5b-08d62f7d4350 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:DB6PR0501MB2568; x-ms-traffictypediagnostic: DB6PR0501MB2568: 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)(5005006)(8121501046)(3002001)(3231355)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051); SRVR:DB6PR0501MB2568; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2568; x-forefront-prvs: 08220FA8D6 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(396003)(376002)(346002)(136003)(199004)(189003)(71190400001)(316002)(6116002)(66066001)(81156014)(6436002)(8936002)(8676002)(110136005)(81166006)(2900100001)(3846002)(2906002)(5250100002)(7736002)(305945005)(1076002)(6486002)(71200400001)(5660300001)(97736004)(186003)(11346002)(446003)(53936002)(478600001)(102836004)(26005)(256004)(6506007)(86362001)(68736007)(25786009)(476003)(386003)(486006)(105586002)(4326008)(6512007)(36756003)(106356001)(52116002)(14454004)(99286004)(2616005)(76176011)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2568; H:DB6PR0501MB2023.eurprd05.prod.outlook.com; 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-antispam-message-info: CXJhdbVD+dquguhHjdgCTG1hntAWlMzFmiEnOhlwX9c0zE8Kv1ANQUHBHb58mvpc3xLhWSkd8C5df3TsWjLxXIePBs3WzVbe2KUD+ebckqaTfUWBcPy/vwvhRCPbyGVHyklU1CZbxWi4yC7QdBYY4ETN1eOY+4Q2tA8P0mE3D353tc2+IFINvzI5Y16HwxiL9F7Fd7gRLXDJoAxL0NJEXWfvP3gdQXZ110TZMmKlKgVJihWFkP2e264uJ260k5AZ/HeFgft1xbMbS/QYQG2jdAPhenuSuudfdItXamFTjSKbmtt48BJ+DAHTvzT7T13su55qxkuKAvGEeAXR2vf0cPlBxxc925KSlbqW+3ZvszY= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5ccd235-23e1-4140-1d5b-08d62f7d4350 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2018 13:27:17.0151 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2568 Subject: [dpdk-dev] [PATCH v4 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 | 24 +++++++++++++++++++++++ lib/librte_ethdev/rte_flow.c | 2 ++ lib/librte_ethdev/rte_flow.h | 31 ++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index a5ec441c9..9fc5b88f2 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -2197,12 +2197,36 @@ Otherwise, RTE_FLOW_ERROR_TYPE_ACTION error will be returned. .. table:: MAC_SWAP +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 bc9e719dc..5040c7667 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -136,6 +136,8 @@ static const struct rte_flow_desc_data rte_flow_desc_action[] = { MK_FLOW_ACTION(SET_TP_DST, sizeof(struct rte_flow_action_set_tp)), MK_FLOW_ACTION(MAC_SWAP, 0), + 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 68bbf57d0..f102e6939 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -1579,6 +1579,26 @@ enum rte_flow_action_type { * No associated configuration structure. */ RTE_FLOW_ACTION_TYPE_MAC_SWAP, + + /** + * 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, }; /** @@ -1987,6 +2007,17 @@ struct rte_flow_action_set_tp { rte_be16_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 Thu Oct 11 13:27:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 46624 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 7F9BA1B585; Thu, 11 Oct 2018 15:27:24 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20041.outbound.protection.outlook.com [40.107.2.41]) by dpdk.org (Postfix) with ESMTP id DACF21B562 for ; Thu, 11 Oct 2018 15:27:22 +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=tPxHKCkOD6ZV9KFUgSTfJbuQaKQYCgPOS379LT34sJ4=; b=le785APOZFSN7Dneh3rne+dHfoGHbPAdr6uMitEo68ZEmfCa0vawFM9tvoOY2rSOrCYw5aHM/thsGYWhRQbSjhmgVpig4fCjhzUmvpC0vKds0Z7brV5zIW7B0MibbuOMm1jnXdrgVudMrUKW/0UsfGGpHyK0ltq/mZ2R7mjCln8= Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com (10.168.9.17) by DB6PR0501MB2568.eurprd05.prod.outlook.com (10.168.74.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.21; Thu, 11 Oct 2018 13:27:21 +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; Thu, 11 Oct 2018 13:27:21 +0000 From: Jack Min To: Adrien Mazarguil , Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic CC: "dev@dpdk.org" Thread-Topic: [PATCH v4 2/3] app/testpmd: add commands of modify TTL Thread-Index: AQHUYWYjoxFpeI0KIkGe/QMhY9cgjg== Date: Thu, 11 Oct 2018 13:27:21 +0000 Message-ID: <20181011132641.1000-3-jackmin@mellanox.com> References: <20181010130524.23590-1-jackmin@mellanox.com> <20181011132641.1000-1-jackmin@mellanox.com> In-Reply-To: <20181011132641.1000-1-jackmin@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR04CA0077.apcprd04.prod.outlook.com (2603:1096:202:15::21) 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; DB6PR0501MB2568; 6:xMY/SA+09BTff/OO58dorN1UDbZJjg/+AlMYNH3m6dUmrhr2DIBYGwwTuvQYUeqQiADx5tiatFlCSLGagXPO9ZOphxgVcd/HFrdb6kaiFt2WTUmPM9CfOSq5pvQeNyuB29rLQAdRnuR8SKLc3lwfViazK4saoByT2aMlDLeb4xoPDESgPd3pUef5q44tesqPBk2w4fQn4tF740fI5pgL3c3NKvn7FK8Brv2e0pPNuxPcwQv+ATTIRgW3RwpAYJ4PCj7hN316INK1Uhrn+b59QIyKuIIEdTRZqCTXYDenyWhp7BGJ2kBSQusOMCX7cDo6mnTzSDGdqmR4J9hnMySPJ90NIbT/G890JJ/MEK3tKMkmAWWUnaezKMTToxYjqfw87Yyz6iBTE7xSIGectCjIQSCEDmYXL9kEiMZpOaqlFUBFkq+aNu8GKZcCiTWPUGZJ60/p202v64tj0BEc8GeBnQ==; 5:dXp00twinzcsw/JBz3ZED0kSJhoL3AJaSN22i5qfY/uV8GOo6UFUtAIGcurIQG0mnxFzHw5tHPEtk3Ns/vq4VHjB/mOJ0cisWS0SGegr6KPjlkX2cRVFdIQlSN1/ThHajFTmXVdpv3XCn072EV5qkYf6n68+HRa22XFJwsZKZ/k=; 7:W4KsX7nWKGeiB4Jwe2uaeBnWkwy8SH+pVeBWpBK6/ljPkTHRf3aO9zxRUkI8veLf3ZhHQuJzr6sIPTRIDxLUm8uhq0TTbjjYpqkymxs2Rivy92IVhFvGqQ0JH8Zmmk71iuiyQnnJf1WHwc1yhNa4jP0vDG9zlvBtfBnCVF2lfpOqUkFUz91Z0zP7KcA/yTZlQbbStvn8+BW+SgWCVFnDcLcs39eVtOj/IPcYJePCKSJPvQ0FfI0AkNwPitDLPVDY x-ms-office365-filtering-correlation-id: 6ba95918-fd45-4baa-f46d-08d62f7d45e6 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:DB6PR0501MB2568; x-ms-traffictypediagnostic: DB6PR0501MB2568: 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)(5005006)(8121501046)(3002001)(3231355)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051); SRVR:DB6PR0501MB2568; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2568; x-forefront-prvs: 08220FA8D6 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(396003)(376002)(346002)(136003)(199004)(189003)(71190400001)(316002)(6116002)(66066001)(81156014)(6436002)(8936002)(8676002)(110136005)(81166006)(2900100001)(3846002)(2906002)(5250100002)(7736002)(305945005)(1076002)(6486002)(71200400001)(5660300001)(97736004)(186003)(11346002)(446003)(53936002)(478600001)(102836004)(26005)(256004)(6506007)(86362001)(68736007)(25786009)(476003)(386003)(486006)(105586002)(4326008)(6512007)(36756003)(106356001)(52116002)(14454004)(99286004)(2616005)(76176011); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2568; H:DB6PR0501MB2023.eurprd05.prod.outlook.com; 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-antispam-message-info: FTVv2Yu5H9He6+0nDOZW214iY1DHcMoenI5r/L9SlECzNjJd6lYF5KPhG9hCiK16ltL38MKz8lk2+6iW3RNDBt49oaIKIF+sB7Z2Ie0nxiTLVzpBlPXeOBxPdY9/asEIOQt43sNCv4XlNLsBSSfhtURPmn6Pm7f/G5qtAcCJzDGPJZZtGUWFhPvstNvHBih1hFTLz2qFlsKKZq73n9T+xcVydyOX/O3aTh9veiEiG0UuUUrzQDur30iJLidXu2OpLR2ygyobZD0dUSEeei92Z3kTjtiLseU/8xmY8cwlRfug0jEwLCfj+YwRWrQnoEopK5gWbeQ6F/u2hLBkj1GXHj4Ak8NSHj2egpYBbqjjWDg= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ba95918-fd45-4baa-f46d-08d62f7d45e6 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2018 13:27:21.6247 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2568 Subject: [dpdk-dev] [PATCH v4 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 4a2764270..3efc2d86e 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -256,6 +256,9 @@ enum index { ACTION_SET_TP_DST, ACTION_SET_TP_DST_TP_DST, ACTION_MAC_SWAP, + ACTION_DEC_TTL, + ACTION_SET_TTL, + ACTION_SET_TTL_TTL, }; /** Maximum size for pattern in struct rte_flow_item_raw. */ @@ -836,6 +839,8 @@ static const enum index next_action[] = { ACTION_SET_TP_SRC, ACTION_SET_TP_DST, ACTION_MAC_SWAP, + ACTION_DEC_TTL, + ACTION_SET_TTL, ZERO, }; @@ -974,6 +979,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, @@ -2636,6 +2647,29 @@ static const struct token token_list[] = { .next = NEXT(NEXT_ENTRY(ACTION_NEXT)), .call = parse_vc, }, + [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 74769cd48..77233987b 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -3739,6 +3739,11 @@ This section lists supported actions and their attributes, if any. - ``mac_swap``: Swap the source and destination MAC addresses in the outermost Ethernet header. +- ``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 Thu Oct 11 13:27:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 46625 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 6A5601B598; Thu, 11 Oct 2018 15:27:27 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20069.outbound.protection.outlook.com [40.107.2.69]) by dpdk.org (Postfix) with ESMTP id B09711B588 for ; Thu, 11 Oct 2018 15:27:25 +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=YqnIaPbMlXdfq5m+IzgYLKx5S31eJih1ULb+aCr53FI=; b=NEhsRsdYIiMmago33zhL5tUivcOVsx0FtnkG9zNr2MkD+XZQQ9YebxrZGRc5Sy5KpQ/+QUYyOSJcwl745R4NfKBuhFIuKNbCFEHAJ5vpcXjsvE/ImClW9lMd4FHQf39c/7MbPqG6GLi/5nfK4spvpn5jBSWLhRorKDoIde81Ha4= Received: from DB6PR0501MB2023.eurprd05.prod.outlook.com (10.168.9.17) by DB6PR0501MB2568.eurprd05.prod.outlook.com (10.168.74.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.21; Thu, 11 Oct 2018 13:27:24 +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; Thu, 11 Oct 2018 13:27:24 +0000 From: Jack Min To: Shahaf Shuler , Yongseok Koh CC: "dev@dpdk.org" Thread-Topic: [PATCH v4 3/3] net/mlx5: rewrite TTL by E-Switch Thread-Index: AQHUYWYlgwE2R3HeK06BIIwjOj1MWg== Date: Thu, 11 Oct 2018 13:27:24 +0000 Message-ID: <20181011132641.1000-4-jackmin@mellanox.com> References: <20181010130524.23590-1-jackmin@mellanox.com> <20181011132641.1000-1-jackmin@mellanox.com> In-Reply-To: <20181011132641.1000-1-jackmin@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HK2PR04CA0077.apcprd04.prod.outlook.com (2603:1096:202:15::21) 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; DB6PR0501MB2568; 6:p8udnvRzdLT72UhRJo8XZPcHO2hf2sPPRgB1P58ov+xAC5JiFUbqZNn9QFtwMJvCpQZHBuxokh2z36EDPvQ8k/e8RGroQ2M4rXr/mrzBzmb0YHGcJBlro3fAMo5h7GiH0zX4ROV8CPEbHW4ldWCdzyxk+PZYqhg3qk4tMcUr9+XKE8tkgjjnYqsRzHXjmuROICuT7VfUGo5BFzbmT6VTMpLsT03wbSIOV6ZVeiZAeF4F4znua6SWUNIGmKpzHzWQRBuCaAYGB0DwBFay6tmZz+IXnCEZu1mwwps4wqIx9hhopiQxrSFtK25NOHwPPQfAKQ9fT5bIyj/9B37iXCXKA9FG1DMYMdcTOm60GLtnP2zon8w5Ch5yKdGz44t85Lkgalaq6WE26RZVw6ASc1nu8LizvV3OZqdIo8vgZr95wSju8bCr/arFhNTqJ/wSvVVUNgtdpmyJbfNe4vrMxkz0sg==; 5:S6YgTtoPjBNewW1XAGJ4RQ2qB7HlWTxSFKxBLW4Z4S2mKT1wvpPgboycLX++20A0oJFeLH5iJHTol1f/HHcNZM+yy1K1QMXVHAAL621b/Tmglg/5cFXHT9x8nDuYL18vxDmiBXFvA8EPpkhnzoR4xqO0uqtbPGuAr45ZWtyb9vQ=; 7:vRx6OC1n3uG0ptQFVzeMltu6nPnzCcsTS6W+pFwf8OX63xTRlXbhp7iRNSUwKRsr5sfgobSQ/T2ZDv9iXq8qw0vAX3gIJHvrl+O/kQOgIwnSM9rysDGA9Bql/5Y4nWC0BN2HHY2sYOKtti7cO0Ljzn1DfJXCcsZyvIylvDIpjSYOguFMtAN+X3G+SMqpN9h2iYayk7YqJ3gMK+S2HY9JFYVsynRAAyQgr2FUW6ip0gtQeDy5uecPZBMRn90jR7WJ x-ms-office365-filtering-correlation-id: c391ea07-41b5-4438-0cc0-08d62f7d47bf 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:DB6PR0501MB2568; x-ms-traffictypediagnostic: DB6PR0501MB2568: 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)(5005006)(8121501046)(3002001)(3231355)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051); SRVR:DB6PR0501MB2568; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2568; x-forefront-prvs: 08220FA8D6 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(396003)(376002)(346002)(136003)(199004)(189003)(71190400001)(316002)(6116002)(66066001)(81156014)(6436002)(8936002)(8676002)(110136005)(81166006)(2900100001)(3846002)(2906002)(5250100002)(7736002)(305945005)(1076002)(6636002)(6486002)(71200400001)(5660300001)(97736004)(186003)(11346002)(446003)(53936002)(478600001)(102836004)(26005)(256004)(6506007)(86362001)(68736007)(14444005)(25786009)(476003)(386003)(486006)(105586002)(4326008)(6512007)(36756003)(106356001)(52116002)(14454004)(99286004)(2616005)(575784001)(85306007)(76176011); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2568; H:DB6PR0501MB2023.eurprd05.prod.outlook.com; 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-antispam-message-info: 7aYuKo1w4oORORvNkCBRQIyqsBwPVCSGoJProKfcuInMDpPnLFsRstasDdQucUgAusGnirw8lJiLfbT4R2i/ZdEbKP1ZRjzFVx4wY0tJPUTZkWNN2BXEUzj3hDoBTiW21rvMsm+eXkeonnqeWAUiOTWH40iyVMwnSf4zINIoXyjJBWnFLv0nFexrl6srrhBL6PPQI9pDdaTfXY4Xl55K2XrMWEMrJ/j6b0eoGvx/JP0dz/vmsA8QuftveFABETMhxFMph6H4FgCDEI/zdKxLCe6fOci2bE+I3TCd1S1MN+D1pryyr/0EZ/WfeOgWMfbkVTHUqHNEOKvOmF/r7z5fbS5+VeaeuiJA0O2QniA/teo= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: c391ea07-41b5-4438-0cc0-08d62f7d47bf X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2018 13:27:24.5312 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2568 Subject: [dpdk-dev] [PATCH v4 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 | 82 +++++++++++++++++++++++++++++++- 2 files changed, 82 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index c592828b5..cb07cf652 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 44c899830..a0a3680d5 100644 --- a/drivers/net/mlx5/mlx5_flow_tcf.c +++ b/drivers/net/mlx5/mlx5_flow_tcf.c @@ -218,6 +218,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; @@ -298,12 +302,13 @@ struct flow_tcf_ptoi { #define MLX5_TCF_PEDIT_ACTIONS \ (MLX5_FLOW_ACTION_SET_IPV4_SRC | MLX5_FLOW_ACTION_SET_IPV4_DST | \ 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_SRC | 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 @@ -323,6 +328,46 @@ struct pedit_parser { }; +/** + * 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 * @@ -458,6 +503,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; } @@ -538,6 +588,14 @@ flow_tcf_get_pedit_actions_size(const struct rte_flow_action **actions, keys += NUM_OF_PEDIT_KEYS(TP_PORT_LEN); flags |= MLX5_FLOW_ACTION_SET_TP_DST; break; + case RTE_FLOW_ACTION_TYPE_SET_TTL: + keys += NUM_OF_PEDIT_KEYS(TTL_LEN); + flags |= MLX5_FLOW_ACTION_SET_TTL; + break; + case RTE_FLOW_ACTION_TYPE_DEC_TTL: + keys += NUM_OF_PEDIT_KEYS(TTL_LEN); + flags |= MLX5_FLOW_ACTION_DEC_TTL; + break; default: goto get_pedit_action_size_done; } @@ -1058,6 +1116,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, @@ -1153,6 +1217,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; } @@ -1302,6 +1376,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; @@ -1846,6 +1922,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,