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 96748A054F for ; Sat, 26 Nov 2022 17:03:39 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 907EA40150; Sat, 26 Nov 2022 17:03:39 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2064.outbound.protection.outlook.com [40.107.93.64]) by mails.dpdk.org (Postfix) with ESMTP id 5458840041 for ; Sat, 26 Nov 2022 17:03:38 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X8Zm8BAQFJI6o3jint12+PMelJyPjsnNRfyjE5wXZDLcGvpkeTwy/sKmBAabF/1g9+6u87N5V0ZmceL7Cw62RHQDcr2xR/QBqd7Z94RfYh1eNm1oyt3tOGA/tus7u1WDdt3zmLpNYKMr4dy5W7YNOHHsgmXqp1Io2W67mR5vKlZMcfTV8roe3u8TbTNpHZ4icrLbJdc8QiV783Oxz2OJEu+XPZ00bmw1hrq9+WM8FjudsYcke1aw9EKBA9QdCxwWiGHO1aL8V4UbSHXWJNbn2VXJcnDh8xKCy/eZ6Nx43NCdaibOPalQ+m/YmkIqLJQlH8dUjvVMMmB1A2jhwQY4UA== 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=gkFtSgpRT509bOZAAD/+ENeZ/f+lxdpiYi0WkOF1YkI=; b=GNHKNqOQ4m0edk7KfMXk26N74EW8EwkMbPQYhk90D541Nw7Lw+yOo1P/2ocLugNM8xiOCpmJlr2PXKV4AW5vcBDejyZM+XgvXIAqreJBqHL5pMkCZWtnI9uoBZ1jMt+q0QKWS1Y+n+3kDDMI1baGi5XOGBSaTM9PqOIjzwVTwpPF62vDOxlsstLv97mVRz0Nf1G9TzzGARmsK7akkAMwE2hzZNJOjaZQbBD3qom6QtoKjq2TCtou8WvqPYnUrddJ2MeLgLKxUeOW5aY+XsYmqsqWb4fOgLyp8mQ1sxtQMNIOlF7OXK2QIxKp1CW7yNQOdVkw81a6AzwsZYuHIfpbXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=redhat.com 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=gkFtSgpRT509bOZAAD/+ENeZ/f+lxdpiYi0WkOF1YkI=; b=NzPaQg4hwILsXA8i0AtqbRJnzJr7AyqIOjHSO/KxSwS5BZKNcqA7rxQHCP0y2qfpKYTGR4wCcqf6D1hx6YNavT1+w1ArMEHd5qloNiqq6NPhP4MN5JGeklGhqRmJCS/R2nFeTM6HfwYIegrSs+X+BtPrs9S9AY3fCj6GnAml2FuEUGksvgqTuNF/QY9mjO8yED2qoHh8vfHHMk0+tfOLI3WMK+uhEZD1VZvcbUDqNS2MimoS+qMn4z+m47SLfZIjzRMieHvZgmxBeadtuLXFAMEOLSEoJQWvyIWuDcTNz68L41WocqHB1o0/RVad/YIHFQnmy6m8snzPvkf5FgvOqA== Received: from MW4PR03CA0233.namprd03.prod.outlook.com (2603:10b6:303:b9::28) by CH0PR12MB5330.namprd12.prod.outlook.com (2603:10b6:610:d5::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.21; Sat, 26 Nov 2022 16:03:36 +0000 Received: from CO1NAM11FT104.eop-nam11.prod.protection.outlook.com (2603:10b6:303:b9:cafe::39) by MW4PR03CA0233.outlook.office365.com (2603:10b6:303:b9::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.21 via Frontend Transport; Sat, 26 Nov 2022 16:03:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by CO1NAM11FT104.mail.protection.outlook.com (10.13.174.220) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.17 via Frontend Transport; Sat, 26 Nov 2022 16:03:36 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.36; Sat, 26 Nov 2022 08:03:24 -0800 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.36; Sat, 26 Nov 2022 08:03:21 -0800 From: Jiawei Wang To: , , Matan Azrad , Dekel Peled CC: , Subject: [PATCH 21.11 2/2] net/mlx5: fix mirror flow validation with ASO action Date: Sat, 26 Nov 2022 18:02:52 +0200 Message-ID: <20221126160252.48521-3-jiaweiw@nvidia.com> X-Mailer: git-send-email 2.18.1 In-Reply-To: <20221126160252.48521-1-jiaweiw@nvidia.com> References: <20221126160252.48521-1-jiaweiw@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail202.nvidia.com (10.129.68.7) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1NAM11FT104:EE_|CH0PR12MB5330:EE_ X-MS-Office365-Filtering-Correlation-Id: 8f9267b1-2532-4cb8-9857-08dacfc7c6a3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eqULFENUyLb5eRMgLkxftG8McneIt/G0J50tA/XZh0IIbWOHoiAlXOvzBWWMDoWq9MejaZqUBaNEQdX9ZSUGY+nvnrOkIZqQqhyeWNzDhvHOFdq4XdTSA2aRsy6zN8l6VAGrYFiEdI+qtkEB4yYLjTFQ9ssPOKQ+8Y1eyU/t12q1R103FiMudD2EtNQf4DO5RV8/+flV1YTelziZRkDwJmRCMw9l2QMSgdXLfyxLrlbBlQPwHB7vXU3khyBYfwcuGVxF4wmNlbB5sM8cDQKdFspwl0DG3Ig2B4UnsiSu7E5VHWn7WH7zhw1XSt2W266ERj4MN7xysV3Ll6TkrWjQAglHflBI0VTId+YBfeHTOU1l1ANr8RbKZwALGqpIiwmfJSIWq4vP5d5FVSAAbB5dUx2J9WvTMIvzrGuAnGZnXylC6GdFFcMd71IYIS09XU2qWF7sw3Hsiie2GFwMAaTFjHhBB87NX7FNOxEMfpzK7InqAyf8nuWun9q6/qIE/1M32qnomWUcvsFxO1n6ID8f5aY33R/DCz4/lYk87dms8wrySSZ9lpPiPMlmw0AvSyZ+vuwkPzmaIueR3gBZrdkSMbR7QCEjAnjd4KrEf0tIdWIX0CBFJb3fCnMcx9r9vR25pG4V+b6iQeK+BBst/9nuXdYbBx2yyOTiqAzLvWCG9F4o9iSmPd7rnrXOWKuhVSzYgSaPsgpL4SORCvEakUq3vw== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230022)(4636009)(39860400002)(376002)(346002)(396003)(136003)(451199015)(46966006)(36840700001)(40470700004)(2906002)(40480700001)(7636003)(70206006)(8676002)(41300700001)(5660300002)(36756003)(55016003)(316002)(83380400001)(426003)(47076005)(8936002)(54906003)(110136005)(6636002)(70586007)(4326008)(82740400003)(478600001)(7696005)(356005)(107886003)(6666004)(86362001)(82310400005)(1076003)(186003)(2616005)(6286002)(40460700003)(336012)(16526019)(36860700001)(26005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Nov 2022 16:03:36.2835 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8f9267b1-2532-4cb8-9857-08dacfc7c6a3 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT104.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5330 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 3e13a6ae95c52267852691f3114e26a7077a6b35 ] While the ASO action(AGE, CT) with the sample action in the one E-switch mirror flow, due to hardware limitation, the ASO action after the sample action was not supported. This patch adds the checking for this validation and reject the flows with aso action after sample. Fixes: f935ed4b645a ("net/mlx5: support flow hit action for aging") Signed-off-by: Jiawei Wang --- drivers/net/mlx5/mlx5_flow_dv.c | 53 ++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 7dfae06aae..2d8a105678 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -5534,8 +5534,8 @@ flow_dv_modify_clone_free_cb(void *tool_ctx, struct mlx5_list_entry *entry) * Pointer to the RSS action in sample action list. * @param[out] count * Pointer to the COUNT action in sample action list. - * @param[out] fdb_mirror_limit - * Pointer to the FDB mirror limitation flag. + * @param[out] fdb_mirror + * Pointer to the FDB mirror flag. * @param[out] error * Pointer to error structure. * @@ -5551,8 +5551,7 @@ flow_dv_validate_action_sample(uint64_t *action_flags, const struct rte_flow_action_rss *rss, const struct rte_flow_action_rss **sample_rss, const struct rte_flow_action_count **count, - int *fdb_mirror_limit, - struct mlx5_priv *act_priv, + int *fdb_mirror, struct rte_flow_error *error) { struct mlx5_priv *priv = dev->data->dev_private; @@ -5739,9 +5738,7 @@ flow_dv_validate_action_sample(uint64_t *action_flags, NULL, "E-Switch must has a dest " "port for mirroring"); - if (!priv->config.hca_attr.reg_c_preserve && - flow_source_vport_representor(priv, act_priv)) - *fdb_mirror_limit = 1; + *fdb_mirror = 1; } /* Continue validation for Xcap actions.*/ if ((sub_action_flags & MLX5_FLOW_XCAP_ACTIONS) && @@ -6833,7 +6830,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, uint16_t ether_type = 0; int actions_n = 0; uint8_t item_ipv6_proto = 0; - int fdb_mirror_limit = 0; + int fdb_mirror = 0; int modify_after_mirror = 0; const struct rte_flow_item *geneve_item = NULL; const struct rte_flow_item *gre_item = NULL; @@ -6899,6 +6896,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, const struct rte_flow_action_age *non_shared_age = NULL; const struct rte_flow_action_count *count = NULL; struct mlx5_priv *act_priv = NULL; + int aso_after_sample = 0; if (items == NULL) return -1; @@ -7648,12 +7646,6 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, error); if (ret) return ret; - if ((action_flags & MLX5_FLOW_ACTION_SAMPLE) && - fdb_mirror_limit) - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ACTION, - NULL, - "sample and jump action combination is not supported"); ++actions_n; action_flags |= MLX5_FLOW_ACTION_JUMP; break; @@ -7733,6 +7725,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, RTE_FLOW_ERROR_TYPE_ACTION, NULL, "duplicate age actions set"); + if (action_flags & MLX5_FLOW_ACTION_SAMPLE) + aso_after_sample = 1; action_flags |= MLX5_FLOW_ACTION_AGE; ++actions_n; break; @@ -7760,6 +7754,9 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, RTE_FLOW_ERROR_TYPE_ACTION, NULL, "old age action and count must be in the same sub flow"); + } else { + if (action_flags & MLX5_FLOW_ACTION_SAMPLE) + aso_after_sample = 1; } action_flags |= MLX5_FLOW_ACTION_AGE; ++actions_n; @@ -7802,8 +7799,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, attr, item_flags, rss, &sample_rss, &sample_count, - &fdb_mirror_limit, - act_priv, + &fdb_mirror, error); if (ret < 0) return ret; @@ -7837,6 +7833,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, error); if (ret < 0) return ret; + if (action_flags & MLX5_FLOW_ACTION_SAMPLE) + aso_after_sample = 1; action_flags |= MLX5_FLOW_ACTION_CT; break; case MLX5_RTE_FLOW_ACTION_TYPE_TUNNEL_SET: @@ -8089,11 +8087,24 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, NULL, "too many header modify" " actions to support"); } - /* Eswitch egress mirror and modify flow has limitation on CX5 */ - if (fdb_mirror_limit && modify_after_mirror) - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ACTION, NULL, - "sample before modify action is not supported"); + if (fdb_mirror) { + if (!priv->sh->cdev->config.hca_attr.reg_c_preserve && + flow_source_vport_representor(priv, act_priv)) { + /* Eswitch egress mirror and modify flow has limitation on CX5 */ + if (modify_after_mirror) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, NULL, + "sample before modify action is not supported"); + if (action_flags & MLX5_FLOW_ACTION_JUMP) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, NULL, + "sample and jump action combination is not supported"); + } + if (aso_mask > 0 && aso_after_sample && fdb_mirror) + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ACTION, NULL, + "sample before ASO action is not supported"); + } /* * Validation the NIC Egress flow on representor, except implicit * hairpin default egress flow with TX_QUEUE item, other flows not -- 2.18.1