HI David, In current release, is the exports file necessary? I will keep the modification if yes. Thank you.
drivers/common/mlx5/rte_common_mlx5_exports.def -----Original Message----- From: Kinsella, Ray <m...@ashroe.eu> Sent: Wednesday, April 14, 2021 12:44 AM To: Haifei Luo <haif...@nvidia.com>; dev@dpdk.org Cc: Ori Kam <or...@nvidia.com>; Slava Ovsiienko <viachesl...@nvidia.com>; Raslan Darawsheh <rasl...@nvidia.com>; Xueming(Steven) Li <xuemi...@nvidia.com>; Matan Azrad <ma...@nvidia.com>; Shahaf Shuler <shah...@nvidia.com>; Neil Horman <nhor...@tuxdriver.com>; David Marchand <david.march...@redhat.com> Subject: Re: [PATCH v2 3/5] common/mlx5: add mlx5 APIs for single flow dump feature External email: Use caution opening links or attachments On 07/04/2021 07:09, Haifei Luo wrote: > add mlx5 APIs for single flow dump feature > > Signed-off-by: Haifei Luo <haif...@nvidia.com> > --- > drivers/common/mlx5/linux/meson.build | 2 ++ > drivers/common/mlx5/linux/mlx5_glue.c | 13 +++++++++++++ > drivers/common/mlx5/linux/mlx5_glue.h | 1 + > drivers/common/mlx5/mlx5_devx_cmds.c | 14 ++++++++++++++ > drivers/common/mlx5/mlx5_devx_cmds.h | 2 ++ > drivers/common/mlx5/rte_common_mlx5_exports.def | 1 + Perhaps check with David Marchand on this, I suspect amendments to the exports file will soon be redundant. > drivers/common/mlx5/version.map | 1 + > 7 files changed, 34 insertions(+) > > diff --git a/drivers/common/mlx5/linux/meson.build > b/drivers/common/mlx5/linux/meson.build > index 220de35..3f42163 100644 > --- a/drivers/common/mlx5/linux/meson.build > +++ b/drivers/common/mlx5/linux/meson.build > @@ -186,6 +186,8 @@ has_sym_args = [ > 'mlx5dv_dr_action_create_aso' ], > [ 'HAVE_INFINIBAND_VERBS_H', 'infiniband/verbs.h', > 'INFINIBAND_VERBS_H' ], > + [ 'HAVE_MLX5_DR_FLOW_DUMP_RULE', 'infiniband/mlx5dv.h', > + 'mlx5dv_dump_dr_rule' ], > ] > config = configuration_data() > foreach arg:has_sym_args > diff --git a/drivers/common/mlx5/linux/mlx5_glue.c > b/drivers/common/mlx5/linux/mlx5_glue.c > index 964f7e7..d3bd645 100644 > --- a/drivers/common/mlx5/linux/mlx5_glue.c > +++ b/drivers/common/mlx5/linux/mlx5_glue.c > @@ -1101,6 +1101,18 @@ > } > > static int > +mlx5_glue_dr_dump_single_rule(FILE *file, void *rule) { #ifdef > +HAVE_MLX5_DR_FLOW_DUMP_RULE > + return mlx5dv_dump_dr_rule(file, rule); #else > + RTE_SET_USED(file); > + RTE_SET_USED(rule); > + return -ENOTSUP; > +#endif > +} > + > +static int > mlx5_glue_dr_dump_domain(FILE *file, void *domain) { #ifdef > HAVE_MLX5_DR_FLOW_DUMP @@ -1423,6 +1435,7 @@ > .devx_wq_query = mlx5_glue_devx_wq_query, > .devx_port_query = mlx5_glue_devx_port_query, > .dr_dump_domain = mlx5_glue_dr_dump_domain, > + .dr_dump_rule = mlx5_glue_dr_dump_single_rule, > .dr_reclaim_domain_memory = mlx5_glue_dr_reclaim_domain_memory, > .dr_create_flow_action_sampler = > mlx5_glue_dr_create_flow_action_sampler, > diff --git a/drivers/common/mlx5/linux/mlx5_glue.h > b/drivers/common/mlx5/linux/mlx5_glue.h > index 9e385be..97462e9 100644 > --- a/drivers/common/mlx5/linux/mlx5_glue.h > +++ b/drivers/common/mlx5/linux/mlx5_glue.h > @@ -313,6 +313,7 @@ struct mlx5_glue { > uint32_t port_num, > struct mlx5dv_devx_port *mlx5_devx_port); > int (*dr_dump_domain)(FILE *file, void *domain); > + int (*dr_dump_rule)(FILE *file, void *rule); > int (*devx_query_eqn)(struct ibv_context *context, uint32_t cpus, > uint32_t *eqn); > struct mlx5dv_devx_event_channel *(*devx_create_event_channel) > diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c > b/drivers/common/mlx5/mlx5_devx_cmds.c > index c90e020..c0b6fdb 100644 > --- a/drivers/common/mlx5/mlx5_devx_cmds.c > +++ b/drivers/common/mlx5/mlx5_devx_cmds.c > @@ -1579,6 +1579,20 @@ struct mlx5_devx_obj * > return -ret; > } > > +int > +mlx5_devx_cmd_flow_single_dump(void *rule_info __rte_unused, > + FILE *file __rte_unused) { > + int ret = 0; > +#ifdef HAVE_MLX5_DR_FLOW_DUMP_RULE > + if (rule_info) > + ret = mlx5_glue->dr_dump_rule(file, rule_info); #else > + ret = ENOTSUP; > +#endif > + return -ret; > +} > + > /* > * Create CQ using DevX API. > * > diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h > b/drivers/common/mlx5/mlx5_devx_cmds.h > index 2826c0b..f587d0c 100644 > --- a/drivers/common/mlx5/mlx5_devx_cmds.h > +++ b/drivers/common/mlx5/mlx5_devx_cmds.h > @@ -474,6 +474,8 @@ struct mlx5_devx_obj *mlx5_devx_cmd_create_tis(void *ctx, > int mlx5_devx_cmd_flow_dump(void *fdb_domain, void *rx_domain, void > *tx_domain, > FILE *file); > __rte_internal > +int mlx5_devx_cmd_flow_single_dump(void *rule, FILE *file); > +__rte_internal > struct mlx5_devx_obj *mlx5_devx_cmd_create_cq(void *ctx, > struct mlx5_devx_cq_attr *attr); > __rte_internal > diff --git a/drivers/common/mlx5/rte_common_mlx5_exports.def > b/drivers/common/mlx5/rte_common_mlx5_exports.def > index fd62b80..0e6d6d3 100644 > --- a/drivers/common/mlx5/rte_common_mlx5_exports.def > +++ b/drivers/common/mlx5/rte_common_mlx5_exports.def > @@ -20,6 +20,7 @@ EXPORTS > mlx5_devx_cmd_flow_counter_alloc > mlx5_devx_cmd_flow_counter_query > mlx5_devx_cmd_flow_dump > + mlx5_devx_cmd_flow_single_dump > mlx5_devx_cmd_mkey_create > mlx5_devx_cmd_modify_qp_state > mlx5_devx_cmd_modify_rq > diff --git a/drivers/common/mlx5/version.map b/drivers/common/mlx5/version.map > index 91f3fa5..4d49011 100644 > --- a/drivers/common/mlx5/version.map > +++ b/drivers/common/mlx5/version.map > @@ -28,6 +28,7 @@ INTERNAL { > mlx5_devx_cmd_flow_counter_alloc; > mlx5_devx_cmd_flow_counter_query; > mlx5_devx_cmd_flow_dump; > + mlx5_devx_cmd_flow_single_dump; > mlx5_devx_cmd_mkey_create; > mlx5_devx_cmd_modify_qp_state; > mlx5_devx_cmd_modify_rq; >