net/mlx5: fix buffer address posting in SSE Rx
authorYongseok Koh <yskoh@mellanox.com>
Tue, 1 Aug 2017 16:35:20 +0000 (09:35 -0700)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 3 Aug 2017 21:22:25 +0000 (23:22 +0200)
The data_off field of newly allocated mbufs is stale data. This shouldn't
be used in calculating Rx address for device when posting free buffers.
RTE_PKTMBUF_HEADROOM should be used instead and data_off of a mbuf will be
reset on packet reception anyway.

Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
drivers/net/mlx5/mlx5_rxtx_vec_sse.c

index 74e5953..9be48a0 100644 (file)
@@ -568,7 +568,8 @@ rxq_replenish_bulk_mbuf(struct rxq *rxq, uint16_t n)
                return;
        }
        for (i = 0; i < n; ++i)
-               wq[i].addr = htonll(rte_pktmbuf_mtod(elts[i], uintptr_t));
+               wq[i].addr = htonll((uintptr_t)elts[i]->buf_addr +
+                                   RTE_PKTMBUF_HEADROOM);
        rxq->rq_ci += n;
        rte_wmb();
        *rxq->rq_db = htonl(rxq->rq_ci);