From patchwork Fri Sep 8 09:20:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawei Wang X-Patchwork-Id: 131262 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 3FF4B42546; Fri, 8 Sep 2023 11:21:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 587A3402E9; Fri, 8 Sep 2023 11:21:39 +0200 (CEST) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2049.outbound.protection.outlook.com [40.107.212.49]) by mails.dpdk.org (Postfix) with ESMTP id 2D483402E0 for ; Fri, 8 Sep 2023 11:21:38 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rn6gdPzVVGdUFFs1uQrrZV+Ujd8vhDF/45Ga0R87FUlsqOM978RXvSVrPrPzWdSe6uL3v6IXmhtlEnArKjKcMGjo1X1Pha52ew+7KyJ9UgsSuw6g3aedkE8JT3gmnTYIu0SMsuMK9rs+h1UUSAfmHe0Q5/PQrd2M3fWbNVfPyhn5wUD6wIRa2zWHpODsSldE/83fulcO4Y0r4RggWneucXrCZd7SDDFI/1pOHquYs5VTc3EjZLmPTbKWIJ4un8zjxmSwEjh8XENfZZ1AfpV0qnyYsJS9URnh5BuOQ0g8716Rpsmna8LTWP0SUmZDNDFIlSRF1Fy8B9Nso63R7A6Knw== 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=y6EbfxmL7LDjAF7UXtLC0CHK8QnxSGh3LIfoac9oy6g=; b=XBYiS7dtBMPhDIPcErGs3hrJgUrqbZBl2U2m2T1PLXH6PJhSqp5PzuUVQZ+qdkbYn6I493RWRAh4qgmQ7XvJ8VewQ6/oJYvv3v6saa8VxjEydii9QlVsTOxzUaWb/JVXhrczklqCRTfMRRW4+LxIO5WlGbMQNT6Ibt0LV+u0Gp1hBj6oewmuvwpnLchs7/WUN2oVz+gbQuFnHMFQfOmhaKuoss7XlXPlmKEEYrAHFNDTQNjc3mYzzvGcI1a0Tmombe+TNfYYSV7aI7tSzpixjlTEKXgez1AKo+MyoJjXujNDcqsCQCpnvPD/tpMnbh49m4bK9knsXSpY7s8etJMGuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=monjalon.net 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=y6EbfxmL7LDjAF7UXtLC0CHK8QnxSGh3LIfoac9oy6g=; b=FYj3/hnI7nJRu5wFYHFOukF1G1din4oz5Mi8vpjaymyKm8VkGZkUL/oGB/pInlg7LN/nkA4e4rFZXg6WoozXE9iIC+jEUm+Wy/KbJ4Cl5zrNamnhZZu5NXBVSvs45E/qqzzilP3W1LgsKb8Tv1Le7vx68qYw9frdVxZtUqf+RIxNJOxjguXvbYx2w4r7MulJcLoJAE+sauI0w5qzNAGMhysopmoedTXav7J/S3vHEm/sSTfoLuf0cULeMGIEAU18mRJ1Wp7yOlANdvdW6eGuqZzmSELWzmZT9u9+eVnGKNz8C5RSTynCjWAI3K60Kkoto54Se9qGVXintGDQQGFQ4w== Received: from CY5PR14CA0018.namprd14.prod.outlook.com (2603:10b6:930:2::18) by PH7PR12MB7914.namprd12.prod.outlook.com (2603:10b6:510:27d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.30; Fri, 8 Sep 2023 09:21:35 +0000 Received: from CY4PEPF0000FCBE.namprd03.prod.outlook.com (2603:10b6:930:2:cafe::80) by CY5PR14CA0018.outlook.office365.com (2603:10b6:930:2::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.30 via Frontend Transport; Fri, 8 Sep 2023 09:21:35 +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 CY4PEPF0000FCBE.mail.protection.outlook.com (10.167.242.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.25 via Frontend Transport; Fri, 8 Sep 2023 09:21:34 +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.5; Fri, 8 Sep 2023 02:21:25 -0700 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.37; Fri, 8 Sep 2023 02:21:23 -0700 From: Jiawei Wang To: , , CC: , Subject: [PATCH 2/3] net/mlx5: extend hws send to kernel action support Date: Fri, 8 Sep 2023 12:20:59 +0300 Message-ID: <20230908092100.38587-3-jiaweiw@nvidia.com> X-Mailer: git-send-email 2.18.1 In-Reply-To: <20230908092100.38587-1-jiaweiw@nvidia.com> References: <20230908092100.38587-1-jiaweiw@nvidia.com> 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-TrafficTypeDiagnostic: CY4PEPF0000FCBE:EE_|PH7PR12MB7914:EE_ X-MS-Office365-Filtering-Correlation-Id: bf78d317-28b7-4cc6-0a1f-08dbb04cff31 X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1rLfQqTzXo4mfPs/3aAD6n5gRO4mSxmdF3ze3tyokgcKNb0C895WM3Y0OOf87k8IB5PVeJXDx2jzwoaGqBMEPG1HRJhOUntuiaiW5kUC5R/FlWgaOfzabIoB9WDV449DmZLJK1HdQg28fvTVv4jhh3myXKVjIbcqBMKraMSn9wiRWn/2qbMMkKXUuoZZf8lxWUpl7spJxwDHfcY2Ez5e9wQS9OauI9uyCUX/cTvBx2L1rPJt4Pwr/Am7V/YnldK/mayI3VdDO2Dwbb1u2f8S8+MjPEE2ByDo/7Hr824AIt3Vva9jjV+6uQ2kgNiNI8zBH+8o2HYI8RIZAap3nr6MEpRk1zXWcQ2DM+6B8/FRrmx2zCf+OdctZfK2PQ7XZglaG4k4JVAKs1iTbjnuOFSpNI+ofuA4ChQGeeUCUBMRDbxCTHalwNKqBlAFpay7ookzbJgnn25S78XxYAkiMSgmyKmLI+gZjj6gTy34yLke5qisE4iwC7PO+iJGSfnuRDvYtbeyMAFaww0kTHh6hy9sfC4l4lhdJi02sjo1+s/WqrC/39FgHiB7INQxp5ha8IBe078YExmFu70U1ipN+8s2qHDubtIy90tjtJ760+ycm2ZunlYsfmiQHdzpq3p6a8O+UcBj3QMPiPRJ+OPR2kwNzgrqxS5AQK0D8q3FhzCSf/ZB+FatVBAK1qVd+tdF6yAz3Cx8psgthr74r9Gz2X/r2pTvvH+whyW4KJyu4ji4q5Ky+18+GAbkyeuN6i8iTJxG 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:(13230031)(4636009)(346002)(396003)(376002)(136003)(39860400002)(451199024)(82310400011)(186009)(1800799009)(46966006)(40470700004)(36840700001)(7636003)(356005)(6666004)(7696005)(40460700003)(55016003)(86362001)(36756003)(36860700001)(1076003)(82740400003)(40480700001)(47076005)(2616005)(107886003)(426003)(16526019)(2906002)(478600001)(110136005)(6286002)(26005)(336012)(83380400001)(8676002)(4326008)(8936002)(70206006)(5660300002)(70586007)(41300700001)(54906003)(316002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Sep 2023 09:21:34.7057 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bf78d317-28b7-4cc6-0a1f-08dbb04cff31 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: CY4PEPF0000FCBE.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7914 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 The hws send to kernel action was supported in NIC and FDB tables, Currently, the send to kernel action is created in NIC RX only. This patch adds the FDB and NIC-TX tables support for sending to the kernel action for HWS. Signed-off-by: Jiawei Wang Acked-by: Suanming Mou --- drivers/net/mlx5/mlx5.h | 2 +- drivers/net/mlx5/mlx5_flow_hw.c | 45 +++++++++++++++++++++++---------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 6960a07d40..d49b81a360 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -1858,7 +1858,7 @@ struct mlx5_priv { /* HW steering global tag action. */ struct mlx5dr_action *hw_tag[2]; /* HW steering global send to kernel action. */ - struct mlx5dr_action *hw_send_to_kernel; + struct mlx5dr_action *hw_send_to_kernel[MLX5DR_TABLE_TYPE_MAX]; /* HW steering create ongoing rte flow table list header. */ LIST_HEAD(flow_hw_tbl_ongo, rte_flow_template_table) flow_hw_tbl_ongo; struct mlx5_indexed_pool *acts_ipool; /* Action data indexed pool. */ diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index 92a5c92669..84d869a686 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -1439,6 +1439,7 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, uint32_t ct_idx; int err; uint32_t target_grp = 0; + int table_type; flow_hw_modify_field_init(&mhdr, at); if (attr->transfer) @@ -1635,7 +1636,10 @@ __flow_hw_actions_translate(struct rte_eth_dev *dev, "Send to kernel action on root table is not supported in HW steering mode"); } action_pos = at->actions_off[actions - at->actions]; - acts->rule_acts[action_pos].action = priv->hw_send_to_kernel; + table_type = attr->ingress ? MLX5DR_TABLE_TYPE_NIC_RX : + ((attr->egress) ? MLX5DR_TABLE_TYPE_NIC_TX : + MLX5DR_TABLE_TYPE_FDB); + acts->rule_acts[action_pos].action = priv->hw_send_to_kernel[table_type]; break; case RTE_FLOW_ACTION_TYPE_MODIFY_FIELD: err = flow_hw_modify_field_compile(dev, attr, action_start, @@ -4345,8 +4349,11 @@ mlx5_flow_hw_actions_validate(struct rte_eth_dev *dev, const struct rte_flow_action_count *count_mask = NULL; bool fixed_cnt = false; uint64_t action_flags = 0; - uint16_t i; bool actions_end = false; +#ifdef HAVE_MLX5DV_DR_ACTION_CREATE_DEST_ROOT_TABLE + int table_type; +#endif + uint16_t i; int ret; /* FDB actions are only valid to proxy port. */ @@ -4397,7 +4404,10 @@ mlx5_flow_hw_actions_validate(struct rte_eth_dev *dev, RTE_FLOW_ERROR_TYPE_ACTION, action, "action not supported in guest port"); - if (!priv->hw_send_to_kernel) + table_type = attr->ingress ? MLX5DR_TABLE_TYPE_NIC_RX : + ((attr->egress) ? MLX5DR_TABLE_TYPE_NIC_TX : + MLX5DR_TABLE_TYPE_FDB); + if (!priv->hw_send_to_kernel[table_type]) return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, action, @@ -5955,13 +5965,19 @@ static void flow_hw_create_send_to_kernel_actions(struct mlx5_priv *priv __rte_unused) { #ifdef HAVE_MLX5DV_DR_ACTION_CREATE_DEST_ROOT_TABLE - priv->hw_send_to_kernel = - mlx5dr_action_create_dest_root(priv->dr_ctx, - MLX5_HW_LOWEST_PRIO_ROOT, - MLX5DR_ACTION_FLAG_HWS_RX); - if (!priv->hw_send_to_kernel) { - DRV_LOG(WARNING, "Unable to create HWS send to kernel action"); - return; + int action_flag; + int i; + + for (i = MLX5DR_TABLE_TYPE_NIC_RX; i < MLX5DR_TABLE_TYPE_MAX; i++) { + action_flag = mlx5_hw_act_flag[1][i]; + priv->hw_send_to_kernel[i] = + mlx5dr_action_create_dest_root(priv->dr_ctx, + MLX5_HW_LOWEST_PRIO_ROOT, + action_flag); + if (!priv->hw_send_to_kernel[i]) { + DRV_LOG(WARNING, "Unable to create HWS send to kernel action"); + return; + } } #endif } @@ -5969,9 +5985,12 @@ flow_hw_create_send_to_kernel_actions(struct mlx5_priv *priv __rte_unused) static void flow_hw_destroy_send_to_kernel_action(struct mlx5_priv *priv) { - if (priv->hw_send_to_kernel) { - mlx5dr_action_destroy(priv->hw_send_to_kernel); - priv->hw_send_to_kernel = NULL; + int i; + for (i = MLX5DR_TABLE_TYPE_NIC_RX; i < MLX5DR_TABLE_TYPE_MAX; i++) { + if (priv->hw_send_to_kernel[i]) { + mlx5dr_action_destroy(priv->hw_send_to_kernel[i]); + priv->hw_send_to_kernel[i] = NULL; + } } }