From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 90531A052B; Tue, 28 Jul 2020 11:14:19 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D21961BFF4; Tue, 28 Jul 2020 11:14:18 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2081.outbound.protection.outlook.com [40.107.22.81]) by dpdk.org (Postfix) with ESMTP id 531EB10A3; Tue, 28 Jul 2020 11:14:17 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UBH+1IcAh0qicElzBVse1P+7Mp8pSYC4UXoRqRv0us1aeRvWD97yWP0F6g2hKEqoz2A7EH1zYwneGT+w0xCVMSfvTsnHep5N28id2v7DkRF0NtTEjPJ2LJJPS/FX343uO/KXaMxzWBqfaRpNxf4kdnz7vDvRUbnvodE8IhkIz8C95shmBgRY9IAUdXi6rv/VgzQET7GzdOlftafrV65TLf6watk9J2v6JDP8MbEmcf0UPKL//o0bOkjNlNMO/lc1b3zLeFrO1shjmLUV18/4Nno1eDZYNZ4pYfjglkMe8bxoc4Uy486M+c78amFCW/Eq3EbD9aIoZ7owGtNtSmC3Fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zyfFrcxCTVLFFZd4YX33T8y0uesY7niQXgVhBxDUTRA=; b=IyDZAzE2S9g7UJIM5W7NdxKnKkZE2LKa67ksqmY3C6403iqVlJ7hARyS1plcw7FnFHGvVYAZm7Z0UKd/cJDhdbUlI1o0dHfBd3fQX+F7Xd89D0h+N1GDFARMpjcLVEMy/pZN9J+xhUEq0hZ7C+m6Z24/un+SvCvWIHcRENKAtc96hyWKf5ElEvWpPJ+wmahFwRDITOHdnZRLZo/scmx5m0U3/gaLU7DNuHBxyiirL3JUaiJthxuqO0HbT+qeNi4nNSbzn/A8DEip1OgWyGk43bcY5qmTpm20x7IMNGTEqaFmfIqG1cffEy/dvQ7wIEoTP5+Oe2in4cDQvummtOJBNw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none 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=zyfFrcxCTVLFFZd4YX33T8y0uesY7niQXgVhBxDUTRA=; b=cg68+m/Ezr/QHPqDiWP5BpsYvullQ5BNvj1ZVpZMER4iNXmXITJ0sUnO3+xxfzuCGF9UuNAmmH/WVwr58i7KnMTLO63m3Xxw0PbOMH5LyZJQXHtMvKT0AIy3z7jeHTg3VeHjtK6Lm6jcTM11MRy2yrhjAD3SyBpcRIA+tqkxhGw= Received: from VI1PR05MB5390.eurprd05.prod.outlook.com (2603:10a6:803:8d::23) by VI1PR0502MB3631.eurprd05.prod.outlook.com (2603:10a6:803:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.26; Tue, 28 Jul 2020 09:14:15 +0000 Received: from VI1PR05MB5390.eurprd05.prod.outlook.com ([fe80::f4a6:fe4e:514e:7697]) by VI1PR05MB5390.eurprd05.prod.outlook.com ([fe80::f4a6:fe4e:514e:7697%5]) with mapi id 15.20.3216.033; Tue, 28 Jul 2020 09:14:15 +0000 From: Dekel Peled To: Ori Kam , Raslan Darawsheh , Thomas Monjalon , "ferruh.yigit@intel.com" , Andrew Rybchenko CC: "dev@dpdk.org" , "stable@dpdk.org" , Matan Azrad , Slava Ovsiienko Thread-Topic: [PATCH] ethdev: fix RSS flow expansion in case of mismatch Thread-Index: AQHWZBXQThgsbbyPdUyDUJd2FXXP7qkbaQNggAAypQCAARdEcA== Date: Tue, 28 Jul 2020 09:14:15 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: mellanox.com; dkim=none (message not signed) header.d=none;mellanox.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [5.29.54.105] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: e3e1cf9b-9209-460d-cfa6-08d832d699dc x-ms-traffictypediagnostic: VI1PR0502MB3631: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr,ExtFwd x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: skYbAKebzL83WIU60cFdl3yuRUr3LOxO42ios9UHIhYcSBI5Ae/kmQ+/l6wgHv6mn2UWjRxRDrik/5vJ69xhin/KI2Mv1Ou9J0lRwpxR2daVvSWvYfHepEx4F8Fyv6H6SZzKB89ZPqyy0+juaO21CJVZIlUBTXij0pAgp3K1ZeUuoEfcHJjdOp3dyvwdLK2LuyGNucfv0qmeVMrXIMrfaHXtVZhhUTWV7YnkLcbRvNe4qABqupHY7BsJf1Av98hTgtXzozvCQ+qpltCxrJ4fm2LUAefS4ptqWY7hvmS5U9f+kHtg10K7W/xuOJI3fB4d x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR05MB5390.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(376002)(346002)(136003)(396003)(366004)(39860400002)(8676002)(2906002)(71200400001)(316002)(55016002)(9686003)(76116006)(66446008)(64756008)(66556008)(66476007)(66946007)(52536014)(107886003)(6506007)(186003)(53546011)(86362001)(478600001)(8936002)(33656002)(54906003)(110136005)(7696005)(26005)(4326008)(83380400001)(5660300002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: XuUtDkeZT/AOxCDTDN9CB2aNxu6VS3YWq3l0hIcxyq4ADLCjXV+wKsiDLKJs8S95oqOhcENMBpzPQ47RqXOqR+3u7LgVXI86JOTRRYStCMvj8qDXgyDWSiF8p+qkHvcWLTgBf2M5QYk/QRmESIyMmyEoQ1iHVZ5iy7Y9kB8cGqR6TChWvtrnLYA+lst2BEuwYUUHfGtRCNZ88XyV4ydFv5XjaAfTJDStHI0MQguFApCVo1z2kZuCgQmxsLObuJcmrW3FycePDQq6shHw5moAaq36Lrg2HyuK5y9UWbK1GlBQriyi9SVYgRUrZaZNb0is+Q46m4yHB62FUw6wtR83QEF+KK7nE/wmVibAymzM1fjamfTRjPWM892873OaP2PmYcuyYPePeqebyNtPNNdT5NN9bSfza1a5bSWb1m2yVRdrJKZtT5511ySrBW1Z7ISa1lSbI2db6dZFmP3Qy2gZc5JwihJXQHiXi+sqljhs1D8= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5390.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3e1cf9b-9209-460d-cfa6-08d832d699dc X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jul 2020 09:14:15.7421 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WrudZiiIQfYiEo7M0vj8CcoIfxfiWfnKFQyYKyaf4wpMPvNbVApWQ8WSJvDgGDIOHVzg6a65++TzOwfDg3b2Fw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0502MB3631 Subject: Re: [dpdk-dev] [PATCH] ethdev: fix RSS flow expansion in case of mismatch 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" Hi, PSB. > -----Original Message----- > From: Ori Kam > Sent: Monday, July 27, 2020 7:21 PM > To: Dekel Peled ; Raslan Darawsheh > ; Thomas Monjalon ; > ferruh.yigit@intel.com; Andrew Rybchenko > Cc: dev@dpdk.org; stable@dpdk.org; Matan Azrad ; > Slava Ovsiienko > Subject: RE: [PATCH] ethdev: fix RSS flow expansion in case of mismatch >=20 > Hi Dekel, >=20 > > -----Original Message----- > > From: Dekel Peled > > > > Resending To: maintaners. > > > > > -----Original Message----- > > > From: Dekel Peled > > > > > > Function rte_flow_expand_rss() is used to expand a flow rule with > > > partial pattern into several rules, to ensure all relevant packets ar= e > matched. > > > It uses utility function rte_flow_expand_rss_item_complete(), to > > > check if the last valid item in the flow rule pattern needs to be > completed. >=20 > Which is also based on the requested RSS type. Right? If no RSS type is s= et > then the issue will not appear. Correct. >=20 > > > For example the pattern "eth / ipv4 proto is 17 / end" will be > > > completed with a "udp" item. >=20 > Only if UDP rss type is selected, if TCP is selected then it will be TCP = right? Correct. >=20 > > > This function returns "void" item in two cases: > > > 1) The last item has empty spec, for example "eth / ipv4 / end". > > > 2) The last itme has spec that can't be expanded for RSS. > > > For example the pattern "eth / ipv4 proto is 47 / end" ends with I= Pv4 > > > item that has next protocol GRE. > > > > Typo in itme -> item? Indeed. >=20 > > > In both cases the flow rule may be expanded, but in the second case > > > such expansion may create rules with invalid pattern. >=20 > You mean that in both cases the flow will be expanded, that is the issue. > That in the second case the flow shouldn't be expended. Correct. >=20 > > > For example "eth / ipv4 proto is 47 / udp / end". > > > In such a case the flow rule should not be expanded. > > > > > > This patch updates function rte_flow_expand_rss_item_complete(). > > > Return value RTE_FLOW_ITEM_TYPE_END is used to indicate the flow > > > rule should not be expanded. > > > In such a case, rte_flow_expand_rss() will return with the original > > > flow rule only, without any expansion. > > > >=20 >=20 > > > Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows") > > > Cc: stable@dpdk.org > > > > > > Signed-off-by: Dekel Peled > > > Acked-by: Xiaoyu Min > > > Acked-by: Viacheslav Ovsiienko > > > --- > > > lib/librte_ethdev/rte_flow.c | 16 ++++++++++++++-- > > > 1 file changed, 14 insertions(+), 2 deletions(-) > > > > > > diff --git a/lib/librte_ethdev/rte_flow.c > > > b/lib/librte_ethdev/rte_flow.c index f8fdd68..59a386d 100644 > > > --- a/lib/librte_ethdev/rte_flow.c > > > +++ b/lib/librte_ethdev/rte_flow.c > > > @@ -247,6 +247,8 @@ struct rte_flow_desc_data { > > > ret =3D RTE_FLOW_ITEM_TYPE_IPV6; > > > else if (rte_be_to_cpu_16(ether_type) =3D=3D > > > RTE_ETHER_TYPE_VLAN) > > > ret =3D RTE_FLOW_ITEM_TYPE_VLAN; > > > + else > > > + ret =3D RTE_FLOW_ITEM_TYPE_END; > > > break; > > > case RTE_FLOW_ITEM_TYPE_VLAN: > > > if (item->mask) > > > @@ -264,6 +266,8 @@ struct rte_flow_desc_data { > > > ret =3D RTE_FLOW_ITEM_TYPE_IPV6; > > > else if (rte_be_to_cpu_16(ether_type) =3D=3D > > > RTE_ETHER_TYPE_VLAN) > > > ret =3D RTE_FLOW_ITEM_TYPE_VLAN; > > > + else > > > + ret =3D RTE_FLOW_ITEM_TYPE_END; > > > break; > > > case RTE_FLOW_ITEM_TYPE_IPV4: > > > if (item->mask) > > > @@ -284,6 +288,8 @@ struct rte_flow_desc_data { > > > ret =3D RTE_FLOW_ITEM_TYPE_IPV4; > > > else if (ip_next_proto =3D=3D IPPROTO_IPV6) > > > ret =3D RTE_FLOW_ITEM_TYPE_IPV6; > > > + else > > > + ret =3D RTE_FLOW_ITEM_TYPE_END; > > > break; > > > case RTE_FLOW_ITEM_TYPE_IPV6: > > > if (item->mask) > > > @@ -304,6 +310,8 @@ struct rte_flow_desc_data { > > > ret =3D RTE_FLOW_ITEM_TYPE_IPV4; > > > else if (ip_next_proto =3D=3D IPPROTO_IPV6) > > > ret =3D RTE_FLOW_ITEM_TYPE_IPV6; > > > + else > > > + ret =3D RTE_FLOW_ITEM_TYPE_END; > > > break; > > > default: > > > ret =3D RTE_FLOW_ITEM_TYPE_VOID; > > > @@ -1110,10 +1118,14 @@ enum rte_flow_conv_item_spec_type { > > > memset(flow_items, 0, sizeof(flow_items)); > > > user_pattern_size -=3D sizeof(*item); > > > /* > > > - * Check if the last valid item has spec set > > > - * and need complete pattern. > > > + * Check if the last valid item has spec set, need complete pattern= , > > > + * and the pattern can be used for expansion. > > > */ > > > missed_item.type =3D > > > rte_flow_expand_rss_item_complete(last_item); > > > + if (missed_item.type =3D=3D RTE_FLOW_ITEM_TYPE_END) { > > > + /* Item type END indicates expansion is not required. */ > > > + return lsize; > > > + } > > > if (missed_item.type !=3D RTE_FLOW_ITEM_TYPE_VOID) { > > > next =3D NULL; > > > missed =3D 1; > > > -- > > > 1.8.3.1 >=20 > I don't think this is the correct solution. > The idea of the rte_flow_expand_rss_item_complete function is to add the > last item so later the parsing will be based on items regardless of spec. > This mean the function already support pattern with the following format: > Eth / ipv4 / gre. What the result will be? Will it be expended? Flow rule with such pattern will not be expanded using the current mlx5_sup= port_expansion array. >=20 > I think the solution should be that the function will return the correct = item. > Assuming there is such an item. This is what the current solution does. >=20 > Best, > Ori