On Fri, 5 Aug 2016 11:36:42 +0000 Jianfeng Tan <jianfeng.tan at intel.com> wrote:
> When virtio_user is used with VPP's native vhost user, it cannot > send/receive any packets. > > The root cause is that vpp-vhost-user translates the message > VHOST_USER_SET_FEATURES as puting this device into init state, > aka, zero all related structures. However, previous code > puts this message at last in the whole initialization process, > which leads to all previous information are zeroed. Not sure what correct behavior is here. It could be that VPP native vhost user is broken. What does QEMU/KVM vhost do in this case? I would take that as the authoritative source for semantics. > To fix this issue, we rearrange the sequence of those messages. > - step 0, send VHOST_USER_SET_VRING_CALL so that vhost allocates > virtqueue structures; > - step 1, send VHOST_USER_SET_FEATURES to confirm the features; > - step 2, send VHOST_USER_SET_MEM_TABLE to share mem regions; > - step 3, send VHOST_USER_SET_VRING_NUM, VHOST_USER_SET_VRING_BASE, > VHOST_USER_SET_VRING_ADDR, VHOST_USER_SET_VRING_KICK for each > queue; > - ... > > Fixes: 37a7eb2ae816 ("net/virtio-user: add device emulation layer")