From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 63F60A0C57 for ; Tue, 30 Nov 2021 13:17:47 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5AD1041156; Tue, 30 Nov 2021 13:17:47 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2051.outbound.protection.outlook.com [40.107.243.51]) by mails.dpdk.org (Postfix) with ESMTP id 83AB341155 for ; Tue, 30 Nov 2021 13:17:45 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PHaCbhhrWasDY89i+xqmj/2w2dCUtqN6q8CcyoGS2Tw8ZFGKEEQCVhcu+ReEqeyRJNHgs4OR1QDU7mHLHSZ3cR3hxfgfR9o2sRN0p7e/btSPbEphd1eDhi/MuWs4Arp0+usDbpdgKpwdVNz6SWyGmjehx5k+v6efzUzlBTJO6bAvqTFRP5/8g00GmWnU+N6AVeYS1Sf62C1VUdxOGB+w28Ab+lqvepSp7usieXL6PjwD0ASWFm/ElDz4CXMZYKtBjyje5XDxFCleEmQCN5dCoGatmkj4aa49KPwwoiR1Tw1sIqjEEL6qtlW8iZaeyQ/eUqUof0sptD6LKjeYdg12JA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PlWe5W9zr5eCfj5AiQyHnUK59w2+uL/zk0/nHaKzOO8=; b=l+DvcBZZct/JAQZ86+kDHLeyP5Qk+Em1bl9oJz2K2B+JUYA3QC0puuAd2Lt+I1qNZePAUIOoacLvSbUvnBIYY+hgxdALjTk7r3KMtTGE4x+E23oOnRu2NVbAm2l/X7BLCQGkYcmr2avCHPMFPrPCu9J3bUiTnvw8vLEgUCX9IRs7Ihd2FwynNRngPPj30zSgtadEgwuSFJ5A/xa/poJH4udmTozNc6C0RFzIcxv8HnffKcbOdpVrYIk/WNA+h4CnoukUKlZp5Qp8EIuX17zeO+820jYJ4i1qHAm0xBay5omVxiSzh4BxmhqGFkdwTce70lClS2nfX56fHwzRWMacBg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.32) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PlWe5W9zr5eCfj5AiQyHnUK59w2+uL/zk0/nHaKzOO8=; b=imQbJlP+yrHgJEMEArvr5w7i35dLy2vcxUOUlGMtq7zefSb2tuwJfXLzIf5y5R9SORzpYdY0gI9ZM+xXgEUUkvNrir6ca72UbdgKiXZ3vkyEkOBGti9DMYlMUHTU18bPnnJva1l5y1hG+5io50tBixUmyCBGd9IYYfGAEFsaxV91DzWK2Ac2Jw27OAwldm0zfRnCkWNkw+2JCrDYfrfs5Jchk25BgRW3Xy05kotG4hsTnh/pjr6NrvcAX8nJuIKIJYrhW0gyT3Z9BhsHuKVMMLkVpVgwuWZw8IxhLx0WvrqkruN0J7JNwNwRW+qGVFFPHDjq+7Vf5ZnD9hKETZa8wA== Received: from BN9PR03CA0360.namprd03.prod.outlook.com (2603:10b6:408:f6::35) by DM5PR12MB1865.namprd12.prod.outlook.com (2603:10b6:3:10b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.23; Tue, 30 Nov 2021 12:17:44 +0000 Received: from BN8NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:408:f6:cafe::60) by BN9PR03CA0360.outlook.office365.com (2603:10b6:408:f6::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4734.22 via Frontend Transport; Tue, 30 Nov 2021 12:17:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.32) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.32 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.32; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.32) by BN8NAM11FT012.mail.protection.outlook.com (10.13.177.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4734.22 via Frontend Transport; Tue, 30 Nov 2021 12:17:43 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Tue, 30 Nov 2021 04:17:42 -0800 Received: from nvidia.com (172.20.187.6) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.986.5; Tue, 30 Nov 2021 04:17:41 -0800 From: Lior Margalit To: Matan Azrad CC: Lior Margalit , Subject: [PATCH 20.11 5/5] net/mlx5: fix RSS expansion with EtherType Date: Tue, 30 Nov 2021 14:17:14 +0200 Message-ID: <20211130121714.4170879-5-lmargalit@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211130121714.4170879-1-lmargalit@nvidia.com> References: <20211130121714.4170879-1-lmargalit@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 694e2494-59fc-4743-b0ef-08d9b3fb69a5 X-MS-TrafficTypeDiagnostic: DM5PR12MB1865: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:913; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xsy0CHKtngM6FTBU7IAdkkpDDegmJMjRByXbWW1meHqYg++rhcvPKeA3ZdGjmoxy+udCUu+dvi5O/9bgL4kjydS/yJQRDuaKRQ/Vi+ujRyKkY/L5H07w5IET37Y3BvRI8Ra+USctdjKe5uj2EuqdKO+TkGPku7Uazyf1aVj2b//IULKPdOHZQC3ufXftVT1YGigidvS0m7Z26ur2PRbcc1Z0PVq+R0407wZlc8NTVlbcYTt9MeEjhBRwQ/oBZqMjCKdzNTNTRV4MbPN9NjOIxgtIZQWQXlBpEK3W47aaqY/HZM+N0tHDQe4DcCy56g/wZjKeya0GPV74H5awc5QMwKoSAyz5fzwyhTWDwGVqKjq6uUr3hdLqcIKVZaVuLCB0D/zNoyu+04tUCAidIr9UGlqrTSSDlFcsNy0e5ngUO9JQvnbGFx/OLi4eOMVKgixj4M2GVan1dxZtji22aBqGUis7a4SqyaYUoe4byW1UsjymovGKjR1XfNSEuSc8RJFUETQeeMMoSHmrYdNdRuw5IyhcU9sxbAAL7O25brIazDXTn4tvfFjQai2AzU7LEIpYHvac6otkWhUX55ZKup4vnBpIIlXUvY/aVxsGgp0+hckspa5A7TiVz24xbjmT1fmQEPzqwLdniEAS8YMTp5fTahlkIencBiKqjBODaXwIjBoOnCSd07Ib/MsSU2qAZNgNqmfMuGVcDMAVBb5ptf58jkF79Ro14LasA7IliEGzklfWEgTl9NAMH3+taS25EDl9kvp9GkirXUcaxMzIQroajw== X-Forefront-Antispam-Report: CIP:216.228.112.32; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid01.nvidia.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(40470700001)(82310400004)(55016003)(336012)(6862004)(2616005)(2906002)(26005)(7636003)(6666004)(1076003)(8676002)(86362001)(356005)(4326008)(7696005)(40460700001)(5660300002)(426003)(36756003)(36860700001)(16526019)(70206006)(83380400001)(508600001)(8936002)(6286002)(316002)(70586007)(6636002)(37006003)(54906003)(47076005)(186003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2021 12:17:43.8496 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 694e2494-59fc-4743-b0ef-08d9b3fb69a5 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.32]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1865 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org [ upstream commit a451287102fec4eecdb2938760a57334bccc204f ] The RSS expansion algorithm is using a graph to find the possible expansion paths. A graph node with the 'explicit' flag will be skipped, if it is not found in the flow pattern. The current implementation misses a check for the explicit flag when expanding the pattern according to ETH item with EtherType. For example: testpmd> flow create 0 ingress pattern eth / ipv6 / udp / vxlan / eth type is 2048 / end actions rss level 2 types udp end / end The "eth type is 2048" item in the pattern may be expanded to "ETH IPv4". The ETH node in the expansion graph is followed by VLAN node marked as explicit. The fix is to skip the VLAN node and continue the expansion with its next nodes, IPv4 and IPv6. The expansion paths for the above example will be: ETH IPV6 UDP VXLAN ETH END ETH IPV6 UDP VXLAN ETH IPV4 UDP END Fixes: 69d268b4fff3 ("net/mlx5: fix RSS expansion for explicit graph node") Cc: stable@dpdk.org Signed-off-by: Lior Margalit Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5_flow.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index befad22cbb..85d755b5df 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -414,13 +414,20 @@ mlx5_flow_expand_rss(struct mlx5_flow_expand_rss *buf, size_t size, if (missed_item.type != RTE_FLOW_ITEM_TYPE_VOID) { next = NULL; missed = 1; - for (i = 0; node->next && node->next[i]; ++i) { + i = 0; + while (node->next && node->next[i]) { next = &graph[node->next[i]]; if (next->type == missed_item.type) { flow_items[0].type = missed_item.type; flow_items[1].type = RTE_FLOW_ITEM_TYPE_END; break; } + if (next->node_flags & MLX5_EXPANSION_NODE_EXPLICIT) { + node = next; + i = 0; + } else { + ++i; + } next = NULL; } } @@ -8150,17 +8157,21 @@ mlx5_flow_expand_rss_adjust_node(const struct rte_flow_item *pattern, const struct mlx5_flow_expand_node *node) { const struct rte_flow_item *item = pattern + item_idx, *prev_item; - switch (item->type) { - case RTE_FLOW_ITEM_TYPE_VXLAN: + + if (item->type == RTE_FLOW_ITEM_TYPE_VXLAN && + node != NULL && + node->type == RTE_FLOW_ITEM_TYPE_VXLAN) { + /* + * The expansion node is VXLAN and it is also the last + * expandable item in the pattern, so need to continue + * expansion of the inner tunnel. + */ MLX5_ASSERT(item_idx > 0); prev_item = pattern + item_idx - 1; MLX5_ASSERT(prev_item->type == RTE_FLOW_ITEM_TYPE_UDP); if (mlx5_flow_is_std_vxlan_port(prev_item)) return &graph[MLX5_EXPANSION_STD_VXLAN]; - else - return &graph[MLX5_EXPANSION_L3_VXLAN]; - break; - default: - return node; + return &graph[MLX5_EXPANSION_L3_VXLAN]; } + return node; } -- 2.25.1