diff mbox series

[v6,04/10] vdpa: add vhost_vdpa_net_valid_svq_features

Message ID 20221108170755.92768-5-eperezma@redhat.com (mailing list archive)
State New, archived
Headers show
Series ASID support in vhost-vdpa net | expand

Commit Message

Eugenio Perez Martin Nov. 8, 2022, 5:07 p.m. UTC
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(-)

Comments

Jason Wang Nov. 10, 2022, 5:29 a.m. UTC | #1
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 mbox series

Patch

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;
         }