'MLX5DV_DR_ACTION_FLAGS_ASO_CT_DIRECTION_INITIATOR' ],
[ 'HAVE_MLX5_DR_ALLOW_DUPLICATE', 'infiniband/mlx5dv.h',
'mlx5dv_dr_domain_allow_duplicate_rules' ],
+ [ 'HAVE_MLX5_IBV_REG_MR_IOVA', 'infiniband/verbs.h',
+ 'ibv_reg_mr_iova' ],
]
config = configuration_data()
foreach arg:has_sym_args
return ibv_reg_mr(pd, addr, length, access);
}
+static struct ibv_mr *
+mlx5_glue_reg_mr_iova(struct ibv_pd *pd, void *addr, size_t length,
+ uint64_t iova, int access)
+{
+#ifdef HAVE_MLX5_IBV_REG_MR_IOVA
+ return ibv_reg_mr_iova(pd, addr, length, iova, access);
+#else
+ (void)pd;
+ (void)addr;
+ (void)length;
+ (void)iova;
+ (void)access;
+ errno = ENOTSUP;
+ return NULL;
+#endif
+}
+
static struct ibv_mr *
mlx5_glue_alloc_null_mr(struct ibv_pd *pd)
{
.destroy_qp = mlx5_glue_destroy_qp,
.modify_qp = mlx5_glue_modify_qp,
.reg_mr = mlx5_glue_reg_mr,
+ .reg_mr_iova = mlx5_glue_reg_mr_iova,
.alloc_null_mr = mlx5_glue_alloc_null_mr,
.dereg_mr = mlx5_glue_dereg_mr,
.create_counter_set = mlx5_glue_create_counter_set,
int attr_mask);
struct ibv_mr *(*reg_mr)(struct ibv_pd *pd, void *addr,
size_t length, int access);
+ struct ibv_mr *(*reg_mr_iova)(struct ibv_pd *pd, void *addr,
+ size_t length, uint64_t iova,
+ int access);
struct ibv_mr *(*alloc_null_mr)(struct ibv_pd *pd);
int (*dereg_mr)(struct ibv_mr *mr);
struct ibv_counter_set *(*create_counter_set)