From patchwork Tue Oct 15 16:35:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Kozyrev X-Patchwork-Id: 146021 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 4C27645B44; Tue, 15 Oct 2024 18:36:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CD821400D7; Tue, 15 Oct 2024 18:36:51 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2072.outbound.protection.outlook.com [40.107.237.72]) by mails.dpdk.org (Postfix) with ESMTP id D8346400D6 for ; Tue, 15 Oct 2024 18:36:49 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=APe+VoGnE7xBp78BP5WA93vKb5/VsvBH61j5hy2gTHL89m/0ABuHZPAOwIKzyrpTTEk3lV02biv56nJijukwkTe4f6uzNAfZy5OyHXxdCg924IV8W/kpgK8Q7RzEu5Xtv41S8VXc4l1IFamwfe/cuDJ/p6Md6g0QBCpB8tIssMzcwUb3wnb6yGF7oSaEbYJz1/nZcGNfIjrvbeZXKyhwc+xSalp5qhsUjtc0wALLvC32ZbNfLgBa6l1LC5Ew2oVeBeeC/aJg/VjLgykPsraHBXM/rPerZyyQsmfThj7qaCBY8hfIGGJCgUt3ZMEJFd+0PhN9u1bllN9arW9GGSzkLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=efdFdpgfHyldk74uvRDSpv9jWAsdlH0LRAHFIutdVsY=; b=uVyBF42ONPWGC993590l7TUpIcWVbE5wBMEXSVclsps2Jjz0pMa3Vefu326biNvr60KvY369mCPhUVzLq2AEpzQ2Jq7uTdNRuZlH1xcTuuwxCrdByrV7P6pArkzfyitGddl2AxwOx+yZ100ISO7Ty0Q7dlB7vceXJ8ftJlN4XyCVbpa/oCeBf1ZWWYIVFuawBYW6qIs2bhOowbmo9BN4EBTp9Epx4e2HujY1KlIImZStidRyJfwHOasceeqbuq0SJV+q/9J4XtDGIuTcy89PlqJ6zNFlGOc7J03ucpFvyyGZGPOXCkmN2SvhWbTiSl3O+0V+Nes/h2kVqEvqICMNHQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) 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 (0) 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=efdFdpgfHyldk74uvRDSpv9jWAsdlH0LRAHFIutdVsY=; b=p9c177WmDO/ssUwjyetn9eToRWQSM6OK6X8sAfbmCz+h2fNT5tNZmyUqHmIpZl9zRzlMO3snb3dlW95AGd8zLgA0hqnEmrNkK0foYUgxcx2l6t+GxvopYuYBQ8o7b0NnrHKvde/7IhmQbJo8IwBC87dd0wEJK/OudsnseJqlXpTKdHIiLG8IhYNCByljinIvdQ2HcFst1967JFmQCwc1ZIQsBNf75a14uc9ZAU1F9vE3kQi8f55P5J+ChnKuUJfGJ5xD0hsOeCAI6m/uiMmYSSPlxNE2EhgcJGLTwwFQrGm2PKNPz8vZyKZMT0B5ONReab5l3NKnZAKKkCxWcjrQbg== Received: from PH7P223CA0005.NAMP223.PROD.OUTLOOK.COM (2603:10b6:510:338::7) by LV8PR12MB9232.namprd12.prod.outlook.com (2603:10b6:408:182::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.21; Tue, 15 Oct 2024 16:36:44 +0000 Received: from CY4PEPF0000EE30.namprd05.prod.outlook.com (2603:10b6:510:338:cafe::23) by PH7P223CA0005.outlook.office365.com (2603:10b6:510:338::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18 via Frontend Transport; Tue, 15 Oct 2024 16:36:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) 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.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE30.mail.protection.outlook.com (10.167.242.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.17 via Frontend Transport; Tue, 15 Oct 2024 16:36:43 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 15 Oct 2024 09:36:28 -0700 Received: from pegasus01.mtr.labs.mlnx (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.1544.4; Tue, 15 Oct 2024 09:36:25 -0700 From: Alexander Kozyrev To: CC: , , , , , , , , Subject: [PATCH 2/5] net/mlx5/hws: introduce jump to matcher action Date: Tue, 15 Oct 2024 19:35:54 +0300 Message-ID: <20241015163557.581447-2-akozyrev@nvidia.com> X-Mailer: git-send-email 2.18.2 In-Reply-To: <20241015163557.581447-1-akozyrev@nvidia.com> References: <20241015163557.581447-1-akozyrev@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE30:EE_|LV8PR12MB9232:EE_ X-MS-Office365-Filtering-Correlation-Id: d927c8c5-8626-49a8-232b-08dced378d76 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|82310400026|1800799024; X-Microsoft-Antispam-Message-Info: 0WRXnGy/dfxre8nvmbNTVUuSle4SNBn+M3eYP7U1FphPHs46xeuW7MN3cu2AGv9rugzNfzE8hA6HGSVARQDnsBM4kClrhJqHfsL4Yyd94zqul3lTMX7FLJ1oO822bvosHKMKynzN2WMYvnFOjVmaaleO4B6MS9PbwxGHfyaqn2vY5PzbDR+izsFJDu+vRDzxDnoCcZFc60I0sofKrIZbb9Tl19jPs84ujw0khg2vYBb9vLoLdS/CwR9Im/BAFgoMRzfh6kFzCOJ8quBnovFDPUIT66UvlB0Z4zi2Zp1asx+NHhzwk/ZmlnYRdvS2RWlCCK5WVjLLAGimP3lJki6F8Tj88fvKkRQI1pYNYu5HoFC4BJROoobDbVXSi5EezVSACkHo9RgETVTKXOIS1LIcslPrCI4xRDjLTqjhritNeU3+rh9IvSl2qiNhGZ87ySyQwVzs5mnhKvF4ugCKdeP0wpQT4c1t6aRbM5H/XRESAKzhEYUvTGX37w7lc93VtPmXtlNr9Lzf8NffdT5AVZV50cm7dyy4cn/YuLOEP+ohvz7IFTi4bHEqlMycsUsLNbPDqkC5IGdoX5xUqTWb80G9a27YBGUoddiTlWv4kU3QJ1TLKTyAr5C+1bF+4DUd40b/INtu+JzyhitXORGC7S4q11bu6zd6EWVUasr2fqkCL6n85Wxtx+P8ledK7TfWFPKXWszFRgOJtntBEpoWjn6TDXiK2UdjxNVRcdC8rUxSN/NngZHOAEm6dsw5J/UnjVzwfC/Z52TnwXHPf/QpjAnHgjtN632TEabqoKEFaFErTPlFaBS/hPFMW5lCM/eOOTj+zukV8C2FRWYFaA1qO/N9F/g/yuypQGjKf1RDpO9ERASfsAccGfVouNG+DjL/1brmrm8xEhNdjQWlYhyrASesoBl4UmV8VBVo1q4Xxf0LfI+Z/QWc1ER/HfM2nGwkzkzlVWDEostj56aKwf6uInrcfIKyZU/C4ikQ9JpkTVLJaXPT8sSFNcT1dwUYLlIRFokhN04CdiPKecTxscKE4k/o5jXrGXhermpTGSkUT7BI7gUs7VZkYb8iZqbMyc3lOPoXW8Ajxm0yXGsv4NBsyoMc34LnVq6AhvX+hlC7jMdXePUgAMkdqn7N7djnlvdA7QbFemnHFPRQrvR0NuZ+sENFcQoEIoGRncp1hEfPkS/TOQ2/OsvPUEXz/0NRE/qjRJMvOP4F5iI/IpwCkPkyKG+bMH1bHpVxfFp2d/WCyD/e/KlKDyQ9hBE2uBvQpgDkorKrX+xZN0k6K6KE1hOrE3PAfW44s9zorMu8m/E8ldKltgMCUv+P+X3r1AzGIjyqDM10I38OOK4KRfWGf6FrrQz/yykO6jtNBgyR3VKrlZh8VUMzTv8H5CsNSJCmWMnXqxtj X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(36860700013)(376014)(82310400026)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2024 16:36:43.0987 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d927c8c5-8626-49a8-232b-08dced378d76 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.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EE30.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9232 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 From: Hamdan Igbaria Introduce jump to matcher action, this action will allow jumping to another matcher. For now this jump restricted to STE array matchers and matchers of size 1. Signed-off-by: Hamdan Igbaria --- drivers/net/mlx5/hws/mlx5dr.h | 29 ++++++++++ drivers/net/mlx5/hws/mlx5dr_action.c | 87 +++++++++++++++++++++++++++- drivers/net/mlx5/hws/mlx5dr_action.h | 3 + drivers/net/mlx5/hws/mlx5dr_debug.c | 1 + 4 files changed, 117 insertions(+), 3 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr.h b/drivers/net/mlx5/hws/mlx5dr.h index 8a1a389a3f..1b58eeb2c7 100644 --- a/drivers/net/mlx5/hws/mlx5dr.h +++ b/drivers/net/mlx5/hws/mlx5dr.h @@ -52,6 +52,7 @@ enum mlx5dr_action_type { MLX5DR_ACTION_TYP_POP_IPV6_ROUTE_EXT, MLX5DR_ACTION_TYP_PUSH_IPV6_ROUTE_EXT, MLX5DR_ACTION_TYP_NAT64, + MLX5DR_ACTION_TYP_JUMP_TO_MATCHER, MLX5DR_ACTION_TYP_MAX, }; @@ -287,6 +288,10 @@ struct mlx5dr_rule_action { uint32_t offset; enum mlx5dr_action_aso_ct_flags direction; } aso_ct; + + struct { + uint32_t offset; + } jump_to_matcher; }; }; @@ -304,6 +309,15 @@ struct mlx5dr_action_dest_attr { } reformat; }; +enum mlx5dr_action_jump_to_matcher_type { + MLX5DR_ACTION_JUMP_TO_MATCHER_BY_INDEX, +}; + +struct mlx5dr_action_jump_to_matcher_attr { + enum mlx5dr_action_jump_to_matcher_type type; + struct mlx5dr_matcher *matcher; +}; + union mlx5dr_crc_encap_entropy_hash_ip_field { uint8_t ipv6_addr[16]; struct { @@ -938,6 +952,21 @@ mlx5dr_action_create_nat64(struct mlx5dr_context *ctx, struct mlx5dr_action_nat64_attr *attr, uint32_t flags); +/* Create direct rule jump to matcher action. + * + * @param[in] ctx + * The context in which the new action will be created. + * @param[in] attr + * The relevant attribute of the action. + * @param[in] flags + * Action creation flags. (enum mlx5dr_action_flags) + * @return pointer to mlx5dr_action on success NULL otherwise. + */ +struct mlx5dr_action * +mlx5dr_action_create_jump_to_matcher(struct mlx5dr_context *ctx, + struct mlx5dr_action_jump_to_matcher_attr *attr, + uint32_t flags); + /* Destroy direct rule action. * * @param[in] action diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c index 3fceb96de2..3412a96894 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.c +++ b/drivers/net/mlx5/hws/mlx5dr_action.c @@ -42,7 +42,8 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_ BIT(MLX5DR_ACTION_TYP_TIR) | BIT(MLX5DR_ACTION_TYP_DROP) | BIT(MLX5DR_ACTION_TYP_DEST_ROOT) | - BIT(MLX5DR_ACTION_TYP_DEST_ARRAY), + BIT(MLX5DR_ACTION_TYP_DEST_ARRAY) | + BIT(MLX5DR_ACTION_TYP_JUMP_TO_MATCHER), BIT(MLX5DR_ACTION_TYP_LAST), }, [MLX5DR_TABLE_TYPE_NIC_TX] = { @@ -62,7 +63,8 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_ BIT(MLX5DR_ACTION_TYP_TBL) | BIT(MLX5DR_ACTION_TYP_MISS) | BIT(MLX5DR_ACTION_TYP_DROP) | - BIT(MLX5DR_ACTION_TYP_DEST_ROOT), + BIT(MLX5DR_ACTION_TYP_DEST_ROOT) | + BIT(MLX5DR_ACTION_TYP_JUMP_TO_MATCHER), BIT(MLX5DR_ACTION_TYP_LAST), }, [MLX5DR_TABLE_TYPE_FDB] = { @@ -88,7 +90,8 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_ BIT(MLX5DR_ACTION_TYP_VPORT) | BIT(MLX5DR_ACTION_TYP_DROP) | BIT(MLX5DR_ACTION_TYP_DEST_ROOT) | - BIT(MLX5DR_ACTION_TYP_DEST_ARRAY), + BIT(MLX5DR_ACTION_TYP_DEST_ARRAY) | + BIT(MLX5DR_ACTION_TYP_JUMP_TO_MATCHER), BIT(MLX5DR_ACTION_TYP_LAST), }, }; @@ -1091,6 +1094,13 @@ static void mlx5dr_action_fill_stc_attr(struct mlx5dr_action *action, attr->action_offset = MLX5DR_ACTION_OFFSET_DW5; attr->reparse_mode = MLX5_IFC_STC_REPARSE_ALWAYS; break; + case MLX5DR_ACTION_TYP_JUMP_TO_MATCHER: + attr->action_type = MLX5_IFC_STC_ACTION_TYPE_JUMP_TO_STE_TABLE; + attr->action_offset = MLX5DR_ACTION_OFFSET_HIT; + attr->ste_table.ste = action->jump_to_matcher.matcher->match_ste.ste; + attr->ste_table.ste_pool = action->jump_to_matcher.matcher->match_ste.pool; + attr->ste_table.match_definer_id = action->ctx->caps->trivial_match_definer; + break; default: DR_LOG(ERR, "Invalid action type %d", action->type); assert(false); @@ -3078,6 +3088,57 @@ mlx5dr_action_create_nat64(struct mlx5dr_context *ctx, return NULL; } +struct mlx5dr_action * +mlx5dr_action_create_jump_to_matcher(struct mlx5dr_context *ctx, + struct mlx5dr_action_jump_to_matcher_attr *attr, + uint32_t flags) +{ + struct mlx5dr_matcher *matcher = attr->matcher; + struct mlx5dr_matcher_attr *m_attr; + struct mlx5dr_action *action; + + if (attr->type != MLX5DR_ACTION_JUMP_TO_MATCHER_BY_INDEX) { + DR_LOG(ERR, "Only jump to matcher by index is supported"); + goto enotsup; + } + + if (mlx5dr_action_is_root_flags(flags)) { + DR_LOG(ERR, "Action flags must be only non root (HWS)"); + goto enotsup; + } + + if (mlx5dr_table_is_root(matcher->tbl)) { + DR_LOG(ERR, "Root matcher cannot be set as destination"); + goto enotsup; + } + + m_attr = &matcher->attr; + + if (!(matcher->flags & MLX5DR_MATCHER_FLAGS_STE_ARRAY) && + (m_attr->resizable || m_attr->table.sz_col_log || m_attr->table.sz_row_log)) { + DR_LOG(ERR, "Only STE array or matcher of size 1 can be set as destination"); + goto enotsup; + } + + action = mlx5dr_action_create_generic(ctx, flags, MLX5DR_ACTION_TYP_JUMP_TO_MATCHER); + if (!action) + return NULL; + + action->jump_to_matcher.matcher = matcher; + + if (mlx5dr_action_create_stcs(action, NULL)) { + DR_LOG(ERR, "Failed to create action jump to matcher STC"); + simple_free(action); + return NULL; + } + + return action; + +enotsup: + rte_errno = ENOTSUP; + return NULL; +} + static void mlx5dr_action_destroy_hws(struct mlx5dr_action *action) { struct mlx5dr_devx_obj *obj = NULL; @@ -3100,6 +3161,7 @@ static void mlx5dr_action_destroy_hws(struct mlx5dr_action *action) case MLX5DR_ACTION_TYP_PUSH_VLAN: case MLX5DR_ACTION_TYP_REMOVE_HEADER: case MLX5DR_ACTION_TYP_VPORT: + case MLX5DR_ACTION_TYP_JUMP_TO_MATCHER: mlx5dr_action_destroy_stcs(action); break; case MLX5DR_ACTION_TYP_DEST_ROOT: @@ -3618,6 +3680,19 @@ mlx5dr_action_setter_default_hit(struct mlx5dr_actions_apply_data *apply, htobe32(apply->common_res->default_stc->default_hit.offset); } +static void +mlx5dr_action_setter_hit_matcher(struct mlx5dr_actions_apply_data *apply, + struct mlx5dr_actions_wqe_setter *setter) +{ + struct mlx5dr_rule_action *rule_action; + + rule_action = &apply->rule_action[setter->idx_hit]; + + apply->wqe_data[MLX5DR_ACTION_OFFSET_HIT_LSB] = + htobe32(rule_action->jump_to_matcher.offset << 6); + mlx5dr_action_apply_stc(apply, MLX5DR_ACTION_STC_IDX_HIT, setter->idx_hit); +} + static void mlx5dr_action_setter_hit_next_action(struct mlx5dr_actions_apply_data *apply, __rte_unused struct mlx5dr_actions_wqe_setter *setter) @@ -3965,6 +4040,12 @@ int mlx5dr_action_template_process(struct mlx5dr_action_template *at) } break; + case MLX5DR_ACTION_TYP_JUMP_TO_MATCHER: + last_setter->flags |= ASF_HIT; + last_setter->set_hit = &mlx5dr_action_setter_hit_matcher; + last_setter->idx_hit = i; + break; + default: DR_LOG(ERR, "Unsupported action type: %d", action_type[i]); rte_errno = ENOTSUP; diff --git a/drivers/net/mlx5/hws/mlx5dr_action.h b/drivers/net/mlx5/hws/mlx5dr_action.h index ba4ce55228..8ce4ecd5ba 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.h +++ b/drivers/net/mlx5/hws/mlx5dr_action.h @@ -223,6 +223,9 @@ struct mlx5dr_action { struct { struct mlx5dr_action *stages[MLX5DR_ACTION_NAT64_STAGES]; } nat64; + struct { + struct mlx5dr_matcher *matcher; + } jump_to_matcher; }; }; diff --git a/drivers/net/mlx5/hws/mlx5dr_debug.c b/drivers/net/mlx5/hws/mlx5dr_debug.c index f15ad96598..8684a8197a 100644 --- a/drivers/net/mlx5/hws/mlx5dr_debug.c +++ b/drivers/net/mlx5/hws/mlx5dr_debug.c @@ -29,6 +29,7 @@ const char *mlx5dr_debug_action_type_str[] = { [MLX5DR_ACTION_TYP_POP_IPV6_ROUTE_EXT] = "POP_IPV6_ROUTE_EXT", [MLX5DR_ACTION_TYP_PUSH_IPV6_ROUTE_EXT] = "PUSH_IPV6_ROUTE_EXT", [MLX5DR_ACTION_TYP_NAT64] = "NAT64", + [MLX5DR_ACTION_TYP_JUMP_TO_MATCHER] = "JUMP_TO_MATCHER", }; static_assert(ARRAY_SIZE(mlx5dr_debug_action_type_str) == MLX5DR_ACTION_TYP_MAX,