net/mlx5: share Tx queue object modification
authorMichael Baum <michaelba@nvidia.com>
Thu, 1 Oct 2020 14:09:23 +0000 (14:09 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 9 Oct 2020 11:17:42 +0000 (13:17 +0200)
Use new modify_qp functions for Tx object creation in DevX and Verbs
modules.

Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
drivers/net/mlx5/linux/mlx5_verbs.c
drivers/net/mlx5/mlx5_devx.c
drivers/net/mlx5/mlx5_txq.c

index 7d5ea37..ad6e3d7 100644 (file)
@@ -922,7 +922,6 @@ mlx5_txq_ibv_obj_new(struct rte_eth_dev *dev, uint16_t idx)
        struct mlx5_txq_ctrl *txq_ctrl =
                container_of(txq_data, struct mlx5_txq_ctrl, txq);
        struct mlx5_txq_obj *txq_obj = txq_ctrl->obj;
-       struct ibv_qp_attr mod;
        unsigned int cqe_n;
        struct mlx5dv_qp qp;
        struct mlx5dv_cq cq_info;
@@ -956,37 +955,10 @@ mlx5_txq_ibv_obj_new(struct rte_eth_dev *dev, uint16_t idx)
                rte_errno = errno;
                goto error;
        }
-       mod = (struct ibv_qp_attr){
-               /* Move the QP to this state. */
-               .qp_state = IBV_QPS_INIT,
-               /* IB device port number. */
-               .port_num = (uint8_t)priv->dev_port,
-       };
-       ret = mlx5_glue->modify_qp(txq_obj->qp, &mod,
-                                  (IBV_QP_STATE | IBV_QP_PORT));
-       if (ret) {
-               DRV_LOG(ERR,
-                       "Port %u Tx queue %u QP state to IBV_QPS_INIT failed.",
-                       dev->data->port_id, idx);
-               rte_errno = errno;
-               goto error;
-       }
-       mod = (struct ibv_qp_attr){
-               .qp_state = IBV_QPS_RTR
-       };
-       ret = mlx5_glue->modify_qp(txq_obj->qp, &mod, IBV_QP_STATE);
+       ret = mlx5_ibv_modify_qp(txq_obj, MLX5_TXQ_MOD_RST2RDY,
+                                (uint8_t)priv->dev_port);
        if (ret) {
-               DRV_LOG(ERR,
-                       "Port %u Tx queue %u QP state to IBV_QPS_RTR failed.",
-                       dev->data->port_id, idx);
-               rte_errno = errno;
-               goto error;
-       }
-       mod.qp_state = IBV_QPS_RTS;
-       ret = mlx5_glue->modify_qp(txq_obj->qp, &mod, IBV_QP_STATE);
-       if (ret) {
-               DRV_LOG(ERR,
-                       "Port %u Tx queue %u QP state to IBV_QPS_RTS failed.",
+               DRV_LOG(ERR, "Port %u Tx queue %u QP state modifying failed.",
                        dev->data->port_id, idx);
                rte_errno = errno;
                goto error;
index 7404a15..c876ae9 100644 (file)
@@ -1237,7 +1237,6 @@ mlx5_txq_devx_obj_new(struct rte_eth_dev *dev, uint16_t idx)
        return -rte_errno;
 #else
        struct mlx5_dev_ctx_shared *sh = priv->sh;
-       struct mlx5_devx_modify_sq_attr msq_attr = { 0 };
        struct mlx5_txq_obj *txq_obj = txq_ctrl->obj;
        void *reg_addr;
        uint32_t cqe_n;
@@ -1286,13 +1285,11 @@ mlx5_txq_devx_obj_new(struct rte_eth_dev *dev, uint16_t idx)
        *txq_data->qp_db = 0;
        txq_data->qp_num_8s = txq_obj->sq_devx->id << 8;
        /* Change Send Queue state to Ready-to-Send. */
-       msq_attr.sq_state = MLX5_SQC_STATE_RST;
-       msq_attr.state = MLX5_SQC_STATE_RDY;
-       ret = mlx5_devx_cmd_modify_sq(txq_obj->sq_devx, &msq_attr);
+       ret = mlx5_devx_modify_sq(txq_obj, MLX5_TXQ_MOD_RST2RDY, 0);
        if (ret) {
                rte_errno = errno;
                DRV_LOG(ERR,
-                       "Port %u Tx queue %u SP state to SQC_STATE_RDY failed.",
+                       "Port %u Tx queue %u SQ state to SQC_STATE_RDY failed.",
                        dev->data->port_id, idx);
                goto error;
        }
index c31e446..af84f5f 100644 (file)
@@ -16,8 +16,6 @@
 #include <rte_common.h>
 #include <rte_eal_paging.h>
 
-#include <mlx5_glue.h>
-#include <mlx5_devx_cmds.h>
 #include <mlx5_common.h>
 #include <mlx5_common_mr.h>
 #include <mlx5_malloc.h>