common/mlx5: fix PCI driver name
[dpdk.git] / drivers / net / mlx5 / mlx5_rxq.c
index f35ffe2..e75f5ee 100644 (file)
@@ -212,9 +212,10 @@ rxq_alloc_elts_sprq(struct mlx5_rxq_ctrl *rxq_ctrl)
 
        /* Iterate on segments. */
        for (i = 0; (i != elts_n); ++i) {
+               struct mlx5_eth_rxseg *seg = &rxq_ctrl->rxq.rxseg[i % sges_n];
                struct rte_mbuf *buf;
 
-               buf = rte_pktmbuf_alloc(rxq_ctrl->rxq.mp);
+               buf = rte_pktmbuf_alloc(seg->mp);
                if (buf == NULL) {
                        DRV_LOG(ERR, "port %u empty mbuf pool",
                                PORT_ID(rxq_ctrl->priv));
@@ -227,12 +228,10 @@ rxq_alloc_elts_sprq(struct mlx5_rxq_ctrl *rxq_ctrl)
                MLX5_ASSERT(rte_pktmbuf_data_len(buf) == 0);
                MLX5_ASSERT(rte_pktmbuf_pkt_len(buf) == 0);
                MLX5_ASSERT(!buf->next);
-               /* Only the first segment keeps headroom. */
-               if (i % sges_n)
-                       SET_DATA_OFF(buf, 0);
+               SET_DATA_OFF(buf, seg->offset);
                PORT(buf) = rxq_ctrl->rxq.port_id;
-               DATA_LEN(buf) = rte_pktmbuf_tailroom(buf);
-               PKT_LEN(buf) = DATA_LEN(buf);
+               DATA_LEN(buf) = seg->length;
+               PKT_LEN(buf) = seg->length;
                NB_SEGS(buf) = 1;
                (*rxq_ctrl->rxq.elts)[i] = buf;
        }
@@ -403,6 +402,7 @@ mlx5_get_rx_queue_offloads(struct rte_eth_dev *dev)
        struct mlx5_priv *priv = dev->data->dev_private;
        struct mlx5_dev_config *config = &priv->config;
        uint64_t offloads = (DEV_RX_OFFLOAD_SCATTER |
+                            RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT |
                             DEV_RX_OFFLOAD_TIMESTAMP |
                             DEV_RX_OFFLOAD_JUMBO_FRAME |
                             DEV_RX_OFFLOAD_RSS_HASH);