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 C785CA053D; Mon, 27 Jul 2020 15:25:41 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 805F02C6E; Mon, 27 Jul 2020 15:25:40 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60078.outbound.protection.outlook.com [40.107.6.78]) by dpdk.org (Postfix) with ESMTP id 0B8F92B86; Mon, 27 Jul 2020 15:25:39 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BAoCQ6jvtX2WoFAE6vd2H23HgxGB+iJFA78JBOFw+lFkewCNvA0OS9UXmI5Z5Fn86Sw6Taegyo0QOk2YB744SjlakI89tOzXfPLmt1atgFvQo7BM/b5JP/pYvOpm1Q0I/1fNK/XaVPXWqqJeJGWB9kvin+dBvg7NZqV4WvudBms+Xjs4R/UfSg0nBXCq5pAdz7h7jEMUzr6WnSKYuEKDxkB5nb3f/bBRrW+t4MaPYm/Quq1lVAPgudd/RFrWWAFPlXalewhtqVWUnMndpfvJeJZUwgE1udYhwTOXd3RIrBR8cU5m4QoLigh0m/PiT1VGXUGpHQA0gjNH2JrzJ27NSw== 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=kiDokLnE9Mby0WCx6u4CyHjHQrp0ijSxoPgcL2322Ck=; b=bfQ+Oxa9Iosjl/CyO57gW/ZI/aak/8OA8hq5LPpPzRIeSO1UBT/bUjn+ynxQJuZNiWurq0P82lsY7kwL4Jc3h4TDfUF5WtbeR9ginACrhYJSE6BsOwdP4ekb49D++uW2VdFbPB68iot8pAaOsKLvX8/5nWXtDIeXad/9/xOQX6c385i4HEs7RvU2sEd/oXdwsZ1kr3Wri49wLtptqKabbx7dRxbufEEIsLZlzkBehab/nl7Vsk84JJFRcKfYACXrLOIGtn9uHLDMtiTz5/ztIZk3uzr8cUclWhTVhUYNiLeKq25khLOJR4C+l4ANlKTAneFAgv8+kwadM7zdQvt5Dw== 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=kiDokLnE9Mby0WCx6u4CyHjHQrp0ijSxoPgcL2322Ck=; b=ZJqlIg/zZrmDDN0NONLg/WrPYloiepe4lsihWaxIg8n699cdUJShLnHdp4VQo/64YlYmKIDFaKEnQNWAmHZbm9m8PPZ1dYTFw+XyNxcg6Hv2dsUAbdFHXUYWEc5+VwBN6evdL0Urq5nivzMKbUfkYN3/gptGwDNq3WB8IneEqlw= Received: from VI1PR05MB5390.eurprd05.prod.outlook.com (2603:10a6:803:8d::23) by VI1PR0502MB3789.eurprd05.prod.outlook.com (2603:10a6:803:a::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.28; Mon, 27 Jul 2020 13:25:36 +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; Mon, 27 Jul 2020 13:25:36 +0000 From: Dekel Peled To: Raslan Darawsheh , Ori Kam , 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: AQHWZBXQThgsbbyPdUyDUJd2FXXP7qkbaQNg Date: Mon, 27 Jul 2020 13:25:35 +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: [62.219.237.40] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: ded55e4d-3972-4cca-0b7e-08d832308bee x-ms-traffictypediagnostic: VI1PR0502MB3789: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: r2/oJxIZMj42nxkRWBaOzuOUEvlgLuygRsvGuxT1oJEwUfFiABSWyNNm5l2CWmDiGcAgOdJRiPm+RCxiRwbDOf6QypvqKpRiT3o94/Cu2yRalhgyxOxfqxnJSKN0QdS0HvzbCP80PxEsdOCQwnVINjIlOsXHkd4nCSU4OT3Dya/ctE9BqLscjwmdE1pdn7g7ok45lCFERL1gt6E6fp1XezbvNiRSAiqmMZyNLjLD+9u2GrKhGXnovBhhsbJ3XQjf7FATV+kxQ5Tz5Bm9tMcoz3sFsuebD/VvppwqNr686Y7MYNQStcG8BL0o9hyXDiXw 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)(366004)(346002)(376002)(396003)(39860400002)(136003)(52536014)(478600001)(53546011)(4326008)(7696005)(76116006)(6506007)(66946007)(26005)(71200400001)(55016002)(8936002)(186003)(33656002)(86362001)(107886003)(64756008)(83380400001)(54906003)(110136005)(9686003)(66556008)(66446008)(66476007)(2906002)(8676002)(5660300002)(316002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: x0zmKbXeo+xyw65BbsKSoT2Udrg90v+bacliunaqtmdXDDu+0QeCsLjBpJxSPiNyQi1yEHkRGH/4OWxjRlDt/lU/QsRa1ZRjwCnYakS73yooi/xbELJyz7bbfK41MG98IZm2EsNrOzbbR4lwSjM7U8QM3NQoLsn3K3QPR3u6FFz6TO7WlPB8RW6JQwHf+ffqNja2SxYo3G+TKIdzZuXoRrBNdtYOnL41jHswwIFF/Ia6doNmu9Ym7QBFOJFESBtHAWaltomjgWZ4YGcyAtwXV/wDXpqdCnXdq+/6vvhZ05mw2Zx8SF0sEDi7mylRo1td8Movs30glWyiE1mZlm5X34x8jNxpEj0VPQxFptorW2LAOuY4YNl4I9Ds1EswfNngj7kflDQbk2A9FPODucUN6eB4GOCpTchVNmpvCqoaKcXrDB9P1NWjon3HSv0XzwYL5H5f43SjYC3r6/n/e7JeGGVqNK6IlO3A1OAqZak0Yh4= 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: ded55e4d-3972-4cca-0b7e-08d832308bee X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jul 2020 13:25:35.9158 (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: +5LSygtiRLnsTyYOBvaybARpYe/jzGpLYsyJ/B/Y0krCHOkjVLE8tPX6d2gkEmALXzGi4aaJU7oXYwHv+Jk1wA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0502MB3789 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" Resending To: maintaners. > -----Original Message----- > From: Dekel Peled > Sent: Monday, July 27, 2020 3:58 PM > To: Matan Azrad ; Slava Ovsiienko > ; Raslan Darawsheh > Cc: dev@dpdk.org; stable@dpdk.org > Subject: [PATCH] ethdev: fix RSS flow expansion in case of mismatch >=20 > Function rte_flow_expand_rss() is used to expand a flow rule with partial > pattern into several rules, to ensure all relevant packets are 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. > For example the pattern "eth / ipv4 proto is 17 / end" will be completed = with > a "udp" item. > 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 IPv4 > item that has next protocol GRE. >=20 > In both cases the flow rule may be expanded, but in the second case such > expansion may create rules with invalid pattern. > For example "eth / ipv4 proto is 47 / udp / end". > In such a case the flow rule should not be expanded. >=20 > 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 > Fixes: fc2dd8dd492f ("ethdev: fix expand RSS flows") > Cc: stable@dpdk.org >=20 > 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(-) >=20 > 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