[v2 15/16] net/mlx5/hws: dump action ste arrays info
Itamar Gozlan
igozlan at nvidia.com
Mon May 6 13:44:18 CEST 2024
From: Hamdan Igbaria <hamdani at nvidia.com>
Dump action ste arrays info for resizing matchers.
Signed-off-by: Hamdan Igbaria <hamdani at nvidia.com>
Acked-by: Matan Azrad <matan at nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_debug.c | 23 +++++++++++++++++++++++
drivers/net/mlx5/hws/mlx5dr_debug.h | 1 +
drivers/net/mlx5/hws/mlx5dr_matcher.c | 1 +
drivers/net/mlx5/hws/mlx5dr_matcher.h | 1 +
4 files changed, 26 insertions(+)
diff --git a/drivers/net/mlx5/hws/mlx5dr_debug.c b/drivers/net/mlx5/hws/mlx5dr_debug.c
index 8f07c7fd66..5ad4ca2da5 100644
--- a/drivers/net/mlx5/hws/mlx5dr_debug.c
+++ b/drivers/net/mlx5/hws/mlx5dr_debug.c
@@ -206,6 +206,7 @@ static int mlx5dr_debug_dump_matcher(FILE *f, struct mlx5dr_matcher *matcher)
bool is_shared = mlx5dr_context_shared_gvmi_used(matcher->tbl->ctx);
bool is_root = matcher->tbl->level == MLX5DR_ROOT_LEVEL;
enum mlx5dr_table_type tbl_type = matcher->tbl->type;
+ struct mlx5dr_matcher_resize_data *resize_data;
struct mlx5dr_cmd_ft_query_attr ft_attr = {0};
struct mlx5dr_devx_obj *ste_0, *ste_1 = NULL;
struct mlx5dr_pool_chunk *ste;
@@ -288,6 +289,28 @@ static int mlx5dr_debug_dump_matcher(FILE *f, struct mlx5dr_matcher *matcher)
if (ret)
return ret;
+ LIST_FOREACH(resize_data, &matcher->resize_data, next) {
+ ste = &resize_data->ste;
+ ste_pool = resize_data->action_ste_pool;
+ if (ste_pool) {
+ ste_0 = mlx5dr_pool_chunk_get_base_devx_obj(ste_pool, ste);
+ if (tbl_type == MLX5DR_TABLE_TYPE_FDB)
+ ste_1 = mlx5dr_pool_chunk_get_base_devx_obj_mirror(ste_pool, ste);
+ } else {
+ ste_0 = NULL;
+ ste_1 = NULL;
+ }
+ ret = fprintf(f, "%d,0x%" PRIx64 ",%d,%d,%d,%d\n",
+ MLX5DR_DEBUG_RES_TYPE_MATCHER_RESIZABLE_ACTION_ARRAY,
+ (uint64_t)(uintptr_t)matcher,
+ resize_data->action_ste_rtc_0 ? resize_data->action_ste_rtc_0->id : 0,
+ ste_0 ? (int)ste_0->id : -1,
+ resize_data->action_ste_rtc_1 ? resize_data->action_ste_rtc_1->id : 0,
+ ste_1 ? (int)ste_1->id : -1);
+ if (ret < 0)
+ return ret;
+ }
+
return 0;
out_err:
diff --git a/drivers/net/mlx5/hws/mlx5dr_debug.h b/drivers/net/mlx5/hws/mlx5dr_debug.h
index a89a6a0b1d..b69002b5cd 100644
--- a/drivers/net/mlx5/hws/mlx5dr_debug.h
+++ b/drivers/net/mlx5/hws/mlx5dr_debug.h
@@ -25,6 +25,7 @@ enum mlx5dr_debug_res_type {
MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_HASH_DEFINER = 4205,
MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_RANGE_DEFINER = 4206,
MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_COMPARE_MATCH_DEFINER = 4207,
+ MLX5DR_DEBUG_RES_TYPE_MATCHER_RESIZABLE_ACTION_ARRAY = 4208,
};
static inline uint64_t
diff --git a/drivers/net/mlx5/hws/mlx5dr_matcher.c b/drivers/net/mlx5/hws/mlx5dr_matcher.c
index 78d525e578..8f1a202f81 100644
--- a/drivers/net/mlx5/hws/mlx5dr_matcher.c
+++ b/drivers/net/mlx5/hws/mlx5dr_matcher.c
@@ -724,6 +724,7 @@ mlx5dr_matcher_resize_init(struct mlx5dr_matcher *src_matcher)
return rte_errno;
}
+ resize_data->ste = src_matcher->action_ste.ste;
resize_data->stc = src_matcher->action_ste.stc;
resize_data->action_ste_rtc_0 = src_matcher->action_ste.rtc_0;
resize_data->action_ste_rtc_1 = src_matcher->action_ste.rtc_1;
diff --git a/drivers/net/mlx5/hws/mlx5dr_matcher.h b/drivers/net/mlx5/hws/mlx5dr_matcher.h
index 6dc3bf4d0d..caff403a38 100644
--- a/drivers/net/mlx5/hws/mlx5dr_matcher.h
+++ b/drivers/net/mlx5/hws/mlx5dr_matcher.h
@@ -62,6 +62,7 @@ struct mlx5dr_matcher_action_ste {
};
struct mlx5dr_matcher_resize_data {
+ struct mlx5dr_pool_chunk ste;
struct mlx5dr_pool_chunk stc;
struct mlx5dr_devx_obj *action_ste_rtc_0;
struct mlx5dr_devx_obj *action_ste_rtc_1;
--
2.39.3
More information about the dev
mailing list