return ibv_query_device_ex(context, input, attr);
}
+static int
+mlx5_glue_query_rt_values_ex(struct ibv_context *context,
+ struct ibv_values_ex *values)
+{
+ return ibv_query_rt_values_ex(context, values);
+}
+
static int
mlx5_glue_query_port(struct ibv_context *context, uint8_t port_num,
struct ibv_port_attr *port_attr)
{
#ifdef HAVE_IBV_FLOW_DV_SUPPORT
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_destroy_action(action);
+ return mlx5dv_dr_action_destroy(action);
#else
struct mlx5dv_flow_action_attr *attr = action;
int res = 0;
#ifndef HAVE_IBV_DEVICE_COUNTERS_SET_V45
(void)context;
(void)init_attr;
+ errno = ENOTSUP;
return NULL;
#else
return ibv_create_counters(context, init_attr);
mlx5_glue_dr_create_flow_action_dest_flow_tbl(void *tbl)
{
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_create_action_dest_flow_table(tbl);
+ return mlx5dv_dr_action_create_dest_table(tbl);
#else
(void)tbl;
+ errno = ENOTSUP;
return NULL;
#endif
}
static void *
-mlx5_glue_dr_create_flow_action_dest_vport(void *ns, uint32_t vport)
+mlx5_glue_dr_create_flow_action_dest_vport(void *domain, uint32_t vport)
{
#ifdef HAVE_MLX5DV_DR_ESWITCH
- return mlx5dv_dr_create_action_dest_vport(ns, vport);
+ return mlx5dv_dr_action_create_dest_vport(domain, vport);
#else
- (void)ns;
+ (void)domain;
(void)vport;
+ errno = ENOTSUP;
return NULL;
#endif
}
static void *
-mlx5_glue_dr_create_flow_tbl(void *ns, uint32_t level)
+mlx5_glue_dr_create_flow_action_drop(void)
+{
+#ifdef HAVE_MLX5DV_DR_ESWITCH
+ return mlx5dv_dr_action_create_drop();
+#else
+ errno = ENOTSUP;
+ return NULL;
+#endif
+}
+
+static void *
+mlx5_glue_dr_create_flow_tbl(void *domain, uint32_t level)
{
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_create_ft(ns, level);
+ return mlx5dv_dr_table_create(domain, level);
#else
- (void)ns;
+ (void)domain;
(void)level;
+ errno = ENOTSUP;
return NULL;
#endif
}
mlx5_glue_dr_destroy_flow_tbl(void *tbl)
{
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_destroy_ft(tbl);
+ return mlx5dv_dr_table_destroy(tbl);
#else
(void)tbl;
- return 0;
+ errno = ENOTSUP;
+ return errno;
#endif
}
static void *
-mlx5_glue_dr_create_ns(struct ibv_context *ctx,
- enum mlx5dv_dr_ns_domain domain)
+mlx5_glue_dr_create_domain(struct ibv_context *ctx,
+ enum mlx5dv_dr_domain_type domain)
{
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_create_ns(ctx, domain);
+ return mlx5dv_dr_domain_create(ctx, domain);
#else
(void)ctx;
(void)domain;
+ errno = ENOTSUP;
return NULL;
#endif
}
static int
-mlx5_glue_dr_destroy_ns(void *ns)
+mlx5_glue_dr_destroy_domain(void *domain)
{
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_destroy_ns(ns);
+ return mlx5dv_dr_domain_destroy(domain);
#else
- (void)ns;
- return 0;
+ (void)domain;
+ errno = ENOTSUP;
+ return errno;
#endif
}
(void)context;
(void)wq_attr;
(void)mlx5_wq_attr;
+ errno = ENOTSUP;
return NULL;
#else
return mlx5dv_create_wq(context, wq_attr, mlx5_wq_attr);
(void)context;
(void)qp_init_attr_ex;
(void)dv_qp_init_attr;
+ errno = ENOTSUP;
return NULL;
#endif
}
#ifdef HAVE_IBV_FLOW_DV_SUPPORT
#ifdef HAVE_MLX5DV_DR
(void)context;
- return mlx5dv_dr_create_matcher(tbl, matcher_attr->priority,
- matcher_attr->match_criteria_enable,
- matcher_attr->match_mask);
+ return mlx5dv_dr_matcher_create(tbl, matcher_attr->priority,
+ matcher_attr->match_criteria_enable,
+ matcher_attr->match_mask);
#else
(void)tbl;
return mlx5dv_create_flow_matcher(context, matcher_attr);
(void)context;
(void)matcher_attr;
(void)tbl;
+ errno = ENOTSUP;
return NULL;
#endif
}
{
#ifdef HAVE_IBV_FLOW_DV_SUPPORT
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_create_rule(matcher, match_value, num_actions,
+ return mlx5dv_dr_rule_create(matcher, match_value, num_actions,
(struct mlx5dv_dr_action **)actions);
#else
struct mlx5dv_flow_action_attr actions_attr[8];
{
#ifdef HAVE_IBV_FLOW_DV_SUPPORT
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_create_action_devx_counter(counter_obj, offset);
+ return mlx5dv_dr_action_create_flow_counter(counter_obj, offset);
#else
struct mlx5dv_flow_action_attr *action;
#else
(void)counter_obj;
(void)offset;
+ errno = ENOTSUP;
return NULL;
#endif
}
{
#ifdef HAVE_IBV_FLOW_DV_SUPPORT
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_create_action_dest_ibv_qp(qp);
+ return mlx5dv_dr_action_create_dest_ibv_qp(qp);
#else
struct mlx5dv_flow_action_attr *action;
#endif
#else
(void)qp;
+ errno = ENOTSUP;
return NULL;
#endif
}
mlx5_glue_dv_create_flow_action_modify_header
(struct ibv_context *ctx,
enum mlx5dv_flow_table_type ft_type,
- void *ns, uint64_t flags,
+ void *domain, uint64_t flags,
size_t actions_sz,
uint64_t actions[])
{
#ifdef HAVE_MLX5DV_DR
(void)ctx;
(void)ft_type;
- return mlx5dv_dr_create_action_modify_header(ns, flags, actions_sz,
- actions);
+ return mlx5dv_dr_action_create_modify_header(domain, flags, actions_sz,
+ (__be64 *)actions);
#else
struct mlx5dv_flow_action_attr *action;
- (void)ns;
+ (void)domain;
(void)flags;
action = malloc(sizeof(*action));
if (!action)
#else
(void)ctx;
(void)ft_type;
- (void)ns;
+ (void)domain;
(void)flags;
(void)actions_sz;
(void)actions;
+ errno = ENOTSUP;
return NULL;
#endif
}
mlx5_glue_dv_create_flow_action_packet_reformat
(struct ibv_context *ctx,
enum mlx5dv_flow_action_packet_reformat_type reformat_type,
- enum mlx5dv_flow_table_type ft_type, struct mlx5dv_dr_ns *ns,
+ enum mlx5dv_flow_table_type ft_type,
+ struct mlx5dv_dr_domain *domain,
uint32_t flags, size_t data_sz, void *data)
{
#ifdef HAVE_IBV_FLOW_DV_SUPPORT
#ifdef HAVE_MLX5DV_DR
(void)ctx;
(void)ft_type;
- return mlx5dv_dr_create_action_packet_reformat(ns, flags,
+ return mlx5dv_dr_action_create_packet_reformat(domain, flags,
reformat_type, data_sz,
data);
#else
- (void)ns;
+ (void)domain;
(void)flags;
struct mlx5dv_flow_action_attr *action;
(void)ctx;
(void)reformat_type;
(void)ft_type;
- (void)ns;
+ (void)domain;
(void)flags;
(void)data_sz;
(void)data;
+ errno = ENOTSUP;
return NULL;
#endif
}
{
#ifdef HAVE_IBV_FLOW_DV_SUPPORT
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_create_action_tag(tag);
+ return mlx5dv_dr_action_create_tag(tag);
#else
struct mlx5dv_flow_action_attr *action;
action = malloc(sizeof(*action));
#endif
#endif
(void)tag;
+ errno = ENOTSUP;
return NULL;
}
mlx5_glue_dv_destroy_flow(void *flow_id)
{
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_destroy_rule(flow_id);
+ return mlx5dv_dr_rule_destroy(flow_id);
#else
return ibv_destroy_flow(flow_id);
#endif
{
#ifdef HAVE_IBV_FLOW_DV_SUPPORT
#ifdef HAVE_MLX5DV_DR
- return mlx5dv_dr_destroy_matcher(matcher);
+ return mlx5dv_dr_matcher_destroy(matcher);
#else
return mlx5dv_destroy_flow_matcher(matcher);
#endif
#else
(void)matcher;
- return 0;
+ errno = ENOTSUP;
+ return errno;
#endif
}
});
#else
(void)device;
+ errno = ENOTSUP;
return NULL;
#endif
}
(void)inlen;
(void)out;
(void)outlen;
+ errno = ENOTSUP;
return NULL;
#endif
}
#endif
}
+static struct mlx5dv_devx_cmd_comp *
+mlx5_glue_devx_create_cmd_comp(struct ibv_context *ctx)
+{
+#ifdef HAVE_IBV_DEVX_ASYNC
+ return mlx5dv_devx_create_cmd_comp(ctx);
+#else
+ (void)ctx;
+ errno = -ENOTSUP;
+ return NULL;
+#endif
+}
+
+static void
+mlx5_glue_devx_destroy_cmd_comp(struct mlx5dv_devx_cmd_comp *cmd_comp)
+{
+#ifdef HAVE_IBV_DEVX_ASYNC
+ mlx5dv_devx_destroy_cmd_comp(cmd_comp);
+#else
+ (void)cmd_comp;
+ errno = -ENOTSUP;
+#endif
+}
+
+static int
+mlx5_glue_devx_obj_query_async(struct mlx5dv_devx_obj *obj, const void *in,
+ size_t inlen, size_t outlen, uint64_t wr_id,
+ struct mlx5dv_devx_cmd_comp *cmd_comp)
+{
+#ifdef HAVE_IBV_DEVX_ASYNC
+ return mlx5dv_devx_obj_query_async(obj, in, inlen, outlen, wr_id,
+ cmd_comp);
+#else
+ (void)obj;
+ (void)in;
+ (void)inlen;
+ (void)outlen;
+ (void)wr_id;
+ (void)cmd_comp;
+ return -ENOTSUP;
+#endif
+}
+
+static int
+mlx5_glue_devx_get_async_cmd_comp(struct mlx5dv_devx_cmd_comp *cmd_comp,
+ struct mlx5dv_devx_async_cmd_hdr *cmd_resp,
+ size_t cmd_resp_len)
+{
+#ifdef HAVE_IBV_DEVX_ASYNC
+ return mlx5dv_devx_get_async_cmd_comp(cmd_comp, cmd_resp,
+ cmd_resp_len);
+#else
+ (void)cmd_comp;
+ (void)cmd_resp;
+ (void)cmd_resp_len;
+ return -ENOTSUP;
+#endif
+}
+
+static struct mlx5dv_devx_umem *
+mlx5_glue_devx_umem_reg(struct ibv_context *context, void *addr, size_t size,
+ uint32_t access)
+{
+#ifdef HAVE_IBV_DEVX_OBJ
+ return mlx5dv_devx_umem_reg(context, addr, size, access);
+#else
+ (void)context;
+ (void)addr;
+ (void)size;
+ (void)access;
+ errno = -ENOTSUP;
+ return NULL;
+#endif
+}
+
+static int
+mlx5_glue_devx_umem_dereg(struct mlx5dv_devx_umem *dv_devx_umem)
+{
+#ifdef HAVE_IBV_DEVX_OBJ
+ return mlx5dv_devx_umem_dereg(dv_devx_umem);
+#else
+ (void)dv_devx_umem;
+ return -ENOTSUP;
+#endif
+}
+
alignas(RTE_CACHE_LINE_SIZE)
const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue){
.version = MLX5_GLUE_VERSION,
.close_device = mlx5_glue_close_device,
.query_device = mlx5_glue_query_device,
.query_device_ex = mlx5_glue_query_device_ex,
+ .query_rt_values_ex = mlx5_glue_query_rt_values_ex,
.query_port = mlx5_glue_query_port,
.create_comp_channel = mlx5_glue_create_comp_channel,
.destroy_comp_channel = mlx5_glue_destroy_comp_channel,
mlx5_glue_dr_create_flow_action_dest_flow_tbl,
.dr_create_flow_action_dest_vport =
mlx5_glue_dr_create_flow_action_dest_vport,
+ .dr_create_flow_action_drop =
+ mlx5_glue_dr_create_flow_action_drop,
.dr_create_flow_tbl = mlx5_glue_dr_create_flow_tbl,
.dr_destroy_flow_tbl = mlx5_glue_dr_destroy_flow_tbl,
- .dr_create_ns = mlx5_glue_dr_create_ns,
- .dr_destroy_ns = mlx5_glue_dr_destroy_ns,
+ .dr_create_domain = mlx5_glue_dr_create_domain,
+ .dr_destroy_domain = mlx5_glue_dr_destroy_domain,
.dv_create_cq = mlx5_glue_dv_create_cq,
.dv_create_wq = mlx5_glue_dv_create_wq,
.dv_query_device = mlx5_glue_dv_query_device,
.devx_obj_query = mlx5_glue_devx_obj_query,
.devx_obj_modify = mlx5_glue_devx_obj_modify,
.devx_general_cmd = mlx5_glue_devx_general_cmd,
+ .devx_create_cmd_comp = mlx5_glue_devx_create_cmd_comp,
+ .devx_destroy_cmd_comp = mlx5_glue_devx_destroy_cmd_comp,
+ .devx_obj_query_async = mlx5_glue_devx_obj_query_async,
+ .devx_get_async_cmd_comp = mlx5_glue_devx_get_async_cmd_comp,
+ .devx_umem_reg = mlx5_glue_devx_umem_reg,
+ .devx_umem_dereg = mlx5_glue_devx_umem_dereg,
};