[v1 14/16] net/mlx5/hws: add debug dump support for range and hash
Alex Vesker
valex at nvidia.com
Tue Jan 31 10:33:43 CET 2023
Add support for dumping range and hash definers objects.
Hash definer is a per matcher object describing the fields
used for hashing. Range definer is per match template object
describing the fields used for range matching.
Both are optional based on the given match templates.
Signed-off-by: Alex Vesker <valex at nvidia.com>
---
drivers/net/mlx5/hws/mlx5dr_debug.c | 37 ++++++++++++++++++++---------
drivers/net/mlx5/hws/mlx5dr_debug.h | 4 +++-
2 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/drivers/net/mlx5/hws/mlx5dr_debug.c b/drivers/net/mlx5/hws/mlx5dr_debug.c
index 9199ec16e0..b1d271eebe 100644
--- a/drivers/net/mlx5/hws/mlx5dr_debug.c
+++ b/drivers/net/mlx5/hws/mlx5dr_debug.c
@@ -34,15 +34,19 @@ const char *mlx5dr_debug_action_type_to_str(enum mlx5dr_action_type action_type)
static int
mlx5dr_debug_dump_matcher_template_definer(FILE *f,
- struct mlx5dr_match_template *mt)
+ void *parent_obj,
+ struct mlx5dr_definer *definer,
+ enum mlx5dr_debug_res_type type)
{
- struct mlx5dr_definer *definer = mt->definer;
int i, ret;
+ if (!definer)
+ return 0;
+
ret = fprintf(f, "%d,0x%" PRIx64 ",0x%" PRIx64 ",%d,%d,",
- MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_DEFINER,
+ type,
(uint64_t)(uintptr_t)definer,
- (uint64_t)(uintptr_t)mt,
+ (uint64_t)(uintptr_t)parent_obj,
definer->obj->id,
definer->type);
if (ret < 0) {
@@ -89,29 +93,40 @@ static int
mlx5dr_debug_dump_matcher_match_template(FILE *f, struct mlx5dr_matcher *matcher)
{
bool is_root = matcher->tbl->level == MLX5DR_ROOT_LEVEL;
+ enum mlx5dr_debug_res_type res_type;
int i, ret;
for (i = 0; i < matcher->num_of_mt; i++) {
struct mlx5dr_match_template *mt = &matcher->mt[i];
- ret = fprintf(f, "%d,0x%" PRIx64 ",0x%" PRIx64 ",%d,%d\n",
+ ret = fprintf(f, "%d,0x%" PRIx64 ",0x%" PRIx64 ",%d,%d,%d\n",
MLX5DR_DEBUG_RES_TYPE_MATCHER_MATCH_TEMPLATE,
(uint64_t)(uintptr_t)mt,
(uint64_t)(uintptr_t)matcher,
is_root ? 0 : mt->fc_sz,
- mt->flags);
+ mt->flags,
+ is_root ? 0 : mt->fcr_sz);
if (ret < 0) {
rte_errno = EINVAL;
return rte_errno;
}
- if (!is_root) {
- ret = mlx5dr_debug_dump_matcher_template_definer(f, mt);
- if (ret)
- return ret;
- }
+ res_type = MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_MATCH_DEFINER;
+ ret = mlx5dr_debug_dump_matcher_template_definer(f, mt, mt->definer, res_type);
+ if (ret)
+ return ret;
+
+ res_type = MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_RANGE_DEFINER;
+ ret = mlx5dr_debug_dump_matcher_template_definer(f, mt, mt->range_definer, res_type);
+ if (ret)
+ return ret;
}
+ res_type = MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_HASH_DEFINER;
+ ret = mlx5dr_debug_dump_matcher_template_definer(f, matcher, matcher->hash_definer, res_type);
+ if (ret)
+ return ret;
+
return 0;
}
diff --git a/drivers/net/mlx5/hws/mlx5dr_debug.h b/drivers/net/mlx5/hws/mlx5dr_debug.h
index cf00170f7d..2c29ca295c 100644
--- a/drivers/net/mlx5/hws/mlx5dr_debug.h
+++ b/drivers/net/mlx5/hws/mlx5dr_debug.h
@@ -19,8 +19,10 @@ enum mlx5dr_debug_res_type {
MLX5DR_DEBUG_RES_TYPE_MATCHER = 4200,
MLX5DR_DEBUG_RES_TYPE_MATCHER_ATTR = 4201,
MLX5DR_DEBUG_RES_TYPE_MATCHER_MATCH_TEMPLATE = 4202,
+ MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_MATCH_DEFINER = 4203,
MLX5DR_DEBUG_RES_TYPE_MATCHER_ACTION_TEMPLATE = 4204,
- MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_DEFINER = 4203,
+ MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_HASH_DEFINER = 4205,
+ MLX5DR_DEBUG_RES_TYPE_MATCHER_TEMPLATE_RANGE_DEFINER = 4206,
};
const char *mlx5dr_debug_action_type_to_str(enum mlx5dr_action_type action_type);
--
2.18.1
More information about the dev
mailing list