From patchwork Tue Sep 25 15:03:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 45330 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 847441B3F5; Tue, 25 Sep 2018 17:04:31 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30066.outbound.protection.outlook.com [40.107.3.66]) by dpdk.org (Postfix) with ESMTP id F21581B3BC for ; Tue, 25 Sep 2018 17:04:26 +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=999nD3CMIX1KHh0M7/LGATxTyIBGjscxsPHrUTYNzUs=; b=iy/GQM4EtP+lNlWQ3VUlw9VdtIdY1FR6yXyRI01ur+Cu62UBWRX/BlNzBslSg4oH7ezSepDUG+f5MNFjFnqi8cQWzQjCIUnyTQUBm50RXZt74avESB4Qd0PkWL3/BhTbsRlWxhPzrGZ7UDIg+sUKsWjuuSoyV5Xy3BwXLOrnfDs= 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 VI1PR0501MB2031.eurprd05.prod.outlook.com (2603:10a6:800:36::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.20; Tue, 25 Sep 2018 15:04:19 +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 23:03:38 +0800 Message-Id: <20180925150340.25378-2-jackmin@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180925150340.25378-1-jackmin@mellanox.com> References: <20180925150340.25378-1-jackmin@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [118.201.220.138] X-ClientProxiedBy: HK2PR04CA0053.apcprd04.prod.outlook.com (2603:1096:202:14::21) To VI1PR0501MB2031.eurprd05.prod.outlook.com (2603:10a6:800:36::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: abeaed9c-6636-4991-a525-08d622f82db8 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:VI1PR0501MB2031; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 3:iTJAnvhuxz8Q3ITHIkVO+h6WSX9B7lPnl1LbdYhonoxbD4S/RlqTH75x1THMIQEoLKhpCbnXO8mml08qjE9vI9pOwsGXwHa64XhhHQE2LlmL9aZ87CZjWrPhYypnelTbuTxsDIzWwmiyVroYZyrlvuJgQTS9d2cz9BCcrsOcuH0yWoXQjbYUEznytbGXLy8Q/VXMViI7TgF1+xY6zOFq6qTxH/NT7y7dFtLFcEJSIzuce0z/ZjojahTmwnlqAnm6; 25:uphARiIyVZMtIAQc0L8Eha35PupwZ/fg6FFpmOpIbDMnNxyo2EN9/ojv+Sj44qdp8Ax8KpMv627tBlcKv6Xg4qfvbtAi47mOqwn26rfJ2m+UU+3qjg2YH745CRjvaBvN8iGOgULrrnPCWcl4uJCnP5gOv0w+/PXxj9cyOqKmHfrFbqO7eqB7FVYC/54CSM39fsjs+AOhU2HREHY26bOzXZ/YKM2pHBKCtMl9EmGihnI75fHGlKE5OlgQmbPWYOMcoNvzhoUuPgUWfxzhgJkTDL0CT0Fxp3tJBo1ltGGZ/7OrPIoHUpULqwFl8+lbeL8vf44Y948ZzXnzWVp4neCYUA==; 31:WRszFkC60pVqx+vPa8zafXs7C3jahFHjW6M1BihGa94pZ9O1u4nbd7jM1CdxbMLvT2jqYrjwDtAa41QytsQZHnK6z0aVUetm3eHEYsyS5YKDBb9lx4yhquCmZNALKheloXpZRn8CULJZtzaafl2dEu9znYhda1+JM6f+I1Xt48b6dnm4LL4zvOOOynnLC5ViO8qdZWtUv/ABotS8RzTTtRJ8bL9zwFf9LVNM441AV0s= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2031: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 20:OYCNKNnh3XuYVzC5L7OBx4Wfj9NhKyUICeSi1KDe2x47YGJMvGvh8/EqfxQQDBbZS9L6LYUQymG7zomhGESF8A3QKQRW8gYysXsXGNH9XWwvTODdsW9OiBEEpWPCXvV3lsBcQrRrO7V7mEOQApBpLDuFssEd5pVwlDKSCBaU5ZgJ8xkUYQgiBxlcdflYs/A1ixCaDhpQ7/jIVE+GC5AFopzl0cciNVNmjoG6ht0AEqNl4fIRlHmqQ/biSb6YqdGmclmnS6evfETIT7ZFgCxBn+0Y8c1+tG4S756/OfWKCScUDXcvVSHnJy2IlIIGbwGrybFTBnvHcGY0mHAN68GyRc1X61Zui0ppDkyKq6zOTlXKfbbwmhLZ/JimxKSRzwMrXqjs3itjDQg9RK5RsCbm6/XoRN16hvJerH4mhjopgNQRNKQVr7ByfroD8/ql2UfMPsw7FEuq6fXP9hUdmzao28+7PzJXmIqN4kqpCrfjGRj9oR2Kg7iJFq35nm7J+0As; 4:SDHpFTjcoK8ALA2zgCaxoWwLdsFUAhxcsW0rZXnROIE8Gl/VmJ89PRzbz8XoNA++xVt68L6tF5xtwystqktUdp6TJTAFdq9JuLBWLPO7SUtOrUDEXpO3Q5gJPOpb/QxiLoCUt6A6K5za6D6FbqWleb4TnID8pJqh1ka/x1rxokj2PMTJhwbN2x413m5k8QYVKMbYRzJOR0d/MOxy9QpROxaCL0t4EiP1aGV6LmbQj5xkB1XApbTo0u5YRQ6x6MoZFZKoZrjH+JlMKswmUPcNmw== 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)(10201501046)(93006095)(93001095)(3231355)(944501410)(52105095)(3002001)(6055026)(149066)(150027)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(201708071742011)(7699051); SRVR:VI1PR0501MB2031; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2031; X-Forefront-PRVS: 08062C429B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(136003)(366004)(346002)(376002)(39860400002)(199004)(189003)(26005)(956004)(6506007)(106356001)(105586002)(386003)(446003)(11346002)(486006)(2616005)(186003)(16526019)(476003)(6666003)(6486002)(305945005)(478600001)(34290500001)(8676002)(7736002)(2906002)(81166006)(97736004)(81156014)(5660300001)(6512007)(6116002)(3846002)(1076002)(53936002)(16586007)(4326008)(25786009)(110136005)(48376002)(51416003)(76176011)(52116002)(68736007)(50466002)(36756003)(50226002)(14444005)(316002)(66066001)(47776003)(86362001)(8936002)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2031; 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; VI1PR0501MB2031; 23:U4ocOafcs00K41N13rcd6p99605s0rNktKxL1kg?= 3x6VoLkp9kgtsxnsJndU393hnDf4Jd1Ux/GENa+XCchj3bm8+Kc1AGiM82vFH9mUhp/GHD/fUHaVfWFwsy82rUTd9McKhDAyidhqxOSYHgLEBfVgNsT9n20CtllNOHfkTFvRzAeJz/FOEwy73UO30yIoD7QKZzgbfeRjSdSjdL/kVw/iZuG6QNQAeA98G2q/Rbxpi4fMEsToz7zbSL1xLnju+veFufPJBp22VSDXRUn55hyKbx8Ch7arca/uQYOzmk8CX6LOcuomxEHFMfYb4C6t2tS0lD075mUvnt1oS2ouu9ybpSzHHvMhgbhu89qqwLSxxpec/g7WepHd5/Tj43KCuoRS6B/yFDPFv1VfQGfydUitlgqrOLjUxn3q/5wbUmRJ/1uZmwrxHwnYDtILqPUJZfjKVZOm2NnmicVd/DXdanwyH6L2v8XkqVrXggHg38Ut1B3aoG16gA1La+T1BlFaWzXDUBOdxkkS0RtcSyWsmLxnWvIxHgEIllz1zt09wWKe9G/igRSBKgRlOSV4Uf0m0xhP3B7rHlDeCBLq/JfATx/6peE4eH0B0niIwgLH7p79EA1WrrdRTEfQjd4n6G9WlUzZBMAzdveqnC3/6EEMzbSUM3EBOwrMmv4l4X5L3PnC1RaJ3NOTfuauDnSpsZ6pVhEOdYKH2AVK9xngn+wF81gd06CYvjv4LkQFRWduqLUi3IvBBjZRfbjg8JoNcJOfFSuCJ1ds9uCECzEhD1AOQhQ+gx8EbjbtJCQjoy9Ovib1UHgBkgVloq126uZ1FMF/ZEu2mQb30M+WVL/C19CHhtnRzuN6UntqnuNBc8nJ4FR7aAwYgaRlYqp46eEQsyds8POJDOTua9/bOS8Gos5xBfc1Sssq47k4XAK+PCtcEq6BtNugb9ugYptACw6ajgG1T606QqTBKzjnEGKr5lFe0QsFNSZJnZfWd30qV9JnqpNAMBKG91eLwOPzbD4KC2I3R1q7ofVfym1b39xywZ37lx6SeZQDE+F9uQxDR4lGpM5j6af0rfdbis2zRRyN3q4ARVmk0rp8UDac76tOlEJGSNNv+4Z3RIeE7uiXCsQlD90PiQ8492GHGMs1VO/wXJUR2sFVV+KJLHc2vHShyyZbJjpvDC3r/EIGfN+0nnf8i7ri1WzN2YEw9NQ8Ft2Dw9rWErmeBlIilobjj1CUmBwJ7ZyDFJ/gIvsFna5ZyfyEC7IA= X-Microsoft-Antispam-Message-Info: 5/js0mVGTF4TSEkb9jkBYTIM2aPP8Gix8xuhseYm6q9jjLWzLzYpJbDGPzvguvGNO7/iLvP3GTvc8gIZ+AtQ542BlSQyJfVyzpTSVuaMPNnuAo5MMPvxSxgvAdL34MrAWq1njpbrrBKmEMlK5nKQaN+xsxF8Fll3Ocw8vU5xgi5ua9Npudzibv64fZakOQ3lMo0XeENXneE7UPczfWvmNi63r0PJwsDK4JHkMUi/Zp/K5enBDCJ9LxSzN9FZj8vgJa+Ktno5rTXSa9JNb2kdgbu1yOfOjhQco3WnqmMkD4BwzZyy1w+vd6L3SXjJYpxP9CXvciQJQbmWRV8XawdsUXgqEIefyz4vctGcW+mYfu8= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 6:BDbqhnuul5Jcx6Me2+vWnAqJu56nUaAtNVJMIJobMzC9PDBIPm/LKxshAUiL/N+RM9APNfRDmDCGVCe9QXfPnGVJDgppM3sVZIplC3fOeSOvqFCOXrWgblZQMlL+RTs5gTxxonjAV/3DtbB7UHHKoe8VxkX9T04M5x/GZcPIABirrd6K6kqR+3LgLpHfC/Og3wRweAEE5Nlq1ogY7Kafyy2V8rzgta+BULaouzFPbPhU6v6Mmby9erwCYyVC7cLTB16pDDwetb/EiFqckE3uTAvOBK3mLy/JK/ULCfI8iY9NM5bRVvCCQ0910M6uzhfKV1FTvIXL9/XTnfi4orWJ+3ok5RFliO58LIU9N50msjtol2xcXuvsb75iSUYWDmpyppfX6F9IfyAt6pCKNPvtjSzJhWBUp4hYZgH4QCixRpoF5FR5E3V0UtlZpX/Tg8M0sDEfFmH4lEkR5RTE8uVi1w==; 5:CtI4rPkWMxLcQAfF9u6SOE5jIJR/S0u3bi/cuh7m4tgOiVdOvpRGRtpl6zPAXX0K4sk5mglGwOKaqDJ1luxPGUnOES63GQK41WKnNZL0/Mf1D1nMQDeHbu3J0UX32kR2Dfvdy+CkCbl1TnYqW77MMNRNITmIYiqL9QiuwrK4YIk=; 7:/aEnzKIIU+eIFhZFJYDH7+X8lzZvdwH5hGWZhOJRNORNSopyL4efRgWfE8FvcYyUEKLEDAZDZWC3Rbn/UUn3MjpalyBMyBqyh+rCKX27f/UpIFdXcihxq21Lkz5h4i7geLCNYiYt7ZEJ7a7Csu066O65y52t1EXExCS1qEsZmPIMNHqLw8FSeYMKe74TgQPgZeo+khKg7RXH6S9ptZPEfzMfJepYNsxRoXz26P+hCAq/AHzA9OnBRHkh4TkFR3yp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2018 15:04:19.8454 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: abeaed9c-6636-4991-a525-08d622f82db8 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2031 Subject: [dpdk-dev] [PATCH 1/3] ethdev: add generic MAC address 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" rte_flow actions: - RTE_FLOW_ACTION_TYPE_SET_MAC_SRC - RTE_FLOW_ACTION_TYPE_SET_MAC_DST added in order to offload to NIC The rte_flow_itme_eth must be present in rte_flow pattern Signed-off-by: Xiaoyu Min Acked-by: Yongseok Koh Acked-by: Andrew Rybchenko --- doc/guides/prog_guide/rte_flow.rst | 30 ++++++++++++++++++++++++++++++ lib/librte_ethdev/rte_flow.c | 2 ++ lib/librte_ethdev/rte_flow.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 3aec0834b..5ecf154b6 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -2196,6 +2196,36 @@ Assigns a new TTL value. | ``ttl_value`` | new TTL value | +---------------+--------------------+ +Action: ``SET_MAC_SRC`` +^^^^^^^^^^^^^^^^^^^^^^^ + +Set source MAC address + +.. _table_rte_flow_action_set_mac_src: + +.. table:: SET_MAC_SRC + + +--------------+---------------+ + | Field | Value | + +==============+===============+ + | ``mac_addr`` | MAC address | + +--------------+---------------+ + +Action: ``SET_MAC_DST`` +^^^^^^^^^^^^^^^^^^^^^^^ + +Set source MAC address + +.. _table_rte_flow_action_set_mac_dst: + +.. table:: SET_MAC_DST + + +--------------+---------------+ + | Field | Value | + +==============+===============+ + | ``mac_addr`` | MAC address | + +--------------+---------------+ + Negative types ~~~~~~~~~~~~~~ diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index 631f80efd..1f4b67603 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -123,6 +123,8 @@ static const struct rte_flow_desc_data rte_flow_desc_action[] = { 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)), + MK_FLOW_ACTION(SET_MAC_SRC, sizeof(struct rte_flow_action_set_mac)), + MK_FLOW_ACTION(SET_MAC_DST, sizeof(struct rte_flow_action_set_mac)), }; static int diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index b41e37a31..19552902a 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -1567,6 +1567,26 @@ enum rte_flow_action_type { * See struct rte_flow_action_set_ttl */ RTE_FLOW_ACTION_TYPE_SET_TTL, + + /** + * Set source MAC address from matched flow. + * + * If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_ETH, + * the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. + * + * See struct rte_flow_action_set_mac. + */ + RTE_FLOW_ACTION_TYPE_SET_MAC_SRC, + + /** + * Set destination MAC address from matched flow. + * + * If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_ETH, + * the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION error. + * + * See struct rte_flow_action_set_mac. + */ + RTE_FLOW_ACTION_TYPE_SET_MAC_DST, }; /** @@ -1986,6 +2006,15 @@ struct rte_flow_action_set_ttl { uint8_t ttl_value; }; +/** + * RTE_FLOW_ACTION_TYPE_SET_MAC + * + * Set MAC address from the matched flow + */ +struct rte_flow_action_set_mac { + uint8_t mac_addr[ETHER_ADDR_LEN]; +}; + /* * Definition of a single action. * From patchwork Tue Sep 25 15:03:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 45331 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 54EB61B429; Tue, 25 Sep 2018 17:04:34 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40080.outbound.protection.outlook.com [40.107.4.80]) by dpdk.org (Postfix) with ESMTP id 88BC81B3E8 for ; Tue, 25 Sep 2018 17:04:30 +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=tooHFHKC5cI6Gin+krqQ02+vgXPy6Gq4oU28EH8NCQE=; b=LURGa021TOxTryZq9FZB9IwR+4eOMldqBtRum/CfQ8Q43pJsR+xRQUaKDg7vfZcuklfMVCpLC4uTnLQvLA8Uxj8cNimwjrlhPtzAavO6cziMyUQ04PVGqER4IJJ2MlNGtwqaMLdbA8CfGtfUGICI5kyN/WBBymdDN3CgLB1j2QA= 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 VI1PR0501MB2031.eurprd05.prod.outlook.com (2603:10a6:800:36::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.20; Tue, 25 Sep 2018 15:04:24 +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 23:03:39 +0800 Message-Id: <20180925150340.25378-3-jackmin@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180925150340.25378-1-jackmin@mellanox.com> References: <20180925150340.25378-1-jackmin@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [118.201.220.138] X-ClientProxiedBy: HK2PR04CA0053.apcprd04.prod.outlook.com (2603:1096:202:14::21) To VI1PR0501MB2031.eurprd05.prod.outlook.com (2603:10a6:800:36::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bc6368a4-24dd-412f-a93e-08d622f83076 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:VI1PR0501MB2031; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 3:0MGM+5ug8KKBpAlfEA/eUBus86nbMvMl3/9DxeGv6Kw141wHzAB/sZfL1URLcpFrJo+TMpQCTs3rf93G0lbbh9eJSd/wEOeu9hfQp4ysycM3QGrpgWGVHohY+Va+3T4j/hN60N8QIWgFCz7/CdoYPqCIJGZP0fnEo45V3rEeEvM5uj0mcgwqEDbndTyqmlt/GCZET8mRVytQ/0qwC6kvJGd3DYaoeGoXCh9bdOgfeb7bF4xkSDy79TTZ+P15kDQL; 25:w+0qM0RH4DBugz/NtXrAOSoOkIcrZrWPwPTWDLHXMop0bWzmf4RU/+J3dko7PvUmqNJGfbBWJgU4tmj45icPYfFAaR/xbutJPsU5FEUR9alE0PHrKX2R7VKDUfetFbQfC+CSWLuKPcQDKmlHhamfYd+DlV/q/i1VlZqcFMfBTqGrSVeJwBxVXjhjgW9ViSSJyQJKUweIliOblAa1luSfPVWlTwEvaPo21ZBmflqVvtLDfyPqm5YqKviOkZRWQHTVamEsei6Wuzy+wqa8RjedrSdd+IKH5rAtgsup2x+9/cJv/lYQtvwfdj7o96A12Wt+YV2YiVQQbjWYeTwA0Kr2JA==; 31:WuUBuOQiew7wB6oJ0Wq+PjBIKMxe6VTLkANaZtV7zK+3uBEYrBGXZ8DtL2AeZ5mATOqP421PpDlfNSh90hzgcGgl8urDlQsYw3Ir7+w4Ui9Ens4TJZs7nSqX15qazXi6uHmzcjWhrSioauzf8HMg5n+d67tbHfWBVWVLoIcZW7DF+t3fZF0qH6kXM1B4kYtr0AUQRXnX/HHzrCtGRVWxAcIvqZW7wLpNLR1AoHBuIzc= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2031: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 20:JSYe+28Dwv/+ig7Ev5FTFrQ6Fp3KnYJV3OJqCC/gI8nZQylRpwGbnbkGENe6k72NRuG/gfrfR1xbRu5M2RBftlEVX0mM8r5H22pPvVpRWPDY0dGBL9RhIXjJ4ziFGhlyK5Hu9F3xWZ+/betCfV3OZq9KUDlvb+b8HHeSRkfIxn5KGMHWKdA+gli15G+8AsxZqaEHO+ilrNMapnhmskXlXXayFgmDYKrssTvePJwqOlI7LHZkcDaGDFc5PBDt4FC5w49LeggCKH9EpXH3qeHMuNjznsbxJc7baDrGyB6AXxIeLFZgaGnOZPsaSwjxeK1rD2N+je1cAcVoWeodw8VpX5kp4Z2ZoMNzlPmFQK/F1UJNZ0EBjWv8AAbNpd2bS4WFskWGRbO+E5OwVZnBs1n+meW/Zj1h4Dwf9R1G+5rhfLq2uqHtar8uBflVdlu6aeXoM8X07tE9aJ2XJb3WCmlr8V6o8/yc3zY/SG+c4N2dYNoJTiDwcghQ7o/IGPcnpk61; 4:Zw7bQiVajSWjy2fgwnrrLwsI7R+OsNQKPLQUzY7Utl3rxkqhNpnn8Ql0Vzi8p4xNScynadQgHkJiMgz0GR6L/O4ynThDawM4UsePoOS0eeX2klUii7+L4PE859SALldLD4l3Caxw7QgSoSdUSYYqq/0srf0hP4MXCjQSofZuiQb7E8EGfN3BcDTkuU2Pu9z8wXsutIkBIlDJbxmMKiC/tJ3+Y/N+25OVV72x6boxNyRC0xIUWJUUfIUzZHIxG+bGLG3QxXYNaK3F7BEAW/YwTA== 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)(10201501046)(93006095)(93001095)(3231355)(944501410)(52105095)(3002001)(6055026)(149066)(150027)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(201708071742011)(7699051); SRVR:VI1PR0501MB2031; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2031; X-Forefront-PRVS: 08062C429B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(136003)(366004)(346002)(376002)(39860400002)(199004)(189003)(26005)(956004)(6506007)(106356001)(105586002)(386003)(446003)(11346002)(486006)(2616005)(186003)(16526019)(476003)(6666003)(6486002)(305945005)(478600001)(34290500001)(8676002)(7736002)(2906002)(81166006)(97736004)(81156014)(5660300001)(6512007)(6116002)(3846002)(1076002)(53936002)(16586007)(4326008)(25786009)(110136005)(48376002)(51416003)(76176011)(52116002)(68736007)(50466002)(36756003)(50226002)(14444005)(316002)(66066001)(47776003)(86362001)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2031; 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; VI1PR0501MB2031; 23:rPG69dSNFcfOdnpXEH6hRpO5oPUqtMZK3oQMT7H?= DqKNNJyF75bqqj+H2v3lhSw+E+KKqXvCER2237mF660xXSkEh44eGunAx+F7s4SChkyZk5aNA5Ubr+HHdw/cciBTwumK8k8H9oahNimYIiWzpJn9czgcxVcMjHxjVLgsdtBgozZuSyXRaaYNtqVpI1xHdhBazOu4Xr18Ntx+rlcwg3bJ5Kpg0WzFlLqFbvLf1+4FHKb5fTRWwAjhsfH1KYeHNfkuGMS0va2b2oMogzoZVH9O6Q3GZB0qOaTZOhRP4d2B4yQqoHN6uEfLgqmFYWHrtItMfq0VTyFQjckJDKDdM1fY3/KOrl0qgN6SfA29ZC5QOQ5Bw7nB09NAQR9r79WSHaBWLaijdDP/uKnth2C9JRY+eN5TjYaWkf5WzmDyo9HV401ceyJeTRgoXX33xf1P4dNkx9FYwVsi4YN14eZ6qn/hcvjvUKr0iCoy70JUr5bQnrnOWamCWNpl+ccghHlBjGdKQbO5fhXtiH/R7NV1Q/rV/B9WinyDeA8V7hmWcG6cRiHAIfkL0Rfz1Xpd/Yc2MYagRuf7Ldz5yvl4Ywui3+vZYqlgMaY7ZAZ1z/yCMV2/R5++/vraw180J+oDQN+a9W8x4Kyg7XwR4O4ElUBwRCylOq8X6+5rFgjnjS0Xrq1fqBr1UWqgFevM2p9i6eHQ86ZcSqz/Kuxz2cI9vXb+2KzS5QEH2hhamlz2cg4vRVPL+Ms4IiQubGzu+1nBBDQPkztSvtni+6Z0P69wzEo8M2UhUHzp/w44l59DIQigLcBSIyf9okz6jcHHKQnWJPr8Nn5rd4hDDty6+vysnPgX6kFDNmnJVN2UWzIXgFfj076SKy/pDC3uMxA991xmZVPQuzAGEHiw/qd9MHQT7TaSSdvLuaNwheA07y2mwhzzN4RAKfPcj3EjqEY+/JOZ2lkQWBfG75uVi860YHSvdv+BebPqugOiNV8hjeIqS8kVLyjse10K18mkhkCYU6soMV/RYnYucGVeLqdYmAkEvVSM0xqvcvw8cSYj59eWqR/56w+otXrCCxbj2GBBwU1tchag3SGflt6YJA+OAsvzBrMWNAe+b6yZ2z2485WTthmKS2PtWDVD1DAwvCuqE3/IeAuFS2lwc5QWLZihVJkurZS4S/zEfLPnAXHNc9MxU8BHY7dqSkNPamFKmcPDtzkoA4TIgq4freYB8lxRcZOW7x6anqA== X-Microsoft-Antispam-Message-Info: ShgoitutPYDUpJuUYlx1X9L8qe+VjeLUXiLe7TTqpuiNhN8NVXRpmcpj2iBovbsvZmXIaHEub/6ONlkW5EvP4QFEbywQ9CQl9jTRF/LPs/RGZh3QyzT2fgft82DqZ2ae2ku78GXkA1EwCKoTOYojEAILdVVoSWOywiin8C3iOEVJfAqF9qE2t7igpebWaO5XXwirOmThusZxRsvtWZbuP5TaOwt5tTmyOzNAvhXgaR+FQE6ZVKCeZjfpsVfH23qcxetTK0fXRoAazMM+WHhWQ9FQ0AWsYlm8btvkNp3dsYwqUP2VqhwV5sj1LMHRWKrfWOnpn3KsIHk7hmaK1Hu7mIsVaR16z9CQL4qhQfbf31o= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 6:x+HWnbLHvCPw49YiojZagjzFWoENwswcl8mFuJ4m+s8+Mvyma1TCs65K9MGjqz57ZgrNfJAh0ep2n9Klqc5gCht5BKtLbcy/VCDznnScp2DHT0Onu4wEdauaIfWJkIF1xXFe2yke5/I0O6UBs8zoK/n47p0bOWIPTDmvr95VABSI4KLfjiYIusMF83JV9OY7m2+hkENNc9fb9swQK266ERrOgcDd1qKYCvVSnBg0/JkskkBZf9Nrqi/PVjkipoPLgv2aHdkwLKuORMvmIXz4R5lvPKkmCgcEd4ZGJf0hSUbym7zKH5EkTO0pAJqL1+4RiRjdc5y7zgSKpqCq9epwnhpbEvzb2gqUosF031090WBYFD+lpt5x/2rOa+Mxh5xFzvLIdPaGIYz7OznWxNfMnJmCWpgUHF5fKD5vdYQaZ4HgBcdWMm0CaLaqgC9yV0Dlz97tPpk2bXoq+wYv77VyTQ==; 5:ydbb3VyUxQl3cTNH0MS85mzoUk0WhQbGubokqSxiUSe+xkuvwjnsS1by5jUQ7RrwgdSfQprBZS5QPgCQRrOIM19elIAFMVTS91paWtWJtX+sm/AmOvnelTyy9qEya/0JAMcxi0x1uo7z7KdC+a75SvBmsytP+014dz1p1WFfz3A=; 7:TG1rM7+66Yu1Iu5uz12aTdQF3D2H/TWb5qmVTAgEg5ompVJ2xeMG5hlL3FQd8ZnAGDaG8jacre4Pyxqqllf/DkhRT65tvaBxdr+14KanEuR2ZC8y9vHaVFJyXzJvDJS6fd1/zKA7mykEM7B24J+MPP7vI0eBXzrZ5kZJuy4Z8sw4JK0JccDmJ4V806tjPlFlbcmQxkmZonLmwfe3/emZq0l6/7C8/FdJu4wwD5WnfcoOKGg1AoLdhDSnJB3lw6yq SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2018 15:04:24.1679 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bc6368a4-24dd-412f-a93e-08d622f83076 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2031 Subject: [dpdk-dev] [PATCH 2/3] app/testpmd: add commands of modify MAC address 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 to support following actions: - RTE_FLOW_ACTION_TYPE_SET_MAC_SRC - RTE_FLOW_ACTION_TYPE_SET_MAC_DST Signed-off-by: Xiaoyu Min Acked-by: Yongseok Koh --- app/test-pmd/cmdline_flow.c | 50 +++++++++++++++++++++ app/test-pmd/config.c | 4 ++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 8 ++++ 3 files changed, 62 insertions(+) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index fae825462..d06e75799 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -258,6 +258,10 @@ enum index { ACTION_DEC_TTL, ACTION_SET_TTL, ACTION_SET_TTL_TTL, + ACTION_SET_MAC_SRC, + ACTION_SET_MAC_SRC_MAC_SRC, + ACTION_SET_MAC_DST, + ACTION_SET_MAC_DST_MAC_DST, }; /** Maximum size for pattern in struct rte_flow_item_raw. */ @@ -839,6 +843,8 @@ static const enum index next_action[] = { ACTION_SET_TP_DST, ACTION_DEC_TTL, ACTION_SET_TTL, + ACTION_SET_MAC_SRC, + ACTION_SET_MAC_DST, ZERO, }; @@ -947,6 +953,12 @@ static const enum index action_set_ipv4_src[] = { ZERO, }; +static const enum index action_set_mac_src[] = { + ACTION_SET_MAC_SRC_MAC_SRC, + ACTION_NEXT, + ZERO, +}; + static const enum index action_set_ipv4_dst[] = { ACTION_SET_IPV4_DST_IPV4_DST, ACTION_NEXT, @@ -989,6 +1001,12 @@ static const enum index action_jump[] = { ZERO, }; +static const enum index action_set_mac_dst[] = { + ACTION_SET_MAC_DST_MAC_DST, + ACTION_NEXT, + ZERO, +}; + static int parse_init(struct context *, const struct token *, const char *, unsigned int, void *, unsigned int); @@ -2654,6 +2672,38 @@ static const struct token token_list[] = { (struct rte_flow_action_set_ttl, ttl_value)), .call = parse_vc_conf, }, + [ACTION_SET_MAC_SRC] = { + .name = "set_mac_src", + .help = "set source mac address", + .priv = PRIV_ACTION(SET_MAC_SRC, + sizeof(struct rte_flow_action_set_mac)), + .next = NEXT(action_set_mac_src), + .call = parse_vc, + }, + [ACTION_SET_MAC_SRC_MAC_SRC] = { + .name = "mac_addr", + .help = "new source mac address", + .next = NEXT(action_set_mac_src, NEXT_ENTRY(MAC_ADDR)), + .args = ARGS(ARGS_ENTRY_HTON + (struct rte_flow_action_set_mac, mac_addr)), + .call = parse_vc_conf, + }, + [ACTION_SET_MAC_DST] = { + .name = "set_mac_dst", + .help = "set destination mac address", + .priv = PRIV_ACTION(SET_MAC_DST, + sizeof(struct rte_flow_action_set_mac)), + .next = NEXT(action_set_mac_dst), + .call = parse_vc, + }, + [ACTION_SET_MAC_DST_MAC_DST] = { + .name = "mac_addr", + .help = "new destination mac address to set", + .next = NEXT(action_set_mac_dst, NEXT_ENTRY(MAC_ADDR)), + .args = ARGS(ARGS_ENTRY_HTON + (struct rte_flow_action_set_mac, mac_addr)), + .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 d28b6ed14..c2cbf5ce8 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1177,6 +1177,10 @@ static const struct { MK_FLOW_ACTION(DEC_TTL, 0), MK_FLOW_ACTION(SET_TTL, sizeof(struct rte_flow_action_set_ttl)), + MK_FLOW_ACTION(SET_MAC_SRC, + sizeof(struct rte_flow_action_set_mac)), + MK_FLOW_ACTION(SET_MAC_DST, + sizeof(struct rte_flow_action_set_mac)), }; /** 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 db68c4346..0a8cc73a3 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -3726,6 +3726,14 @@ This section lists supported actions and their attributes, if any. - ``set_ttl``: Set TTL value with specificed value - ``ttl_value {unsigned}``: The new TTL value to be set +- ``set_mac_src``: set source MAC address + + - ``mac_addr {MAC-48}``: new source MAC address + +- ``set_mac_dst``: set destination MAC address + + - ``mac_addr {MAC-48}``: new destination MAC address + Destroying flow rules ~~~~~~~~~~~~~~~~~~~~~ From patchwork Tue Sep 25 15:03:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaoyu Min X-Patchwork-Id: 45332 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 B5D321B430; Tue, 25 Sep 2018 17:04:36 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40089.outbound.protection.outlook.com [40.107.4.89]) by dpdk.org (Postfix) with ESMTP id C86BB1B426 for ; Tue, 25 Sep 2018 17:04:32 +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=v0MfuqAI22RCVjRArsrvM/YierWTW4vboLfPBMHs/ng=; b=h7z3kQUhw1BSEMBa8yeECymXY8xAq9n56JY8OX6696bETTfNvX+oibhsD16qVPomcy15uUns1oqiLqXnHINVsK3oUX9DF3F4f+vZXcvSMprU9yHtgRmjIYhwBleIJ0osQ9bHIZTp1Zx5ZLc4ryWUKQGqTSIrYo10gVN51tdHFQE= 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 VI1PR0501MB2031.eurprd05.prod.outlook.com (2603:10a6:800:36::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1164.20; Tue, 25 Sep 2018 15:04:28 +0000 From: Xiaoyu Min To: ferruh.yigit@intel.com, Shahaf Shuler , Yongseok Koh Cc: dev@dpdk.org Date: Tue, 25 Sep 2018 23:03:40 +0800 Message-Id: <20180925150340.25378-4-jackmin@mellanox.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180925150340.25378-1-jackmin@mellanox.com> References: <20180925150340.25378-1-jackmin@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [118.201.220.138] X-ClientProxiedBy: HK2PR04CA0053.apcprd04.prod.outlook.com (2603:1096:202:14::21) To VI1PR0501MB2031.eurprd05.prod.outlook.com (2603:10a6:800:36::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9c8ca4f4-4ab5-4193-633c-08d622f8324e 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:VI1PR0501MB2031; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 3:kXqkmfFD0aFqEkptCNIJ9lT6D2+WiBlE+wfRlfHWBPlaGkFbbjg4ZIlmVSvQdWXRpf7jcXnO2hcAo5O9z5YmA5kFzlC6jshKyFmDQOAFIKglf77XHw9hoFd+eXoPIwWSmYk09FE81x+5Hvi9naK49atLMXa7he2a/iWnOoOsX1gqHARfvdRnn0nY7DG1HQ4mg+rt6WOPjPZAMUS9O9uQ/R6jsB9V0BVDGhysSI9XoVG0VkqPhqIllchdv1viUlq4; 25:RPFOZ17tVLku6WOentGTGfmSc0mS9BBcrXL2Y4THOmflv0dxJlvoxxwVUMqhTkZftIH77qIH0IfPRekK3jscoQUpSktG4MKbp273a3zZcROwwPCXvkcdvGDgCFHddcSeQ/2MEK0t40sncLbZGwrI6r0rERFPR088IZPc5j5iq45A+ThJBhwONMPp38Owhxf1c6yd9EcB3ZBl1beGrT0mYLGDVOJK9+eqW1WjFRlB21DXuAIHOR+FsscapjSl1d8x4zDn4zBiK1ilw+l1T7SH/FqvpjA8JFa34c5QvXTkoj6Txj9KSe/qFaLIYw+yFn1RbTyY5L2wYPY7Q0/ryD7ejw==; 31:j2ZzYzPabjyoN5anNATzbC25BuzotZLP76ab8IdWihdd/xiPPXrePovDlilNP3Q+xDAsABQ/uVYstIaGkFy4FI5F9IQ47bawmSK0jR/6tFszgU/UD0u9y3zJq1PcIx9kgESqfowet1cvx5ilDcroRxI9MDT+xSOvPTp8GE8XlEnCMMccUmL386w/ceXz01ggDSL+5Dbn+D168Vg8z0AgxzrpgErVJ/aXZH9gdmLOF0c= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2031: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 20:RhPFeLE4cURI5GKiVERJwcizCdG8uNPy8jqw4Ye/4QE5+DggiCHqR7Zqywmn33OtYLnZD51fUGzhaEiuDvBcx+T0ew2XAztf0PiobY+OFaZxDDCjkL6lmTBmoNcTBuVMS2ON9UKOixvJWKzYI27cN5JWywVJfS8nuVhzs0nf1Nq6ok2CJRDMNtN6QLlCVYNpoHnZSf4veSp2mWQ21Na1FoFPRb7RGPKE+lKED/UA+Sn4+dEhXf8XN0JWcNBmOZohpWjLXDC/sFGeKfqt6Gwday++o2X43xyPP9RbvzVvEefSpK7TsMfzokUpGXTdN1ife2TvDpxf/MAvdl+m3Lz9gnr0odQDY65H5Xrx6L5oem9+UPVI606nT62xzhLCstj1x6b05J0nCMu8xs0jEOQNyFji3hyWMhx4auoqJu3NlDe46u0jENnB6v33b0QxosPEeORQXPbLYmm46V69gwP3YIf2OK88n4U04iEcMQCrEZCXxVBXC9wcdxqcMKyQhJHY; 4:Exr45TZ43ZO38d1RucyY2BUIHUZsWQnuI7SwpANWzX4DO/euzm8fVGHMGkVakwmxSbTOdiy/CRrYh7jKC7C4wVluoOF5IawEZgWJ4e/Nv9MWzdPoAVO/IeJ9wBzBRyZKpHZ7kWUvtaGCRIutT5eF7+Zr+suj3mtksK6nJznv3udyuMU24fOvvfsLgCoIzdVEc+SXFNr4wPWuK52vNrTgem1gelDCR8c24JR20NMiGCt36haJgtajXNnmdfFg/ciapH2/CiU/KgiTc1WcClHF1Q== 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)(10201501046)(93006095)(93001095)(3231355)(944501410)(52105095)(3002001)(6055026)(149066)(150027)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123558120)(201708071742011)(7699051); SRVR:VI1PR0501MB2031; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2031; X-Forefront-PRVS: 08062C429B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(136003)(366004)(346002)(376002)(39860400002)(199004)(189003)(26005)(956004)(6506007)(106356001)(105586002)(386003)(446003)(11346002)(486006)(2616005)(186003)(16526019)(476003)(6666003)(6486002)(305945005)(478600001)(34290500001)(8676002)(7736002)(2906002)(81166006)(97736004)(81156014)(5660300001)(6512007)(6116002)(3846002)(6636002)(1076002)(53936002)(16586007)(4326008)(25786009)(110136005)(48376002)(51416003)(76176011)(52116002)(68736007)(50466002)(36756003)(50226002)(14444005)(316002)(575784001)(66066001)(47776003)(86362001)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2031; 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; VI1PR0501MB2031; 23:M8rvPtUdKG4NBBh2gTyUydlkwtJvTSyUz+yvt/x?= opzc/vYOlOZivO/BuManwBtiOaamBr0+u9UhxinbyCLtNoUVdnnpB1gD5D6zo8CDz69nZRdTQaPO2y5zUA86PRYjb/iUjDTrDBlVTPZmx3jgdBnMel+qeJpnsfIr0myNEZ9uUqiyUkrqbjB8+v/TpYhb1/XZX1pARACZ8qVSdWuGNX+5Aj8TfpeUkx9CDK43hp9YzdNVhnr1Wygwz38crQeMme8k0RbD7o4B3xhbgk9HQapPZYvAJWzohI5gCtmVcRk0WN+K4L3a4GHnaKYClZvuUzNrxtKKXOdZMA/neKNOdkW+l80BY8lp/BqJqg/8ZzHW3ClU+Zic7fxk4qvEQNR6J/tWH1v9qL/taYsWHQGq2UM5Agz9ksOWkw0W2/07iPfKektILOuSTfljmtlByrwTxDTUHcQi+PYmfulrsX8dgHey4R34lqSa0MGetMuvUfgFi1OeAwKwUhM93efMgooVWBQbYForGREK1rBnbo5WXiy4Y/b9UWWDVclvzpxoD7lGj7v9bW8D5ai0D623BJZ6Dt7eFuGUhXsZ3m/1+KH2mdfC3tjiKEWVv26sUDBX/n3MqAWolxALfjYpkK7dUW2xhsUxE/p87QzmASuY8gFid6PDGcspcFEOZJVdyoNV0XUr8qdv9xx/NWik/a7YyvjoF4Y+6xlJt7WaYoYNy1kWmZhFzJhewwMFEBlQLN4/ah/4h8zudtyEr+2nWcKuLFY6xjWn2u1UgX+OFlIdBA1EtS0vCLjtR+LCyC11Z/KyyscFHPORY5NctOsPh62jInZBvJBoJjYFHR9UCfeGoo18dNq8NtpqcjnKSeX9X/dXomX7FylPQ7YxgKEX/+Cne+9WPj5U0V9v4Ae6uF9FmDKEMM/5TgVCLlsQ62B+d0Rud9vUm5n3eI1bO/OuCsm4nN2UAAVgd0VvIXwlfUjqVv4/6J3mAsVqeSgrJE4k3S/dpsLLOl2SxqYpRkZycgiIgT2/LHO8CZkkWazwj3DmDNwyTrvkZMdz8+ZiTVQLeTJBaPlkNwpjlYL00crufr58LP4QwTNr3Z/2WGqeiP8n6PhzEB6ip/fJz4/VTU5JT96VaMO3/GBNnvEODMvSYy5AzGVU/qyphGWYaf9wOaJ10TtafkxDmZ5bsd38yO3gAXL+oh7P3zQacJFPFZUnkBOPMp0cRDaVKI5ibCceW3n5lx5OZs2SBeFhpg/jINaTVBU+PSAkso5oWPFgGeKwAUkdcN05O X-Microsoft-Antispam-Message-Info: IK0SGPGYhfGHdysr4ajWnYE0HkcmMsRTMaAUUiyHuy/dNswDs4+UPRE/CR2sGWej8GWMg30aGH29/qIc7zDH6X0Rb+CQYrGzYxJCalc82Fp/v5ngQuzxE5vFDRJpNPEh+WOWmQnRaxZtssEpNWbLdOJM8nK1KQqXqaG5C5yx+Y5X7sNMD8KERqZJSn9Mp+kJPJIZq9s/e0tgtz868xuN6Y+ZDN/Na2ApapB8rFyb3/HH0iKvPdAH9+xeWKf6zP9ZlI1duVCwH6KFXGl9+XURqrwB+LhCtNSbnUTPpXeJ1DMQ7QF4Kf7zIlPLb13asTFmX83btDyNS4HArBkf5uBjNxhixB1tCYDWB5DOBpB7M2Q= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2031; 6:5cKNHPgj7gK2iFB3FTOvjfrBe5Ttx6v+y/OMjOCTHUwBUNU9Fc/Q+MLL6C0yj2DicGDu31AZsMt0T8hdqyB0+Tl0PqnewxcXgexwjYUB8yOsIf3Tx8dQnfTHr+fe8OkXioNaq1ht7v8OS93BxMehFn31DoGPoaL6sGWSmN/Km7hz+zuHzfBMFLbvq17YZKKNxR/ccNIrBAuZlwwp+p2HmNyeJNF42PkAMmi5v2fQE7qJT1L90SsM4IJpEt0AzSp/cKT7Eswy+CxjohXN6QSPgqObAqXQ/uyP71rXrLWRnZkJR9TIjdZY+kIv2CzMX1kS84Qew5+KKO84DFdsMwLoyJeFGrf7hvNzUNHYn4dc6I3j9x5rxYvz2pDEwRL+ojN7aAJwwvMhkncZ8MMPoRpO8jDmFNU6ztf0rs5sdWo8VOx61CAVnh8aVzZj3Oe2hpqJcBYKaI4xcHBt7Lb8xkNBDw==; 5:c/ccgclj8Vu4Pk2eVtyfve1xDnjngKTFl/kNZ2BWTr7oU8TgCiGHhm8TFH3zncyCK0yZOnhAcJ8POxKTf4nR2VDVRWq+Pvz4FPGEi4cWW4cvxhGlPb53HXc2XqXf0L4IiSaxCUdcrasxSSb+F5Ij0yV5mHOtqrWGhIG+VCt45Ak=; 7:jO/kOhMFpvDRzTtVseY10fnXE63h0AMWIgvXBnpVhUcsHpH8c2DLK6kuEbtCK6m4QA/ckbApTbw27VVeEK7cHM9P0BARnSPKvzyBYcGAQWbMh5tIJpVE8Mt3+Zl6LpA1Hxdrk7+EG0/ZOPwWtrJv2UrQ+bS0MPkI+k5M/A6hGt2aGFZm428wELSlNOViWyV0/xePqg4Otjsz/FYQbZQkWOpLbKs1b7rQwz5BjS1eAaYVG1JkXLPpTMLE2bu0HeSZ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Sep 2018 15:04:28.7646 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9c8ca4f4-4ab5-4193-633c-08d622f8324e X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2031 Subject: [dpdk-dev] [PATCH 3/3] net/mlx5: eswitch-modify MAC address 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 MAC address actions to E-Switch via TC-Flower driver - RTE_FLOW_ACTION_TYPE_SET_MAC_SRC - RTE_FLOW_ACTION_TYPE_SET_MAC_DST The corresponding rte_flow_item_eth must be present in rte_flow pattern Only support modify outer layer MAC address Signed-off-by: Xiaoyu Min --- drivers/net/mlx5/mlx5_flow.h | 2 ++ drivers/net/mlx5/mlx5_flow_tcf.c | 62 +++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index 5237e31dd..76c4e8398 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -95,6 +95,8 @@ #define MLX5_ACTION_SET_TP_DST (1u << 16) #define MLX5_ACTION_SET_TTL (1u << 17) #define MLX5_ACTION_DEC_TTL (1u << 18) +#define MLX5_ACTION_SET_MAC_SRC (1u << 19) +#define MLX5_ACTION_SET_MAC_DST (1u << 20) /* 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 af88c4a0d..cb60c3e05 100644 --- a/drivers/net/mlx5/mlx5_flow_tcf.c +++ b/drivers/net/mlx5/mlx5_flow_tcf.c @@ -303,7 +303,9 @@ struct flow_tcf_ptoi { (act) == RTE_FLOW_ACTION_TYPE_SET_TP_SRC || \ (act) == RTE_FLOW_ACTION_TYPE_SET_TP_DST || \ (act) == RTE_FLOW_ACTION_TYPE_SET_TTL || \ - (act) == RTE_FLOW_ACTION_TYPE_DEC_TTL) ? \ + (act) == RTE_FLOW_ACTION_TYPE_DEC_TTL || \ + (act) == RTE_FLOW_ACTION_TYPE_SET_MAC_SRC || \ + (act) == RTE_FLOW_ACTION_TYPE_SET_MAC_DST) ? \ 1 : 0; }) #define MAX_PEDIT_KEYS (128) #define SZ_PEDIT_KEY_VAL (4) @@ -327,6 +329,33 @@ flow_tcf_calc_pedit_keys(const uint64_t size) return keys; } +static void +flow_tcf_pedit_key_set_mac(const struct rte_flow_action *actions, + struct pedit_parser *p_parser) +{ + int idx = p_parser->sel.nkeys; + uint32_t off = + actions->type == RTE_FLOW_ACTION_TYPE_SET_MAC_SRC ? 6 : 0; + const struct rte_flow_action_set_mac *conf = + (const struct rte_flow_action_set_mac *)actions->conf; + + p_parser->keys[idx].off = off; + p_parser->keys[idx].mask = ~UINT32_MAX; + p_parser->keys_ex[idx].htype = TCA_PEDIT_KEY_EX_HDR_TYPE_ETH; + p_parser->keys_ex[idx].cmd = TCA_PEDIT_KEY_EX_CMD_SET; + memcpy(&p_parser->keys[idx].val, + conf->mac_addr, SZ_PEDIT_KEY_VAL); + idx++; + p_parser->keys[idx].off = off + SZ_PEDIT_KEY_VAL; + p_parser->keys[idx].mask = 0xFFFF0000; + p_parser->keys_ex[idx].htype = TCA_PEDIT_KEY_EX_HDR_TYPE_ETH; + p_parser->keys_ex[idx].cmd = TCA_PEDIT_KEY_EX_CMD_SET; + memcpy(&p_parser->keys[idx].val, + conf->mac_addr + SZ_PEDIT_KEY_VAL, + ETHER_ADDR_LEN - SZ_PEDIT_KEY_VAL); + p_parser->sel.nkeys = (++idx); +} + static void flow_tcf_pedit_key_set_dec_ttl(const struct rte_flow_action *actions, struct pedit_parser *p_parser, @@ -447,6 +476,10 @@ flow_tcf_create_pedit_mnl_msg(struct nlmsghdr *nl, flow_tcf_pedit_key_set_dec_ttl(*actions, &p_parser, item_flags); break; + case RTE_FLOW_ACTION_TYPE_SET_MAC_SRC: + case RTE_FLOW_ACTION_TYPE_SET_MAC_DST: + flow_tcf_pedit_key_set_mac(*actions, &p_parser); + break; default: goto pedit_mnl_msg_done; } @@ -535,6 +568,14 @@ flow_tcf_get_pedit_actions_size(const struct rte_flow_action **actions, keys += flow_tcf_calc_pedit_keys(TTL_LEN); flags |= MLX5_ACTION_DEC_TTL; break; + case RTE_FLOW_ACTION_TYPE_SET_MAC_SRC: + keys += flow_tcf_calc_pedit_keys(ETHER_ADDR_LEN); + flags |= MLX5_ACTION_SET_MAC_SRC; + break; + case RTE_FLOW_ACTION_TYPE_SET_MAC_DST: + keys += flow_tcf_calc_pedit_keys(ETHER_ADDR_LEN); + flags |= MLX5_ACTION_SET_MAC_DST; + break; default: goto get_pedit_action_size_done; } @@ -1041,6 +1082,12 @@ flow_tcf_validate(struct rte_eth_dev *dev, case RTE_FLOW_ACTION_TYPE_DEC_TTL: action_flags |= MLX5_ACTION_DEC_TTL; break; + case RTE_FLOW_ACTION_TYPE_SET_MAC_SRC: + action_flags |= MLX5_ACTION_SET_MAC_SRC; + break; + case RTE_FLOW_ACTION_TYPE_SET_MAC_DST: + action_flags |= MLX5_ACTION_SET_MAC_DST; + break; default: return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, @@ -1093,6 +1140,15 @@ flow_tcf_validate(struct rte_eth_dev *dev, actions, "no IP found in pattern"); } + if (action_flags & + (MLX5_ACTION_SET_MAC_SRC | MLX5_ACTION_SET_MAC_DST)) { + if (!(item_flags & MLX5_FLOW_LAYER_OUTER_L2)) + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ACTION, + actions, + "no ethernet found in" + " pattern"); + } return 0; } @@ -1244,6 +1300,8 @@ flow_tcf_get_actions_and_size(const struct rte_flow_action actions[], case RTE_FLOW_ACTION_TYPE_SET_TP_DST: case RTE_FLOW_ACTION_TYPE_SET_TTL: case RTE_FLOW_ACTION_TYPE_DEC_TTL: + case RTE_FLOW_ACTION_TYPE_SET_MAC_SRC: + case RTE_FLOW_ACTION_TYPE_SET_MAC_DST: size += flow_tcf_get_pedit_actions_size(&actions, &flags); break; @@ -1788,6 +1846,8 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, case RTE_FLOW_ACTION_TYPE_SET_TP_DST: case RTE_FLOW_ACTION_TYPE_SET_TTL: case RTE_FLOW_ACTION_TYPE_DEC_TTL: + case RTE_FLOW_ACTION_TYPE_SET_MAC_SRC: + case RTE_FLOW_ACTION_TYPE_SET_MAC_DST: na_act_index = mnl_attr_nest_start(nlh, na_act_index_cur++); flow_tcf_create_pedit_mnl_msg(nlh,