]> git.itanic.dy.fi Git - linux-stable/commitdiff
net/mlx5: DR, Add support for the pattern/arg parameters in debug dump
authorYevgeny Kliteynik <kliteyn@nvidia.com>
Sat, 31 Dec 2022 22:20:53 +0000 (00:20 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Fri, 14 Apr 2023 22:06:22 +0000 (15:06 -0700)
Support the pattern/args-based MODIFY_HDR and TNL_L3_TO_L2 actions in dbg dump

Signed-off-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
Reviewed-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_dbg.c

index db81d881d38e0aff7db51b68c6bc1acf1acc0ebe..1ff8bde90e1ed5f1f674f61e7a4c9e5ab7909c3c 100644 (file)
@@ -140,10 +140,31 @@ dr_dump_rule_action_mem(struct seq_file *file, const u64 rule_id,
                           action->flow_tag->flow_tag);
                break;
        case DR_ACTION_TYP_MODIFY_HDR:
-               seq_printf(file, "%d,0x%llx,0x%llx,0x%x\n",
+       {
+               struct mlx5dr_ptrn_obj *ptrn = action->rewrite->ptrn;
+               struct mlx5dr_arg_obj *arg = action->rewrite->arg;
+               u8 *rewrite_data = action->rewrite->data;
+               bool ptrn_arg;
+               int i;
+
+               ptrn_arg = !action->rewrite->single_action_opt && ptrn && arg;
+
+               seq_printf(file, "%d,0x%llx,0x%llx,0x%x,%d,0x%x,0x%x,0x%x",
                           DR_DUMP_REC_TYPE_ACTION_MODIFY_HDR, action_id,
-                          rule_id, action->rewrite->index);
+                          rule_id, action->rewrite->index,
+                          action->rewrite->single_action_opt,
+                          action->rewrite->num_of_actions,
+                          ptrn_arg ? ptrn->index : 0,
+                          ptrn_arg ? mlx5dr_arg_get_obj_id(arg) : 0);
+
+               for (i = 0; i < action->rewrite->num_of_actions; i++) {
+                       seq_printf(file, ",0x%016llx",
+                                  be64_to_cpu(((__be64 *)rewrite_data)[i]));
+               }
+
+               seq_puts(file, "\n");
                break;
+       }
        case DR_ACTION_TYP_VPORT:
                seq_printf(file, "%d,0x%llx,0x%llx,0x%x\n",
                           DR_DUMP_REC_TYPE_ACTION_VPORT, action_id, rule_id,
@@ -157,7 +178,10 @@ dr_dump_rule_action_mem(struct seq_file *file, const u64 rule_id,
        case DR_ACTION_TYP_TNL_L3_TO_L2:
                seq_printf(file, "%d,0x%llx,0x%llx,0x%x\n",
                           DR_DUMP_REC_TYPE_ACTION_DECAP_L3, action_id,
-                          rule_id, action->rewrite->index);
+                          rule_id,
+                          (action->rewrite->ptrn && action->rewrite->arg) ?
+                          mlx5dr_arg_get_obj_id(action->rewrite->arg) :
+                          action->rewrite->index);
                break;
        case DR_ACTION_TYP_L2_TO_TNL_L2:
                seq_printf(file, "%d,0x%llx,0x%llx,0x%x\n",