[v2,11/13] net/mlx5: remove ibv_* dependency in Rx/Tx objects

Message ID 20200825093116.26538-12-ophirmu@nvidia.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series mlx5 PMD multi OS support - part #4 |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Ophir Munk Aug. 25, 2020, 9:31 a.m. UTC
  From: Ophir Munk <ophirmu@mellanox.com>

Replace pointers to ibv structs with pointers to void (file
mlx5_rxtx.h).  Specifically the following pointers were replaced:
'struct ibv_cq *', 'struct ibv_wq *', 'struct ibv_comp_channel *',
'struct ibv_rwq_ind_table *a', 'struct ibv_qp *'.

Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxq.c     |  5 +++--
 drivers/net/mlx5/mlx5_rxtx.h    | 14 +++++++-------
 drivers/net/mlx5/mlx5_trigger.c |  3 ++-
 drivers/net/mlx5/mlx5_txq.c     |  2 +-
 4 files changed, 13 insertions(+), 11 deletions(-)
  

Patch

diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 92d8876..946f745 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -1790,7 +1790,8 @@  mlx5_rxq_obj_new(struct rte_eth_dev *dev, uint16_t idx,
 				rte_errno = ENOMEM;
 				goto error;
 			}
-			tmpl->fd = tmpl->ibv_channel->fd;
+			tmpl->fd = ((struct ibv_comp_channel *)
+					(tmpl->ibv_channel))->fd;
 		} else if (tmpl->type == MLX5_RXQ_OBJ_TYPE_DEVX_RQ) {
 			int devx_ev_flag =
 			  MLX5DV_DEVX_CREATE_EVENT_CHANNEL_FLAGS_OMIT_EV_DATA;
@@ -3299,7 +3300,7 @@  mlx5_ind_table_obj_drop_new(struct rte_eth_dev *dev)
 		(priv->sh->ctx,
 		 &(struct ibv_rwq_ind_table_init_attr){
 			.log_ind_tbl_size = 0,
-			.ind_tbl = &rxq->wq,
+			.ind_tbl = (struct ibv_wq **)&rxq->wq,
 			.comp_mask = 0,
 		 });
 	if (!tmpl.ind_table) {
diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index 0fc7754..f3fe2e1 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -178,9 +178,9 @@  struct mlx5_rxq_obj {
 	RTE_STD_C11
 	union {
 		struct {
-			struct ibv_wq *wq; /* Work Queue. */
-			struct ibv_cq *ibv_cq; /* Completion Queue. */
-			struct ibv_comp_channel *ibv_channel;
+			void *wq; /* Work Queue. */
+			void *ibv_cq; /* Completion Queue. */
+			void *ibv_channel;
 		};
 		struct {
 			struct mlx5_devx_obj *rq; /* DevX Rx Queue object. */
@@ -229,7 +229,7 @@  struct mlx5_ind_table_obj {
 	enum mlx5_ind_tbl_type type;
 	RTE_STD_C11
 	union {
-		struct ibv_rwq_ind_table *ind_table; /**< Indirection table. */
+		void *ind_table; /**< Indirection table. */
 		struct mlx5_devx_obj *rqt; /* DevX RQT object. */
 	};
 	uint32_t queues_n; /**< Number of queues in the list. */
@@ -243,7 +243,7 @@  struct mlx5_hrxq {
 	struct mlx5_ind_table_obj *ind_table; /* Indirection table. */
 	RTE_STD_C11
 	union {
-		struct ibv_qp *qp; /* Verbs queue pair. */
+		void *qp; /* Verbs queue pair. */
 		struct mlx5_devx_obj *tir; /* DevX TIR object. */
 	};
 #ifdef HAVE_IBV_FLOW_DV_SUPPORT
@@ -350,8 +350,8 @@  struct mlx5_txq_obj {
 	RTE_STD_C11
 	union {
 		struct {
-			struct ibv_cq *cq; /* Completion Queue. */
-			struct ibv_qp *qp; /* Queue Pair. */
+			void *cq; /* Completion Queue. */
+			void *qp; /* Queue Pair. */
 		};
 		struct {
 			struct mlx5_devx_obj *sq;
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 6f1e6d4..549af35 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -153,7 +153,8 @@  mlx5_rxq_start(struct rte_eth_dev *dev)
 		if (!rxq_ctrl->obj)
 			goto error;
 		if (obj_type == MLX5_RXQ_OBJ_TYPE_IBV)
-			rxq_ctrl->wqn = rxq_ctrl->obj->wq->wq_num;
+			rxq_ctrl->wqn =
+				((struct ibv_wq *)(rxq_ctrl->obj->wq))->wq_num;
 		else if (obj_type == MLX5_RXQ_OBJ_TYPE_DEVX_RQ)
 			rxq_ctrl->wqn = rxq_ctrl->obj->rq->id;
 	}
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index fed9d8a..66ad368 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -1317,7 +1317,7 @@  mlx5_txq_obj_new(struct rte_eth_dev *dev, uint16_t idx,
 	txq_data->cqe_n = log2above(cq_info.cqe_cnt);
 	txq_data->cqe_s = 1 << txq_data->cqe_n;
 	txq_data->cqe_m = txq_data->cqe_s - 1;
-	txq_data->qp_num_8s = tmpl.qp->qp_num << 8;
+	txq_data->qp_num_8s = ((struct ibv_qp *)tmpl.qp)->qp_num << 8;
 	txq_data->wqes = qp.sq.buf;
 	txq_data->wqe_n = log2above(qp.sq.wqe_cnt);
 	txq_data->wqe_s = 1 << txq_data->wqe_n;