On 2017/12/15 20:48, Yuanhan Liu wrote:
On Fri, Dec 15, 2017 at 10:33:41AM +0000, Loftus, Ciara wrote: >> >> Hi Junjie, >> >> On 12/13/2017 05:50 PM, Junjie Chen wrote: >>> This fix dequeue zero copy can not work with Qemu >>> version >= 2.7. Since from Qemu 2.7 virtio device >>> use virtio-1 protocol, the zero copy code path >>> forget to add offset to buffer address. >>> >>> Signed-off-by: Junjie Chen <[email protected]> >>> --- >>> lib/librte_vhost/virtio_net.c | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c >>> index 6fee16e..79d80f7 100644 >>> --- a/lib/librte_vhost/virtio_net.c >>> +++ b/lib/librte_vhost/virtio_net.c >>> @@ -977,7 +977,8 @@ copy_desc_to_mbuf(struct virtio_net *dev, struct >> vhost_virtqueue *vq, >>> desc->addr + desc_offset, >> cpy_len)))) { >>> cur->data_len = cpy_len; >>> cur->data_off = 0; >>> - cur->buf_addr = (void *)(uintptr_t)desc_addr; >>> + cur->buf_addr = (void *)(uintptr_t)(desc_addr >>> + + desc_offset); >>> cur->buf_iova = hpa; >>> >>> /* >>> >> >> Thanks for fixing this. >> >> Reviewed-by: Maxime Coquelin <[email protected]> >> >> Maxime > > Thanks for the fix. Can this be considered for the stable branch?Yes, I think so. Applied to dpdk-next-virtio, with Fixes: b0a985d1f340 ("vhost: add dequeue zero copy") Cc: [email protected] Thanks. --yliu
@Yuanhan & Maxime, sorry to interrupt here. I meet the same issue recently. Could the "cur->data_off" field be used here with the value "desc_offset"? (I don't go through all the code and am a little confused about the "0". Is there any detail description about the "data_off" field?) Thanks

