From: Hamdan Igbaria <hamdani@nvidia.com>
Dump action ste arrays info for resizing matchers.
Signed-off-by: Hamdan Igbaria <hamdani@nvidia.com>
Acked-by: Matan Azrad <matan@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(+)
@@ -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:
@@ -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
@@ -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;
@@ -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;