X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fmlx5%2Fmlx5_glue.h;h=1d06583f48beb3b42934457219886c69b074d261;hb=f6d9ab4e769f0f95ecac1b418106e9f8137ca60c;hp=32487eae2b51ea93b75b81991b97dab4f0ab2ae6;hpb=cbb66daa3c859a14d4e5f993fc71bf7026f2ec8a;p=dpdk.git diff --git a/drivers/net/mlx5/mlx5_glue.h b/drivers/net/mlx5/mlx5_glue.h index 32487eae2b..1d06583f48 100644 --- a/drivers/net/mlx5/mlx5_glue.h +++ b/drivers/net/mlx5/mlx5_glue.h @@ -63,6 +63,11 @@ enum mlx5dv_flow_table_type { flow_table_type = 0, }; struct mlx5dv_devx_obj; #endif +#ifndef HAVE_MLX5DV_DR +struct mlx5dv_dr_ns; +enum mlx5dv_dr_ns_domain { unused, }; +#endif + /* LIB_GLUE_VERSION must be updated every time this structure is modified. */ struct mlx5_glue { const char *version; @@ -140,6 +145,14 @@ struct mlx5_glue { struct ibv_async_event *event); const char *(*port_state_str)(enum ibv_port_state port_state); struct ibv_cq *(*cq_ex_to_cq)(struct ibv_cq_ex *cq); + void *(*dr_create_flow_action_dest_flow_tbl)(void *tbl); + void *(*dr_create_flow_action_dest_vport)(void *ns, uint32_t vport); + void *(*dr_create_flow_action_drop)(); + void *(*dr_create_flow_tbl)(void *ns, uint32_t level); + int (*dr_destroy_flow_tbl)(void *tbl); + void *(*dr_create_ns)(struct ibv_context *ctx, + enum mlx5dv_dr_ns_domain domain); + int (*dr_destroy_ns)(void *ns); struct ibv_cq_ex *(*dv_create_cq) (struct ibv_context *context, struct ibv_cq_init_attr_ex *cq_attr, @@ -158,23 +171,26 @@ struct mlx5_glue { (struct ibv_context *context, struct ibv_qp_init_attr_ex *qp_init_attr_ex, struct mlx5dv_qp_init_attr *dv_qp_init_attr); - struct mlx5dv_flow_matcher *(*dv_create_flow_matcher) + void *(*dv_create_flow_matcher) (struct ibv_context *context, - struct mlx5dv_flow_matcher_attr *matcher_attr); - int (*dv_destroy_flow_matcher)(struct mlx5dv_flow_matcher *matcher); - struct ibv_flow *(*dv_create_flow)(struct mlx5dv_flow_matcher *matcher, - struct mlx5dv_flow_match_parameters *match_value, + struct mlx5dv_flow_matcher_attr *matcher_attr, + void *tbl); + void *(*dv_create_flow)(void *matcher, void *match_value, size_t num_actions, void *actions[]); void *(*dv_create_flow_action_counter)(void *obj, uint32_t offset); void *(*dv_create_flow_action_dest_ibv_qp)(void *qp); void *(*dv_create_flow_action_modify_header) - (struct ibv_context *ctx, size_t actions_sz, uint64_t actions[], - enum mlx5dv_flow_table_type ft_type); + (struct ibv_context *ctx, enum mlx5dv_flow_table_type ft_type, + void *ns, uint64_t flags, size_t actions_sz, + uint64_t actions[]); void *(*dv_create_flow_action_packet_reformat) - (struct ibv_context *ctx, size_t data_sz, void *data, + (struct ibv_context *ctx, enum mlx5dv_flow_action_packet_reformat_type reformat_type, - enum mlx5dv_flow_table_type ft_type); + enum mlx5dv_flow_table_type ft_type, struct mlx5dv_dr_ns *ns, + uint32_t flags, size_t data_sz, void *data); void *(*dv_create_flow_action_tag)(uint32_t tag); + int (*dv_destroy_flow)(void *flow); + int (*dv_destroy_flow_matcher)(void *matcher); struct ibv_context *(*dv_open_device)(struct ibv_device *device); struct mlx5dv_devx_obj *(*devx_obj_create) (struct ibv_context *ctx,