[dpdk-dev] net/virtio: fix mbuf data offset for simple Rx function

Message ID 20180212131636.25858-1-olivier.matz@6wind.com
State Superseded, archived
Headers show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/checkpatch success coding style OK

Commit Message

Olivier Matz Feb. 12, 2018, 1:16 p.m.
The mbuf->data_off was was not properly set for the first received
mbufs. Fix this by setting it in virtqueue_enqueue_recv_refill_simple(),
which is used to enqueue the first mbuf in the ring.

The function virtio_rxq_rearm_vec(), which is used to rearm the ring
with new mbufs, is valid and does not need to be updated.

Fixes: cab0461234e7 ("virtio: fill Rx avail ring with blank mbufs")
Cc: stable@dpdk.org

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 drivers/net/virtio/virtio_rxtx_simple.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Maxime Coquelin Feb. 12, 2018, 3:11 p.m. | #1
Hi Olivier,

On 02/12/2018 02:16 PM, Olivier Matz wrote:
> The mbuf->data_off was was not properly set for the first received
> mbufs. Fix this by setting it in virtqueue_enqueue_recv_refill_simple(),
> which is used to enqueue the first mbuf in the ring.
> 
> The function virtio_rxq_rearm_vec(), which is used to rearm the ring
> with new mbufs, is valid and does not need to be updated.
> 
> Fixes: cab0461234e7 ("virtio: fill Rx avail ring with blank mbufs")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> ---
>   drivers/net/virtio/virtio_rxtx_simple.c | 1 +
>   1 file changed, 1 insertion(+)
> 

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks!
Maxime

Patch

diff --git a/drivers/net/virtio/virtio_rxtx_simple.c b/drivers/net/virtio/virtio_rxtx_simple.c
index 7247a0822..b1f610ffa 100644
--- a/drivers/net/virtio/virtio_rxtx_simple.c
+++ b/drivers/net/virtio/virtio_rxtx_simple.c
@@ -36,6 +36,7 @@  virtqueue_enqueue_recv_refill_simple(struct virtqueue *vq,
 	uint16_t desc_idx;
 
 	cookie->port = vq->rxq.port_id;
+	cookie->data_off = RTE_PKTMBUF_HEADROOM;
 
 	desc_idx = vq->vq_avail_idx & (vq->vq_nentries - 1);
 	dxp = &vq->vq_descx[desc_idx];