virtio: fix descriptors pointing to the same buffer
authorHuawei Xie <huawei.xie@intel.com>
Thu, 10 Dec 2015 16:07:32 +0000 (00:07 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 16 Mar 2016 17:52:18 +0000 (18:52 +0100)
The virtio_net_hdr desc all pointed to the same buffer. It doesn't cause
issue because in the simple TX mode we don't use the header. This patch
makes the header desc point to different buffer.

Fixes: b4ae9c505f2e ("virtio: optimize ring layout")

Signed-off-by: Huawei Xie <huawei.xie@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
drivers/net/virtio/virtio_rxtx.c

index e96352c..a7a58be 100644 (file)
@@ -353,7 +353,7 @@ virtio_dev_vring_start(struct virtqueue *vq, int queue_type)
                                vq->vq_ring.desc[i + mid_idx].next = i;
                                vq->vq_ring.desc[i + mid_idx].addr =
                                        vq->virtio_net_hdr_mem +
-                                               mid_idx * vq->hw->vtnet_hdr_size;
+                                               i * vq->hw->vtnet_hdr_size;
                                vq->vq_ring.desc[i + mid_idx].len =
                                        vq->hw->vtnet_hdr_size;
                                vq->vq_ring.desc[i + mid_idx].flags =