Add new glue callback dr_create_flow_action_send_to_kernel. Default callback invokes mlx5dv_dr_action_create_dest_root_table().
Signed-off-by: Michael Savisko <michael...@nvidia.com> --- drivers/common/mlx5/linux/mlx5_glue.c | 17 +++++++++++++++++ drivers/common/mlx5/linux/mlx5_glue.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/drivers/common/mlx5/linux/mlx5_glue.c b/drivers/common/mlx5/linux/mlx5_glue.c index 450dd6a06a..b954df0784 100644 --- a/drivers/common/mlx5/linux/mlx5_glue.c +++ b/drivers/common/mlx5/linux/mlx5_glue.c @@ -1434,6 +1434,21 @@ mlx5_glue_dv_free_pp(struct mlx5dv_pp *pp) #endif } +static void * +mlx5_glue_dr_create_flow_action_send_to_kernel(void *tbl, uint16_t priority) +{ +#ifdef HAVE_MLX5DV_DR_ACTION_CREATE_DEST_ROOT_TABLE + struct mlx5dv_dr_table *table = (struct mlx5dv_dr_table *)tbl; + + return mlx5dv_dr_action_create_dest_root_table(table, priority); +#else + RTE_SET_USED(tbl); + RTE_SET_USED(priority); + errno = ENOTSUP; + return NULL; +#endif +} + __rte_cache_aligned const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) { .version = MLX5_GLUE_VERSION, @@ -1561,4 +1576,6 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue) { .dv_free_var = mlx5_glue_dv_free_var, .dv_alloc_pp = mlx5_glue_dv_alloc_pp, .dv_free_pp = mlx5_glue_dv_free_pp, + .dr_create_flow_action_send_to_kernel = + mlx5_glue_dr_create_flow_action_send_to_kernel, }; diff --git a/drivers/common/mlx5/linux/mlx5_glue.h b/drivers/common/mlx5/linux/mlx5_glue.h index c4903a6dce..9616dfdd06 100644 --- a/drivers/common/mlx5/linux/mlx5_glue.h +++ b/drivers/common/mlx5/linux/mlx5_glue.h @@ -373,6 +373,8 @@ struct mlx5_glue { void *(*dv_create_flow_action_aso) (struct mlx5dv_dr_domain *domain, void *aso_obj, uint32_t offset, uint32_t flags, uint8_t return_reg_c); + void *(*dr_create_flow_action_send_to_kernel)(void *tbl, + uint16_t priority); }; extern const struct mlx5_glue *mlx5_glue; -- 2.27.0