]> git.droids-corp.org - dpdk.git/blobdiff - drivers/net/mlx5/mlx5_txq.c
net/mlx5: support hardware TSO
[dpdk.git] / drivers / net / mlx5 / mlx5_txq.c
index 949035bd479b6d1eaf13cd2951222d05a2b805ac..995b763ae46de2f0e93b97adbc3f19ff6cd053b4 100644 (file)
@@ -342,6 +342,19 @@ txq_ctrl_setup(struct rte_eth_dev *dev, struct txq_ctrl *txq_ctrl,
                         RTE_CACHE_LINE_SIZE);
                attr.init.cap.max_inline_data =
                        tmpl.txq.max_inline * RTE_CACHE_LINE_SIZE;
+               tmpl.txq.inline_en = 1;
+       }
+       if (priv->tso) {
+               uint16_t max_tso_inline = ((MLX5_MAX_TSO_HEADER +
+                                          (RTE_CACHE_LINE_SIZE - 1)) /
+                                           RTE_CACHE_LINE_SIZE);
+
+               attr.init.max_tso_header =
+                       max_tso_inline * RTE_CACHE_LINE_SIZE;
+               attr.init.comp_mask |= IBV_EXP_QP_INIT_ATTR_MAX_TSO_HEADER;
+               tmpl.txq.max_inline = RTE_MAX(tmpl.txq.max_inline,
+                                             max_tso_inline);
+               tmpl.txq.tso_en = 1;
        }
        tmpl.qp = ibv_exp_create_qp(priv->ctx, &attr.init);
        if (tmpl.qp == NULL) {