From patchwork Thu Jul 16 07:39:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gregory Etelson X-Patchwork-Id: 74179 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E1E76A0546; Thu, 16 Jul 2020 09:40:21 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B4E2B1BEA3; Thu, 16 Jul 2020 09:40:20 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20086.outbound.protection.outlook.com [40.107.2.86]) by dpdk.org (Postfix) with ESMTP id 24CA91BEA1; Thu, 16 Jul 2020 09:40:19 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JgWpQ6oQOto7bKhrwXDZUvGEFQtlsB8YRO6Lu1itJRQddfT94dQltR+No8fehktchgy+OzEiUnviUq91PAYABlyrU3F+TztPFFqwvDKCOpJ1jVCb2CDw6hVlJCTDlG8k3uAioEjp8QpRgnc9AXbCzuP6ltpM81PiVI6yXskV1JbtKdzBRbClGJ2yGja1rE0pxhDc0NNyZeTaurBD8TJuB8D7RrsTcYxurX7f8LuWUAft1/uETOBIiqZ876Oh+uJWgAOtBvffnexvavBLadAfqC/PVklttCtqML7WX5qxqS6sl2NZyGT64N/YLw2xB5vRv7WPGMEK9lmBhc1i1TV9rQ== 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=T7NEfqyyZRI27eqbyn4t4GOHD5OXCja/Xt8xunrTbfo=; b=MvFQzXLP84ulAGTtBPvhydadNFVGohR0wrwGtmqWxq6GQsalOD61qbAk+E8438SNbCOd+P+28rCa6xq3dB9qYtKjO7FRD5eqZzTkBmWN0WVNKJi40EzIhp/2vlvjMZhYle+ThulHCQP1ATmY3LoU58goZCK1og854ZymuW+e2HdeosP1b9FyBH1Qr+qHDgSGoEY0RVnVbpqAmYlcjlNGEaqJm4QaaZv+yYxiQolx1W2sG2Qk/B00b1L5nbhqAHkEWcP0+RdPZ2l0pBRIhq95/OgktWg2aY6cNzxBQkbgPHOHw8l3M653FpVcIJ0dD/QFDV0YNgOCU2upvooFs2HaOA== 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=T7NEfqyyZRI27eqbyn4t4GOHD5OXCja/Xt8xunrTbfo=; b=b9+wlO3brpoEhCpQR8ED48EQLFHCBnTrhKDFQ39hzjm0z3T1j0P+KIGOq4NrIQ+2bnoCpHB7XtZBrv4lsqyh+VIe4FauU9XS0jTlLRr4Xi7DDiY+5mjDx/go86D5P8xpl5VlmmvXcPTcS7vV0ykNMmYvUrdDodCLL2lolfaWN1A= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from DB8PR05MB6761.eurprd05.prod.outlook.com (2603:10a6:10:139::21) by DB6PR05MB4535.eurprd05.prod.outlook.com (2603:10a6:6:48::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.18; Thu, 16 Jul 2020 07:40:17 +0000 Received: from DB8PR05MB6761.eurprd05.prod.outlook.com ([fe80::5895:a00:3355:eb9f]) by DB8PR05MB6761.eurprd05.prod.outlook.com ([fe80::5895:a00:3355:eb9f%7]) with mapi id 15.20.3174.027; Thu, 16 Jul 2020 07:40:17 +0000 From: Gregory Etelson To: dev@dpdk.org Cc: getelson@mellanox.com, matan@mellanox.com, rasland@mellanox.com, stable@dpdk.org, Shahaf Shuler , Viacheslav Ovsiienko , Ori Kam , Yongseok Koh Date: Thu, 16 Jul 2020 10:39:58 +0300 Message-Id: <20200716073959.3236-1-getelson@mellanox.com> X-Mailer: git-send-email 2.25.1 X-ClientProxiedBy: AM0PR02CA0092.eurprd02.prod.outlook.com (2603:10a6:208:154::33) To DB8PR05MB6761.eurprd05.prod.outlook.com (2603:10a6:10:139::21) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (176.230.224.86) by AM0PR02CA0092.eurprd02.prod.outlook.com (2603:10a6:208:154::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.17 via Frontend Transport; Thu, 16 Jul 2020 07:40:16 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [176.230.224.86] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 88933fbc-1b38-4afe-a73e-08d8295b7c10 X-MS-TrafficTypeDiagnostic: DB6PR05MB4535: 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:3513; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WK5MWudi5tRvb7obWipjTucQW0v9TOZBBMS7LR131dWI087Srm1fdmqSfpNip5w/bpO2kHkyI4SBGvUdC6HgrYHRTtFVITo3nDwvBEY5+P7DzHCiZ3ipVZ8O22UOmWKs2OHjmP3/FhFSHbkormWJXzyAmEWrMmtf2heZ74Wa00t10Z/TbU/DwJie9Ugp/QTtQLX1PwhSszt4AmdrK6uL5AfB0UJnyd77XZvQNt2vG14KFjX+TR+4R6oQsh6uJGY1tPxczrSbjCk/y6dBXgSz1ALNx2zHw23J9Bz8Aoj+ucdYUBTWv74o5LvDPBuf66SD X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB8PR05MB6761.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(346002)(136003)(376002)(39860400002)(366004)(396003)(86362001)(4326008)(6666004)(1076003)(5660300002)(8676002)(83380400001)(8936002)(36756003)(8886007)(66556008)(186003)(66476007)(2906002)(66946007)(478600001)(107886003)(55016002)(6916009)(54906003)(316002)(956004)(7696005)(2616005)(16526019)(52116002)(26005)(450100002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: oD/T8pgqlAr9OIqhdt2DDKZ9iiL+JF/VLS8GMyVITW5FI5TQFP6AV2sZcEp+dQXvUcswxfLZbSvl4tAkNe5QwOHovwUhi3xtKe60kDzn7si3VayZxPI/PeYxTCPeCqxRF+wF7ibwMq8y39+pt9gJsKi3GVFO/ntAlwAcdvq8N6Ug3g557W0uGCW6G/vtEh+fvQDro9VKwrSj2yfr0MhOR4XwJwZFMJMJwRNnU6MmQtLCbZG72g/cgOZOh7G9or4MWVQJ6p/1qwmOghm7qApUFgtGMv9i5KSGdeNdbr1JjH7RPhV0XSpscBR0MAQBJt2m6EngSy2tgAwgjwqbBr4kfBqbYq9u7y/7R2AVcAq4ncnKZftZ3gAJwgEqp4IEHm3lCiqapPscMZZjMp+d8ydDIpWm0RmO4g1oeP1/f6K6bdJzCsLZxuNUk4DPx1joH+K3JYIKhCdXukAsld/sWVpoKq63keHYW3RQu2oLBAQCQlE0THTDt8DpX/qSDyWySPb5 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 88933fbc-1b38-4afe-a73e-08d8295b7c10 X-MS-Exchange-CrossTenant-AuthSource: DB8PR05MB6761.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2020 07:40:17.5653 (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: JP9x96R2Ia+eXQA8mcscsbx3qZ05NNsSH3WTDaR+2SweKuzVLQn3efkeOX/Z8MfTM+gpfyyby5N8XHddUBESUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR05MB4535 Subject: [dpdk-dev] [PATCH] net/mlx5: fix tunnel PMD flow prioriry 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" PMD flow priority is different from application flow priority. Flow rules with higher match granularity assigned higher PMD priority. Also PMD splits internally RSS flows according to flow RSS layer. Final PMD flow rule priority derived from the last match item network level, after PMD adjusts flow rule, where L4 match gets the highest priority and L2 the lowest. The patch adjusts tunnels flow rule priority calculation for PMDs running verb API. Introduce MLX5_TUNNEL_PRIO_GET macro. Fixes: 4a78c88e3bae ("net/mlx5: fix Verbs flow tunnel") Cc: stable@dpdk.org Signed-off-by: Gregory Etelson Acked-by: Matan Azrad Acked-by: Ori Kam --- drivers/net/mlx5/mlx5_flow.h | 4 ++++ drivers/net/mlx5/mlx5_flow_dv.c | 21 +++++++-------------- drivers/net/mlx5/mlx5_flow_verbs.c | 8 ++++---- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index 43cbda8712..89a827eb45 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -516,6 +516,10 @@ struct mlx5_flow_rss_desc { uint16_t queue[]; /**< Destination queues to redirect traffic to. */ }; +/* PMD flow priority for tunnel */ +#define MLX5_TUNNEL_PRIO_GET(rss_desc) \ + ((rss_desc)->level >= 2 ? MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4) + /** Device flow handle structure for DV mode only. */ struct mlx5_flow_handle_dv { diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 8b5b6838fa..7944e5d6fd 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -8462,8 +8462,7 @@ __flow_dv_translate(struct rte_eth_dev *dev, case RTE_FLOW_ITEM_TYPE_GRE: flow_dv_translate_item_gre(match_mask, match_value, items, tunnel); - matcher.priority = rss_desc->level >= 2 ? - MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4; + matcher.priority = MLX5_TUNNEL_PRIO_GET(rss_desc); last_item = MLX5_FLOW_LAYER_GRE; break; case RTE_FLOW_ITEM_TYPE_GRE_KEY: @@ -8474,37 +8473,32 @@ __flow_dv_translate(struct rte_eth_dev *dev, case RTE_FLOW_ITEM_TYPE_NVGRE: flow_dv_translate_item_nvgre(match_mask, match_value, items, tunnel); - matcher.priority = rss_desc->level >= 2 ? - MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4; + matcher.priority = MLX5_TUNNEL_PRIO_GET(rss_desc); last_item = MLX5_FLOW_LAYER_GRE; break; case RTE_FLOW_ITEM_TYPE_VXLAN: flow_dv_translate_item_vxlan(match_mask, match_value, items, tunnel); - matcher.priority = rss_desc->level >= 2 ? - MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4; + matcher.priority = MLX5_TUNNEL_PRIO_GET(rss_desc); last_item = MLX5_FLOW_LAYER_VXLAN; break; case RTE_FLOW_ITEM_TYPE_VXLAN_GPE: flow_dv_translate_item_vxlan_gpe(match_mask, match_value, items, tunnel); - matcher.priority = rss_desc->level >= 2 ? - MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4; + matcher.priority = MLX5_TUNNEL_PRIO_GET(rss_desc); last_item = MLX5_FLOW_LAYER_VXLAN_GPE; break; case RTE_FLOW_ITEM_TYPE_GENEVE: flow_dv_translate_item_geneve(match_mask, match_value, items, tunnel); - matcher.priority = rss_desc->level >= 2 ? - MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4; + matcher.priority = MLX5_TUNNEL_PRIO_GET(rss_desc); last_item = MLX5_FLOW_LAYER_GENEVE; break; case RTE_FLOW_ITEM_TYPE_MPLS: flow_dv_translate_item_mpls(match_mask, match_value, items, last_item, tunnel); - matcher.priority = rss_desc->level >= 2 ? - MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4; + matcher.priority = MLX5_TUNNEL_PRIO_GET(rss_desc); last_item = MLX5_FLOW_LAYER_MPLS; break; case RTE_FLOW_ITEM_TYPE_MARK: @@ -8546,8 +8540,7 @@ __flow_dv_translate(struct rte_eth_dev *dev, case RTE_FLOW_ITEM_TYPE_GTP: flow_dv_translate_item_gtp(match_mask, match_value, items, tunnel); - matcher.priority = rss_desc->level >= 2 ? - MLX5_PRIORITY_MAP_L2 : MLX5_PRIORITY_MAP_L4; + matcher.priority = MLX5_TUNNEL_PRIO_GET(rss_desc); last_item = MLX5_FLOW_LAYER_GTP; break; default: diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c index 781c97fd2e..602375d062 100644 --- a/drivers/net/mlx5/mlx5_flow_verbs.c +++ b/drivers/net/mlx5/mlx5_flow_verbs.c @@ -1723,25 +1723,25 @@ flow_verbs_translate(struct rte_eth_dev *dev, case RTE_FLOW_ITEM_TYPE_VXLAN: flow_verbs_translate_item_vxlan(dev_flow, items, item_flags); - subpriority = MLX5_PRIORITY_MAP_L2; + subpriority = MLX5_TUNNEL_PRIO_GET(rss_desc); item_flags |= MLX5_FLOW_LAYER_VXLAN; break; case RTE_FLOW_ITEM_TYPE_VXLAN_GPE: flow_verbs_translate_item_vxlan_gpe(dev_flow, items, item_flags); - subpriority = MLX5_PRIORITY_MAP_L2; + subpriority = MLX5_TUNNEL_PRIO_GET(rss_desc); item_flags |= MLX5_FLOW_LAYER_VXLAN_GPE; break; case RTE_FLOW_ITEM_TYPE_GRE: flow_verbs_translate_item_gre(dev_flow, items, item_flags); - subpriority = MLX5_PRIORITY_MAP_L2; + subpriority = MLX5_TUNNEL_PRIO_GET(rss_desc); item_flags |= MLX5_FLOW_LAYER_GRE; break; case RTE_FLOW_ITEM_TYPE_MPLS: flow_verbs_translate_item_mpls(dev_flow, items, item_flags); - subpriority = MLX5_PRIORITY_MAP_L2; + subpriority = MLX5_TUNNEL_PRIO_GET(rss_desc); item_flags |= MLX5_FLOW_LAYER_MPLS; break; default: