drivers: update registration macro usage
[dpdk.git] / drivers / net / mlx5 / mlx5_txq.c
index 7b2dc7c..6fe61c4 100644 (file)
@@ -320,7 +320,13 @@ txq_ctrl_setup(struct rte_eth_dev *dev, struct txq_ctrl *txq_ctrl,
                        .max_send_wr = ((priv->device_attr.max_qp_wr < desc) ?
                                        priv->device_attr.max_qp_wr :
                                        desc),
-                       /* Max number of scatter/gather elements in a WR. */
+                       /*
+                        * Max number of scatter/gather elements in a WR,
+                        * must be 1 to prevent libmlx5 from trying to affect
+                        * too much memory. TX gather is not impacted by the
+                        * priv->device_attr.max_sge limit and will still work
+                        * properly.
+                        */
                        .max_send_sge = 1,
                },
                .qp_type = IBV_QPT_RAW_PACKET,
@@ -332,6 +338,10 @@ txq_ctrl_setup(struct rte_eth_dev *dev, struct txq_ctrl *txq_ctrl,
                .comp_mask = (IBV_EXP_QP_INIT_ATTR_PD |
                              IBV_EXP_QP_INIT_ATTR_RES_DOMAIN),
        };
+       if (priv->txq_inline && priv->txqs_n >= priv->txqs_inline) {
+               tmpl.txq.max_inline = priv->txq_inline;
+               attr.init.cap.max_inline_data = tmpl.txq.max_inline;
+       }
        tmpl.qp = ibv_exp_create_qp(priv->ctx, &attr.init);
        if (tmpl.qp == NULL) {
                ret = (errno ? errno : EINVAL);
@@ -339,6 +349,11 @@ txq_ctrl_setup(struct rte_eth_dev *dev, struct txq_ctrl *txq_ctrl,
                      (void *)dev, strerror(ret));
                goto error;
        }
+       DEBUG("TX queue capabilities: max_send_wr=%u, max_send_sge=%u,"
+             " max_inline_data=%u",
+             attr.init.cap.max_send_wr,
+             attr.init.cap.max_send_sge,
+             attr.init.cap.max_inline_data);
        attr.mod = (struct ibv_exp_qp_attr){
                /* Move the QP to this state. */
                .qp_state = IBV_QPS_INIT,
@@ -394,7 +409,7 @@ txq_ctrl_setup(struct rte_eth_dev *dev, struct txq_ctrl *txq_ctrl,
                .obj = tmpl.qp,
                /* Enable multi-packet send if supported. */
                .family_flags =
-                       (priv->mps ?
+                       ((priv->mps && !priv->sriov) ?
                         IBV_EXP_QP_BURST_CREATE_ENABLE_MULTI_PACKET_SEND_WR :
                         0),
        };