Hello!

> > diff --git a/lib/librte_vhost/virtio-net.c b/lib/librte_vhost/virtio-net.c
> > index 03044f6..0ba5045 100644
> > --- a/lib/librte_vhost/virtio-net.c
> > +++ b/lib/librte_vhost/virtio-net.c
> > @@ -74,6 +74,7 @@ static struct virtio_net_config_ll *ll_root;
> >  #define VHOST_SUPPORTED_FEATURES ((1ULL << VIRTIO_NET_F_MRG_RXBUF) | \
> >                             (1ULL << VIRTIO_NET_F_CTRL_VQ) | \
> >                             (1ULL << VIRTIO_NET_F_CTRL_RX) | \
> > +                           (1ULL << VIRTIO_NET_F_GUEST_ANNOUNCE) | \
> 
> Do we really need this? I can understand when guest declare with
> this VIRTIO_NET_F_GUEST_ANNOUNCE flag. With that, guest itself will
> handle the announcement after migration. However, how could I
> understand if it's declared by a vhost-user backend?

 I guess the documentation is unclear. This is due to way how qemu works. It 
queries vhost-user backend for the features, then offers them to the guest. The 
guest then responds with features FROM THE SUGGESTED SET, which it supports. 
So, if the backend does not claim to support this feature, qemu will not offer 
it to the guest, therefore the guest will not try to activate it.
 I think this is done because this feature is only useful for migration. If 
vhost-user backend does not support migration, it needs neither 
VHOST_USER_SEND_RARP nor guest-side announce.
 Actually, i was thinking about patching qemu once, but... The changeset seemed 
too complicated, and i imagined the situation described in the above sentence, 
so decided to abandon it.

Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia


Reply via email to