Message ID | 20221108170755.92768-5-eperezma@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASID support in vhost-vdpa net | expand |
On Wed, Nov 9, 2022 at 1:08 AM Eugenio Pérez <eperezma@redhat.com> wrote: > > It will be reused at vdpa device start so let's extract in its own function > > Signed-off-by: Eugenio Pérez <eperezma@redhat.com> > --- Acked-by: Jason Wang <jasowang@redhat.com> Thanks > net/vhost-vdpa.c | 26 +++++++++++++++++--------- > 1 file changed, 17 insertions(+), 9 deletions(-) > > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c > index e370ecb8eb..d3b1de481b 100644 > --- a/net/vhost-vdpa.c > +++ b/net/vhost-vdpa.c > @@ -106,6 +106,22 @@ VHostNetState *vhost_vdpa_get_vhost_net(NetClientState *nc) > return s->vhost_net; > } > > +static bool vhost_vdpa_net_valid_svq_features(uint64_t features, Error **errp) > +{ > + uint64_t invalid_dev_features = > + features & ~vdpa_svq_device_features & > + /* Transport are all accepted at this point */ > + ~MAKE_64BIT_MASK(VIRTIO_TRANSPORT_F_START, > + VIRTIO_TRANSPORT_F_END - VIRTIO_TRANSPORT_F_START); > + > + if (invalid_dev_features) { > + error_setg(errp, "vdpa svq does not work with features 0x%" PRIx64, > + invalid_dev_features); > + } > + > + return !invalid_dev_features; > +} > + > static int vhost_vdpa_net_check_device_id(struct vhost_net *net) > { > uint32_t device_id; > @@ -675,15 +691,7 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name, > if (opts->x_svq) { > struct vhost_vdpa_iova_range iova_range; > > - uint64_t invalid_dev_features = > - features & ~vdpa_svq_device_features & > - /* Transport are all accepted at this point */ > - ~MAKE_64BIT_MASK(VIRTIO_TRANSPORT_F_START, > - VIRTIO_TRANSPORT_F_END - VIRTIO_TRANSPORT_F_START); > - > - if (invalid_dev_features) { > - error_setg(errp, "vdpa svq does not work with features 0x%" PRIx64, > - invalid_dev_features); > + if (!vhost_vdpa_net_valid_svq_features(features, errp)) { > goto err_svq; > } > > -- > 2.31.1 >
diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index e370ecb8eb..d3b1de481b 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -106,6 +106,22 @@ VHostNetState *vhost_vdpa_get_vhost_net(NetClientState *nc) return s->vhost_net; } +static bool vhost_vdpa_net_valid_svq_features(uint64_t features, Error **errp) +{ + uint64_t invalid_dev_features = + features & ~vdpa_svq_device_features & + /* Transport are all accepted at this point */ + ~MAKE_64BIT_MASK(VIRTIO_TRANSPORT_F_START, + VIRTIO_TRANSPORT_F_END - VIRTIO_TRANSPORT_F_START); + + if (invalid_dev_features) { + error_setg(errp, "vdpa svq does not work with features 0x%" PRIx64, + invalid_dev_features); + } + + return !invalid_dev_features; +} + static int vhost_vdpa_net_check_device_id(struct vhost_net *net) { uint32_t device_id; @@ -675,15 +691,7 @@ int net_init_vhost_vdpa(const Netdev *netdev, const char *name, if (opts->x_svq) { struct vhost_vdpa_iova_range iova_range; - uint64_t invalid_dev_features = - features & ~vdpa_svq_device_features & - /* Transport are all accepted at this point */ - ~MAKE_64BIT_MASK(VIRTIO_TRANSPORT_F_START, - VIRTIO_TRANSPORT_F_END - VIRTIO_TRANSPORT_F_START); - - if (invalid_dev_features) { - error_setg(errp, "vdpa svq does not work with features 0x%" PRIx64, - invalid_dev_features); + if (!vhost_vdpa_net_valid_svq_features(features, errp)) { goto err_svq; }
It will be reused at vdpa device start so let's extract in its own function Signed-off-by: Eugenio Pérez <eperezma@redhat.com> --- net/vhost-vdpa.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-)