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 C332EA0032 for ; Wed, 16 Mar 2022 16:15:45 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9295140395; Wed, 16 Mar 2022 16:15:45 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id E9D9840395 for ; Wed, 16 Mar 2022 16:15:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1647443743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=DQTlH9Dgn+nwGmdnQXRFp/LrEWBMaMXWcLVKf5quP2A=; b=YJwgzJcJBQYJoZbmV/6MVzY40rwAJFdl++GHUKV0Q0XN40N5w8JUxZIKjwB8MdbbMXnRuk TFHL5l/zaCDi6HarOdwzDdSIpySfhybEkS4JwfSWVhC71SaWGGTPM22+cspoDV60Vc8H3+ de2aqMoByUc0UgbuoYvtbq6hX+pak1w= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-354-2tqeaGaWN86heyIkH93G4g-1; Wed, 16 Mar 2022 11:15:36 -0400 X-MC-Unique: 2tqeaGaWN86heyIkH93G4g-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 647AA1C168EF; Wed, 16 Mar 2022 15:15:36 +0000 (UTC) Received: from rh.redhat.com (unknown [10.39.195.131]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8F8AA401053; Wed, 16 Mar 2022 15:15:35 +0000 (UTC) From: Kevin Traynor To: Dariusz Sosnowski Cc: Viacheslav Ovsiienko , dpdk stable Subject: patch 'net/mlx5: fix VLAN push action validation' has been queued to stable release 21.11.1 Date: Wed, 16 Mar 2022 15:15:02 +0000 Message-Id: <20220316151524.1242199-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.10 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" 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 Hi, FYI, your patch has been queued to stable release 21.11.1 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 03/21/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/0d0b9a3c5b81592d9b2a4153e96016f140638365 Thanks. Kevin --- >From 0d0b9a3c5b81592d9b2a4153e96016f140638365 Mon Sep 17 00:00:00 2001 From: Dariusz Sosnowski Date: Wed, 9 Mar 2022 09:39:20 +0000 Subject: [PATCH] net/mlx5: fix VLAN push action validation [ upstream commit 7c0c63c9a53964d40b27da618ab94303f28ea92e ] Flow domain and direction was validated when OF_PUSH_VLAN action appears in flow actions. Flow was rejected whenever this action: - was used in NIC domain, in ingress direction; - was used in FDB domain, in ingress direction, on ConnectX-5. This validation logic rejected a valid case when the OF_PUSH_VLAN action was used when directing traffic to the hairpin queue, configured in TX implicit mode. This patch moves code responsible for OF_PUSH_VLAN validation of domain and direction from flow_dv_validate_push_vlan() to flow_dv_validate(). Domain and direction are now validated when either non-hairpin queue is used or hairpin queue is configured in Tx explicit mode. Fixes: 96f85ec489db ("net/mlx5: check VLAN push/pop support") Signed-off-by: Dariusz Sosnowski Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5_flow_dv.c | 46 ++++++++++++++++----------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 28843fe9e6..b8a4edae65 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -2878,6 +2878,4 @@ flow_dv_validate_action_push_vlan(struct rte_eth_dev *dev, const struct rte_flow_action_of_push_vlan *push_vlan = action->conf; const struct mlx5_priv *priv = dev->data->dev_private; - struct mlx5_dev_ctx_shared *sh = priv->sh; - bool direction_error = false; if (push_vlan->ethertype != RTE_BE16(RTE_ETHER_TYPE_VLAN) && @@ -2891,20 +2889,4 @@ flow_dv_validate_action_push_vlan(struct rte_eth_dev *dev, "wrong action order, port_id should " "be after push VLAN"); - /* Push VLAN is not supported in ingress except for CX6 FDB mode. */ - if (attr->transfer) { - bool fdb_tx = priv->representor_id != UINT16_MAX; - bool is_cx5 = sh->steering_format_version == - MLX5_STEERING_LOGIC_FORMAT_CONNECTX_5; - - if (!fdb_tx && is_cx5) - direction_error = true; - } else if (attr->ingress) { - direction_error = true; - } - if (direction_error) - return rte_flow_error_set(error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ATTR_INGRESS, - NULL, - "push vlan action not supported for ingress"); if (!attr->transfer && priv->representor) return rte_flow_error_set(error, ENOTSUP, @@ -7999,4 +7981,26 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, NULL, "encap and decap " "combination aren't supported"); + /* Push VLAN is not supported in ingress except for NICs newer than CX5. */ + if (action_flags & MLX5_FLOW_ACTION_OF_PUSH_VLAN) { + struct mlx5_dev_ctx_shared *sh = priv->sh; + bool direction_error = false; + + if (attr->transfer) { + bool fdb_tx = priv->representor_id != UINT16_MAX; + bool is_cx5 = sh->steering_format_version == + MLX5_STEERING_LOGIC_FORMAT_CONNECTX_5; + + if (!fdb_tx && is_cx5) + direction_error = true; + } else if (attr->ingress) { + direction_error = true; + } + if (direction_error) + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ATTR_INGRESS, + NULL, + "push VLAN action not supported " + "for ingress"); + } if (!attr->transfer && attr->ingress) { if (action_flags & MLX5_FLOW_ACTION_ENCAP) @@ -8006,10 +8010,4 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, NULL, "encap is not supported" " for ingress traffic"); - else if (action_flags & MLX5_FLOW_ACTION_OF_PUSH_VLAN) - return rte_flow_error_set - (error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ACTION, - NULL, "push VLAN action not " - "supported for ingress"); else if ((action_flags & MLX5_FLOW_VLAN_ACTIONS) == MLX5_FLOW_VLAN_ACTIONS) -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-03-16 15:14:12.153294298 +0000 +++ 0001-net-mlx5-fix-VLAN-push-action-validation.patch 2022-03-16 15:14:12.050847415 +0000 @@ -1 +1 @@ -From 7c0c63c9a53964d40b27da618ab94303f28ea92e Mon Sep 17 00:00:00 2001 +From 0d0b9a3c5b81592d9b2a4153e96016f140638365 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 7c0c63c9a53964d40b27da618ab94303f28ea92e ] + @@ -23 +24,0 @@ -Cc: stable@dpdk.org @@ -32 +33 @@ -index 29751e7eda..1746ef37bd 100644 +index 28843fe9e6..b8a4edae65 100644 @@ -35 +36 @@ -@@ -2874,6 +2874,4 @@ flow_dv_validate_action_push_vlan(struct rte_eth_dev *dev, +@@ -2878,6 +2878,4 @@ flow_dv_validate_action_push_vlan(struct rte_eth_dev *dev, @@ -42 +43 @@ -@@ -2887,20 +2885,4 @@ flow_dv_validate_action_push_vlan(struct rte_eth_dev *dev, +@@ -2891,20 +2889,4 @@ flow_dv_validate_action_push_vlan(struct rte_eth_dev *dev, @@ -63 +64 @@ -@@ -7997,4 +7979,26 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, +@@ -7999,4 +7981,26 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, @@ -90 +91 @@ -@@ -8004,10 +8008,4 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, +@@ -8006,10 +8010,4 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,