union {
volatile void *umem_buf;
volatile struct mlx5_wqe *wqes; /* The SQ ring buffer. */
+ volatile struct mlx5_aso_wqe *aso_wqes;
};
volatile uint32_t *db_rec; /* The SQ doorbell record. */
};
+/* DevX Queue Pair structure. */
+struct mlx5_devx_qp {
+ struct mlx5_devx_obj *qp; /* The QP DevX object. */
+ void *umem_obj; /* The QP umem object. */
+ union {
+ void *umem_buf;
+ struct mlx5_wqe *wqes; /* The QP ring buffer. */
+ struct mlx5_aso_wqe *aso_wqes;
+ };
+ volatile uint32_t *db_rec; /* The QP doorbell record. */
+};
+
+/* DevX Receive Queue structure. */
+struct mlx5_devx_rq {
+ struct mlx5_devx_obj *rq; /* The RQ DevX object. */
+ void *umem_obj; /* The RQ umem object. */
+ volatile void *umem_buf;
+ volatile uint32_t *db_rec; /* The RQ doorbell record. */
+};
/* mlx5_common_devx.c */
uint16_t log_wqbb_n,
struct mlx5_devx_create_sq_attr *attr, int socket);
+__rte_internal
+void mlx5_devx_qp_destroy(struct mlx5_devx_qp *qp);
+
+__rte_internal
+int mlx5_devx_qp_create(void *ctx, struct mlx5_devx_qp *qp_obj,
+ uint16_t log_wqbb_n,
+ struct mlx5_devx_qp_attr *attr, int socket);
+
+__rte_internal
+void mlx5_devx_rq_destroy(struct mlx5_devx_rq *rq);
+
+__rte_internal
+int mlx5_devx_rq_create(void *ctx, struct mlx5_devx_rq *rq_obj,
+ uint32_t wqe_size, uint16_t log_wqbb_n,
+ struct mlx5_devx_create_rq_attr *attr, int socket);
+
+__rte_internal
+int mlx5_devx_qp2rts(struct mlx5_devx_qp *qp, uint32_t remote_qp_id);
+
#endif /* RTE_PMD_MLX5_COMMON_DEVX_H_ */