From patchwork Wed Mar 9 09:39:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dariusz Sosnowski X-Patchwork-Id: 108615 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9D17EA0093; Wed, 9 Mar 2022 10:40:21 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 234E640687; Wed, 9 Mar 2022 10:40:21 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2084.outbound.protection.outlook.com [40.107.93.84]) by mails.dpdk.org (Postfix) with ESMTP id B002440395; Wed, 9 Mar 2022 10:40:19 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aJfC90bwCS1SwNi9APTCuouMyFafbCwmekdNXN1oCuTpZMvFBkWaspj2EgL2Kx95C2JS5C7EKIrX40LuO3WJk3nZyjd0aW4jLLUIWrRPXecYOjxG5MZaUs6Ejg6L8/5kMBzfc03u/sZYY8YO/BB3k2MhOLfW8NAd5hnuNjrC0+IAyYyVnjSUEP7/tCM8sbXZfpi6EdgkUYwMU3B5SfcpBS5tb8jFgtL0x7m4xdYRjeg3hd4sRfC+54Y+69XJ+tKWQRp3Oq7NaiuFRXP5ekNu4G87anKN2QFHB3P4wZtdXIiOuctxJwSHzJdx5kLE2a0eG4i9aj4yLGBeivB38WOoBg== 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=aSzSMnQGFXNtlNUe5WtBItshu/cH5SKsBkuM/ky28CI=; b=fKcBmUM7y68vo0ONONOoBj7MGtLQ42b4CUI7HF1cgLEYkLUDJnR0hMvl3j1ux98fKLG34DXzPxxrVKldtiYifXxm2xupiDTbob9e7bTd/3qEc1cZPZAI6ZAhu3wei8zp2/J1n7/hA4ZRKk7sF8th+IeEhx4RB4kb0OXNDrWdRu+coQv8/uqohTbn96zurKr/ZqC0hrUGsltRgdccPHwjtiza28A2hlXoAGS3ZHFudlm6oVVySEcGZTBNYTT3imAP0bSloMecEmW5Nz48rcCpv0uTbCaf4gRPSjcLcgg8uTugsUxV8SgpR3I9PYIjAKUDii2K61cm+S2cq9ODM3S77g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject 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=aSzSMnQGFXNtlNUe5WtBItshu/cH5SKsBkuM/ky28CI=; b=n1VF4zAWpSgQXIjCvi9kXsVzRrPe9f7dJVVE0sLa6xTvK963Zwt4CTgcfov1/HTpsLloz54aB7693neMc3V/eCpulI7Cn0l7ZZ/zua7wutUG5bmnfjCCve+VliwurbGJxmxr74T1NALOaHNLc+6BrXadqDuuDIHWlXC+LKi8VvQd9hgNCD0i7/S+Vc2GdbfifXq6xf4De/nWuwb1I/RmdMKt8vB/RqW7xp5ZgLi59HpORPJpnsgSBQ0aEDASqHiCGJOTLfynR4e+AASFwKNwAfMeA+hTaB/8m2M8Fsu8SZN9yuz/zKki4QviKgzSVA1k+es5VDZv6Tr7iXPIpFNg9Q== Received: from MWHPR14CA0002.namprd14.prod.outlook.com (2603:10b6:300:ae::12) by DM6PR12MB4140.namprd12.prod.outlook.com (2603:10b6:5:221::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.16; Wed, 9 Mar 2022 09:40:17 +0000 Received: from CO1NAM11FT012.eop-nam11.prod.protection.outlook.com (2603:10b6:300:ae:cafe::bc) by MWHPR14CA0002.outlook.office365.com (2603:10b6:300:ae::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14 via Frontend Transport; Wed, 9 Mar 2022 09:40:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) 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 12.22.5.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.238) by CO1NAM11FT012.mail.protection.outlook.com (10.13.175.192) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5038.14 via Frontend Transport; Wed, 9 Mar 2022 09:40:16 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Wed, 9 Mar 2022 09:40:16 +0000 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.9; Wed, 9 Mar 2022 01:40:14 -0800 From: Dariusz Sosnowski To: Matan Azrad , Viacheslav Ovsiienko , Dong Zhou CC: , Raslan Darawsheh , Subject: [PATCH] net/mlx5: fix push VLAN action validation Date: Wed, 9 Mar 2022 09:39:20 +0000 Message-ID: <20220309093920.979934-1-dsosnowski@nvidia.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 910997be-253c-42e1-22c9-08da01b0d188 X-MS-TrafficTypeDiagnostic: DM6PR12MB4140:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oLJ32afVdwmTDxNF/PQ65/iHwBH7YPGhyM+f+GMR9FjV6rUqgdCJZFqJpHL3L1Ir6CsttxwT6Yqg+gJOt3Yz3Dmemz1OYtfrHfQ0Wy5RDFt4O/ZvTfPi4qwBO4LAb0JV+tLw2sxqSMe6mBFCdjJ0qEEnmWVQ6MP0yUV1ttiR8aM3j2eKhNpteXEi73702psZPx3wH6NPuSQpArqQcAhDe3ArbH+LxpaSZiWQbJJhovWRM3IsGtw+Mq6NGQP6Zphy2L19x8jH5vDioKXl0OPbma+WKeKCi5M/A4TB9sNmpfj7i/pEdS9iAUXbwI+9cvx5UsM+/4jupTXJ2LjAwUMvGNN0KhcRtTKlwm8PvWg1UO+g+Txvog6OywqLq0Ps3Y1VrkvYjVqbH5GxLV3oj90yXMNKP4Zu3fNkR53ybvg+BhVJp1P3vykdq/Y379AtBCIkrTk06ADpN7AbIxLfMCWpqy5DeceSXa5WKjozpL/z7nMJWApX4/wkPbJlkHs1g7mPvckcQHeTZloFi0A3YLj/Qas9QZyICIBpZOMdy0/uEy/w5SKFs+Yj+opMMq/3ik1HR4cmCRliT3ds1Rf/Zf00q5vZ6uuCDXT86wth3wREDhYcbYVFSWr9UjFgU/rEnL+4TJwTSpkzhAt49mTRU7EqFQ9zwHm1so7XmhCcxDGWCy8zCs0/DFBfvSx7+G91AJAJKhnuyf5IQ4teSakBqiX4bQ== X-Forefront-Antispam-Report: CIP:12.22.5.238; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(46966006)(36840700001)(40470700004)(8936002)(4326008)(8676002)(70206006)(70586007)(47076005)(110136005)(54906003)(6636002)(40460700003)(450100002)(5660300002)(316002)(55016003)(2906002)(36756003)(7696005)(186003)(2616005)(1076003)(16526019)(426003)(36860700001)(26005)(6286002)(86362001)(6666004)(82310400004)(508600001)(81166007)(83380400001)(336012)(356005)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2022 09:40:16.6640 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 910997be-253c-42e1-22c9-08da01b0d188 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.238]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT012.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4140 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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") Cc: dongzhou@nvidia.com Cc: stable@dpdk.org 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 29751e7eda..1746ef37bd 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -2873,8 +2873,6 @@ 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) && push_vlan->ethertype != RTE_BE16(RTE_ETHER_TYPE_QINQ)) @@ -2886,22 +2884,6 @@ flow_dv_validate_action_push_vlan(struct rte_eth_dev *dev, RTE_FLOW_ERROR_TYPE_ACTION, action, "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, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, @@ -7996,6 +7978,28 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, RTE_FLOW_ERROR_TYPE_ACTION, 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) return rte_flow_error_set @@ -8003,12 +8007,6 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, RTE_FLOW_ERROR_TYPE_ACTION, 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) return rte_flow_error_set