From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40083.outbound.protection.outlook.com [40.107.4.83]) by dpdk.org (Postfix) with ESMTP id 99D184C8C for ; Wed, 22 Aug 2018 17:55: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=j2S+TT/oNU6Mv3We5JsOsIgNPHcnZl8UxrEzfHMIouQ=; b=vZVGBg1wceqyjgtTryfypL16gGNiPYnnyMJDwgAGjZnLtKfVBc2hD2CCj1l5s3ui6NfORvc7LE3u9eRpqQoTZ1zeUvA1B2TImPDXu/pngur/qWuAXskfG1qZRV0rNGKRim3MWQZ+NIKggu7Hjjnn/GKBl2bG4C91t55tU7cbUiQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=motih@mellanox.com; Received: from localhost.localdomain (37.142.13.130) by AM6PR05MB4440.eurprd05.prod.outlook.com (2603:10a6:209:43::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1059.24; Wed, 22 Aug 2018 15:55:23 +0000 From: Moti Haimovsky To: shahafs@mellanox.com Cc: dev@dpdk.org, Moti Haimovsky Date: Wed, 22 Aug 2018 18:55:07 +0300 Message-Id: <1534953307-8683-1-git-send-email-motih@mellanox.com> X-Mailer: git-send-email 1.7.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: VI1PR04CA0095.eurprd04.prod.outlook.com (2603:10a6:803:64::30) To AM6PR05MB4440.eurprd05.prod.outlook.com (2603:10a6:209:43::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5750f08f-0d54-4b2e-e0ea-08d60847ac01 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4440; X-Microsoft-Exchange-Diagnostics: 1; AM6PR05MB4440; 3:PMnU8i17OkL8ApZ7hmXWigSO7lgV7K88ninU/vUCynKPTr7FcT/8bW0xh1pXLLgNcXiuivC+H3xZQKwo5K7j1TtYFzyQWXmkuEMe91sDZN9sbTJltHKNsx2Bl2vXIoT3rxAuIhsvxXDsk1uV7CqK1FXppvw9wdD8SpFAUPVbKQ9T2/fpG+OF2dSvUmiCy2HrewKF6h6pezwIZeRAFMs8bjicm3ZOTmPUUAW4mZatGOW2QZuTeJLJyLOLRlYnSSTm; 25:g6XQpWNhpWvG6igwJTAnQucI/hCwwV+k8RKi4qZw30Gs1OJ2nD+1Tdp8CU09bzGB5SqwUN5tslIikkpzzsL0r2PWah9HdVbsEKjzOMSi5xngiQ0kXV8dETNrIo9O4GgHgUg4Ln5DSVE+BB0D1Zvz3OxeDHgAg6bHm0H6I5KIDCDezOy73pLAYVUh/6+Qzmy2dGsZXFjweAou4rHDTpKwGpAT700BEq3FyEO1kIgUoOOa8gdT9W+6p6/gQsvne9+RLUf/OkLImkJ6+pQDi4vMZFlQ+fmbql1Nrt2E+tAewfL3XuhpB5SKM50XcevqmHRdfsOqzAbuaTPCKzwyLdR1tQ==; 31:yw88LbXkaUDT5/DxFpNKWnhw1A8mK9rD6CNo9XVAEnAbvHlNoiHASQCK1RnmaZXGLMzISLMQvQ5RdEYaUUk2ulo2Jfoe/p8wMuvQFc+z2msTaeLOMR7ioSaU0vo5Hivcbr2eUPk1vDylOARKbg+svA6NMS67IeIK33x18W81HoxyNrCc6AYa9iojHMEC9GF1RY7eQM02mccrCk/JXA/LWTZiBf35bPl3/91o1rhz2FU= X-MS-TrafficTypeDiagnostic: AM6PR05MB4440: X-Microsoft-Exchange-Diagnostics: 1; AM6PR05MB4440; 20:rcDLRCDNNN5XChjzpNVrI0tX+LxxD8cT1Ir9MwD+krbsJj3pmOpZNZMHzTdSfu8C4GuF2EyXa+XS0Ove4e+CM0YKigTW4k00KUZpb2TXHOaBV9SF1ut3Mayl4lJde3MqdlZhVv7gOEwz/9qS1n8tX8GLLHHcK8KUbkOI2pmwAOhgkVhbdcfTNy4msM5oTkIeelKqgldCBu7YaHrUSaV0CLuEheXheyXlbWU/3j3pTH6mb+YqeDKJ0rvVcr0EHCX07MldNY7Le4rg+78ldYhk3IDUMPDf6VARzNJSg/zoE59G71BBY2TItPpy4ySc2408dLVEou+Utv2GkBTroQNShddKuHwPhEqOwtc/eukHI/YFyI7uIVAdNK6eF5HvoICI1C0sODcOTYCEO1bMGPIkGOafBieeEGF95RVE7+hJKuNZvElmxiSBKviDX1ErosB/NEqwSJm3MilKvWOWOawUqNGzMOaMFBgJQ+XGpC30+/aM6/wWupY1D9oQaw9x+Uqn; 4:JzJI9fF0itARwPPUaCBZ1dGcbI84gQ6UVWR/S0+tfGET4gwzw5KqZMn4negntj1qHzVsoHR5D4K/SmWAmc+yKfphwpDc9zJQp0sWE2ht5PzJa+6wZrhek0e+AgkBIOLiMXBfFmv8L/SiIucWN6VagL3lnDIfwMAiYtRbZ/nrwPsByhlGPc5/hoBScu0RgfbB+aciwHhli2etDLBKSbCSg78Ho49Z6dtI9o5j8L9sOPOIvbD+8zUb5kFn1XuCsQiaBHlmGkCpNhb4enSwgXcDSw== 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)(823301075)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699016); SRVR:AM6PR05MB4440; BCL:0; PCL:0; RULEID:; SRVR:AM6PR05MB4440; X-Forefront-PRVS: 0772E5DAD5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(47776003)(386003)(305945005)(7736002)(3846002)(105586002)(53936002)(6486002)(37006003)(2906002)(66066001)(316002)(48376002)(25786009)(16586007)(6512007)(6116002)(34206002)(50466002)(5660300001)(81156014)(6666003)(2361001)(6636002)(107886003)(478600001)(8936002)(36756003)(81166006)(8676002)(14444005)(476003)(2616005)(97736004)(956004)(2351001)(16526019)(486006)(52116002)(50226002)(86362001)(4326008)(68736007)(26005)(51416003)(106356001)(6506007); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4440; H:localhost.localdomain; 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-Exchange-Diagnostics: =?us-ascii?Q?1; AM6PR05MB4440; 23:CtvbZKdWj070yr8p/TohHlEuXCU5lXxnReYl4aGOF?= =?us-ascii?Q?fzrBRAX/0G1j26X+EQUxlD64Ev3WJYC97OPPQbl78knVLoxP3WNUc/PcX8kc?= =?us-ascii?Q?JD8gKojd3Bib70yICtCxGSq0IYAjNolhyQbe1IbDZUF5Z+OqceNc5UvSa661?= =?us-ascii?Q?LJJQ8RRgd8zfK+yFXCmHfKFHyaG/stItG/06R8mVhfGkWD3yqocJj8x8PCK5?= =?us-ascii?Q?dus7LtUeY2fZn6xh63QzuUPRWez/KlpkTu7BzGRN8cQTz7BRyy9muw2YDlod?= =?us-ascii?Q?BCkxxydk7mlF1BWgXXcSRzuVAsBOnCfEq/zn4exUyeBRvLBANP90k419fpao?= =?us-ascii?Q?WtrSMvr5ZrM9yzKXR00xBe9kR37tUg3a7ej4Bu7QfTYaevebkgPyjXlijGyg?= =?us-ascii?Q?VI528O9Az8Ow0vDhjpFhbwrPLky+OB3KGdsxz4sFQldil35bC0ql9Mf0LdpZ?= =?us-ascii?Q?QLx79UkyQ/5FicF2XItaY4uQyDRgZYFlqqstTq1yilSBDjrwWoT+2kxSqN8f?= =?us-ascii?Q?LmNS3DKgN7Zr+POoNqKsj02I1LvdNmX9+kuwENTvqHaDzwsJHh/+WkLSbR3G?= =?us-ascii?Q?/nRj/J3tzEmdIufbC1LCtRvcNSimHUbzdc3T4/bQk4PtYjHmwCPxHD+DwWOa?= =?us-ascii?Q?mKKIhrwDf1Iy8SMQ65XkM5IrQmiRrvQ9x8stfeoQKQl2c9LeS1f6cNOnyh8A?= =?us-ascii?Q?6X2rhMylBbc20BjUjr4b9HzO7g1pk0cXSrmvThno1ok2wcbZz5Oeo2JgIGr4?= =?us-ascii?Q?akOhNTFP69a+CckLyW+zaZcnlUo5Gx4MWwKQkg+giG0m2McuTgciV49RwZiC?= =?us-ascii?Q?HeeaUOAkj1/ohlm9Oa7ul3lk3ocrSfc55uxzXrKmFxOPe1JXngB6/940iptW?= =?us-ascii?Q?iNpLeHW2YccDc4pjB8bs/LNXQ6F7B3BoarS2vBbetLo0goX95AX87KDKV4e0?= =?us-ascii?Q?fkvJ4zRBZzkT1faBgxhCJz/OHZ/Sgb3HJRdld+77XRmD4XbE3Q4dLFzAXtYI?= =?us-ascii?Q?Pi2xsFPh8Cf7YcHkSqJkCYVDwHI3dZukL9F98KbyySRS43fYxglkDJtA73YB?= =?us-ascii?Q?cBBSz+g4vR84gYveCB9GtV94Uss/004oCsBaRitxjtxZHbpUIZbykQIBO8Qc?= =?us-ascii?Q?5A6HjaUgpy61LJ8KpGSTlygqB1mFkN9+ksYPrDfBuKTrXRpG+3Qi+jmFAw/U?= =?us-ascii?Q?EDFeVm3JiEVjWcagYVjZCdmCjbhRS30Pa6ELSM5/a1f2VZ2PGzWE6By1A=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Antispam-Message-Info: CFANgOE9wYdQqgsjkH9b2+U4mf40m5zQFkoPwVE2GatOjOGodWVm+h618bvDgtO1cUOHpmSBBlSts7j4VoTprg5qfEpWsdmbl0DuPZkYIOD+vwzJulWVYgWjhYN4/p1RZaC8xirdSTui/hmxqCPhUufvD95PMmU2Dg8fLZX88dZfSKPV9FmyvRn4GS/ZtLIUifIog/Vv8Z7HRbqvan3QqMw+azoXD5CAUZEnZBUdvw3P/ir4g4q1KLkFlnyriDLuYNQgSSkjUanZW/V02fXbND4OOmFX6D7SrJNGuAF6WWTZdqf1bw2XbN+EZpxVZxpmq56LZT/Z06zLbFvw7Jf6OOnjaHENHvreYKRI2rbJtKA= X-Microsoft-Exchange-Diagnostics: 1; AM6PR05MB4440; 6:d68axiQ+6Gkz6M+8CCTx6gSkyV8mH8f4V/mnlNs/saZA+VH4mREyixp5dyOfqu3RVeJ0wkP6nBnIZHv6oR8NrNlz+sY7E6JRIO3EkcIN+7VgaDjE7CNoNDvp8/HgylCp4+/EHkdnnnnmrt4KMj1OUZvOyIfAwexherCR8wU6UcmR7hfb6aBOz4+Nq5X4U91jESnbVsREpSEP69df7v82YFT3dDHQVMBTdq2Oix3EZJR6UPY5q3lF5BLYr5HYLDONlUQkwK1fQ6KP4zdYyHlpjfcHnYE8SRRc85XAiChF94rHuIka8U5wKoxfR5SpbEzMGbQUZFnFpBL82TZAu4+y17lKMxaH57rt9fNJOb4EWtvN8QxYUFqG/4ptukjO9e64kxcx8zQP+0I2B5Nmrym/2KF1akjp8DGOG/Zc7t2+L+psl/XgoQdfHhE/ijAPZrPipiZvtUjraQixHjI3PGq3RA==; 5:XNX7UYnbcG1aWRYlGFPhIU5nP52mu3gjTtmrkddlZfkzzfqOE1LKmXCP7stLXFmcHr1bHiYodKZD2MpxX7uP7BS44GVpfbm9wFcqllyUFrHidg2I3rYeIh4qCKyNlwiSy8drbekkzorxBThw/bYM8naX0ohBM4fbOxi/TMkf/og=; 7:DCqi8mMPZguyk4s2iNUi1A2ohwu7iq3B5p0NHiWoU+nFRe70izp074SoUQ3qYz0X1z/2PoP4mk/LziHluiERPOab4OYnRLNX/DOCH6hxv4ceevsb6Gf8ans8v8CsGRSoyXZJU06wjxBfMGU+SxxHWHdXIxlh1PlI8Qjb1F0hAW/sIIINtptrQ3RdsFHbtj/Vssx5LMYqetzlqP8WvHO1hLgYhEmSBYgGcsYNC98uQKVDv8BtZrttaFkF6kApXlIg SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2018 15:55:23.4103 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5750f08f-0d54-4b2e-e0ea-08d60847ac01 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4440 Subject: [dpdk-dev] [RFC] net/mlx5: support e-switch TCP-flags flow filter 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: , X-List-Received-Date: Wed, 22 Aug 2018 15:55:25 -0000 Today, it is possible to offload an interface flow rules to the hardware using DPDK flow commands. With mlx5 it is also possible to offload a limited set of flow rules to the mlxsw (or e-switch) using the same DPDK flow commands. A 'transfer' attribute was added to the flow rule creation command in order to distinguish between configuring port flows and E-switch flows. The commands destined for the switch are transposed to TC flower rules and are send, as Netlink messages, to the mlx5 driver, or more precisely to the netdev which represent the mlxsw port. The limited set of e-switch flow rules also supports filtering according to the values found in the TCP flags. but the mlx5 PMD does not implement this filter. The purpose of this RFC is to propose an enhancement to the e-switch flow filtering rules to also include filtering according to the TCP flags. Below is the propose enhancement. NOTE: This code is supposed to be applied on top of the flow steering rework not committed yet and therefore may be subject to changes. Signed-off-by: Moti Haimovsky --- drivers/net/mlx5/Makefile | 10 ++++++++++ drivers/net/mlx5/mlx5_nl_flow.c | 20 +++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile index 2e70dec..02139ce 100644 --- a/drivers/net/mlx5/Makefile +++ b/drivers/net/mlx5/Makefile @@ -335,6 +335,16 @@ mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh enum TCA_FLOWER_KEY_VLAN_ETH_TYPE \ $(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@' \ + HAVE_TCA_FLOWER_KEY_TCP_FLAGS \ + linux/pkt_cls.h \ + enum TCA_FLOWER_KEY_TCP_FLAGS \ + $(AUTOCONF_OUTPUT) + $Q sh -- '$<' '$@' \ + HAVE_TCA_FLOWER_KEY_TCP_FLAGS_MASK \ + linux/pkt_cls.h \ + enum TCA_FLOWER_KEY_TCP_FLAGS_MASK \ + $(AUTOCONF_OUTPUT) + $Q sh -- '$<' '$@' \ HAVE_TC_ACT_VLAN \ linux/tc_act/tc_vlan.h \ enum TCA_VLAN_PUSH_VLAN_PRIORITY \ diff --git a/drivers/net/mlx5/mlx5_nl_flow.c b/drivers/net/mlx5/mlx5_nl_flow.c index beb03c9..af66ae1 100644 --- a/drivers/net/mlx5/mlx5_nl_flow.c +++ b/drivers/net/mlx5/mlx5_nl_flow.c @@ -146,6 +146,12 @@ struct tc_vlan { #ifndef HAVE_TCA_FLOWER_KEY_VLAN_ETH_TYPE #define TCA_FLOWER_KEY_VLAN_ETH_TYPE 25 #endif +#ifndef TCA_FLOWER_KEY_TCP_FLAGS +#define TCA_FLOWER_KEY_TCP_FLAGS 71 +#endif +#ifndef TCA_FLOWER_KEY_TCP_FLAGS_MASK +#define TCA_FLOWER_KEY_TCP_FLAGS_MASK 72 +#endif /** Parser state definitions for mlx5_nl_flow_trans[]. */ enum mlx5_nl_flow_trans { @@ -258,6 +264,7 @@ enum mlx5_nl_flow_trans { .tcp.hdr = { .src_port = RTE_BE16(0xffff), .dst_port = RTE_BE16(0xffff), + .tcp_flags = 0xff, }, .udp.hdr = { .src_port = RTE_BE16(0xffff), @@ -812,7 +819,18 @@ enum mlx5_nl_flow_trans { spec.tcp->hdr.dst_port) || !mnl_attr_put_u16_check(buf, size, TCA_FLOWER_KEY_TCP_DST_MASK, - mask.tcp->hdr.dst_port)))) + mask.tcp->hdr.dst_port))) || + (mask.tcp->hdr.tcp_flags && + (!mnl_attr_put_u16_check + (buf, size, + TCA_FLOWER_KEY_TCP_FLAGS, + rte_cpu_to_be_16 + (spec.tcp->hdr.tcp_flags)) || + !mnl_attr_put_u16_check + (buf, size, + TCA_FLOWER_KEY_TCP_FLAGS_MASK, + rte_cpu_to_be_16 + (mask.tcp->hdr.tcp_flags))))) goto error_nobufs; ++item; break; -- 1.8.3.1