vhost: fix Windows VM hang
authorZhihong Wang <zhihong.wang@intel.com>
Tue, 20 Sep 2016 02:00:12 +0000 (22:00 -0400)
committerYuanhan Liu <yuanhan.liu@linux.intel.com>
Thu, 13 Oct 2016 08:29:31 +0000 (10:29 +0200)
commitf46f6551436a5a7c8509a4cbade1a7fda39905b3
tree22c3d70dfb2b36d6a95ee7aba05799a49f1701c9
parent4ce97c6f6b4fc17383266f33f2f74b5f5ea0f8f0
vhost: fix Windows VM hang

This patch fixes a Windows VM compatibility issue in DPDK 16.07 vhost code
which causes the guest to hang once any packets are enqueued when mrg_rxbuf
is turned on by setting the right id and len in the used ring.

As defined in virtio spec 0.95 and 1.0, in each used ring element, id means
index of start of used descriptor chain, and len means total length of the
descriptor chain which was written to. While in 16.07 code, index of the
last descriptor is assigned to id, and the length of the last descriptor is
assigned to len.

How to test?

 1. Start testpmd in the host with a vhost port.

 2. Start a Windows VM image with qemu and connect to the vhost port.

 3. Start io forwarding with tx_first in host testpmd.

For 16.07 code, the Windows VM will hang once any packets are enqueued.

Signed-off-by: Zhihong Wang <zhihong.wang@intel.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
lib/librte_vhost/virtio_net.c