On Tue, Mar 4, 2014 at 7:38 PM, Michael S. Tsirkin <m...@redhat.com> wrote:
> On Tue, Mar 04, 2014 at 07:22:56PM +0100, Antonios Motakis wrote: > > This will be used in a following patch to ensure that a vhost-user > > client reconnecting to QEMU supports the features that were exposed > > by the first client that initiated the virtio-net session. > > > > Signed-off-by: Antonios Motakis <a.mota...@virtualopensystems.com> > > Signed-off-by: Nikolay Nikolaev <n.nikol...@virtualopensystems.com> > > Why isn't checking features, or backend_features field sufficient? > > Since we unfortunately need to remove reconnect support, this will go away too. > > > --- > > hw/net/vhost_net.c | 10 ++++++++++ > > include/hw/virtio/vhost.h | 1 + > > include/net/vhost_net.h | 2 ++ > > 3 files changed, 13 insertions(+) > > > > diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c > > index 0fb4fa5..38e1e8a 100644 > > --- a/hw/net/vhost_net.c > > +++ b/hw/net/vhost_net.c > > @@ -80,6 +80,11 @@ void vhost_net_ack_features(struct vhost_net *net, > unsigned features) > > } > > } > > > > +unsigned long long vhost_net_features(VHostNetState *net) > > +{ > > + return net->dev.features; > > +} > > + > > static int vhost_net_get_fd(NetClientState *backend) > > { > > switch (backend->info->type) { > > @@ -112,6 +117,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions > *options) > > > > net->dev.nvqs = 2; > > net->dev.vqs = net->vqs; > > + net->dev.mandatory_features = options->mandatory_features; > > > > r = vhost_dev_init(&net->dev, options->opaque, > > options->force); > > @@ -347,6 +353,10 @@ unsigned vhost_net_get_features(struct vhost_net > *net, unsigned features) > > void vhost_net_ack_features(struct vhost_net *net, unsigned features) > > { > > } > > +unsigned long long vhost_net_features(struct vhost_net *net) > > +{ > > + return 0; > > +} > > > > bool vhost_net_virtqueue_pending(VHostNetState *net, int idx) > > { > > diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h > > index 97641b6..0068d40 100644 > > --- a/include/hw/virtio/vhost.h > > +++ b/include/hw/virtio/vhost.h > > @@ -41,6 +41,7 @@ struct vhost_dev { > > unsigned long long features; > > unsigned long long acked_features; > > unsigned long long backend_features; > > + unsigned long long mandatory_features; > > bool started; > > bool log_enabled; > > vhost_log_chunk_t *log; > > diff --git a/include/net/vhost_net.h b/include/net/vhost_net.h > > index 2067ee2..b39bb45 100644 > > --- a/include/net/vhost_net.h > > +++ b/include/net/vhost_net.h > > @@ -10,6 +10,7 @@ typedef struct VhostNetOptions { > > NetClientState *net_backend; > > void *opaque; > > bool force; > > + unsigned long long mandatory_features; > > } VhostNetOptions; > > > > struct vhost_net *vhost_net_init(VhostNetOptions *options); > > @@ -22,6 +23,7 @@ void vhost_net_cleanup(VHostNetState *net); > > > > unsigned vhost_net_get_features(VHostNetState *net, unsigned features); > > void vhost_net_ack_features(VHostNetState *net, unsigned features); > > +unsigned long long vhost_net_features(VHostNetState *net); > > > > bool vhost_net_virtqueue_pending(VHostNetState *net, int n); > > void vhost_net_virtqueue_mask(VHostNetState *net, VirtIODevice *dev, > > -- > > 1.8.3.2 > -- Antonios Motakis Virtual Open Systems