[RFC PATCH] virtio-net: Unlimit tx queue size if peer is vdpa

Eugenio Pérez posted 1 patch 2 years, 2 months ago
Test checkpatch failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220217175029.2517071-1-eperezma@redhat.com
hw/net/virtio-net.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
[RFC PATCH] virtio-net: Unlimit tx queue size if peer is vdpa
Posted by Eugenio Pérez 2 years, 2 months ago
The code used to limit the maximum size of tx queue for others backends
than vhost_user since the introduction of configurable tx queue size in
9b02e1618cf2 ("virtio-net: enable configurable tx queue size").

As vhost_user, vhost_vdpa devices should deal with memory region
crosses already, so let's use the full tx size.

Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
---
 hw/net/virtio-net.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 49cd13314a..b1769bfee0 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -629,17 +629,20 @@ static int virtio_net_max_tx_queue_size(VirtIONet *n)
     NetClientState *peer = n->nic_conf.peers.ncs[0];
 
     /*
-     * Backends other than vhost-user don't support max queue size.
+     * Backends other than vhost-user or vhost-vdpa don't support max queue
+     * size.
      */
     if (!peer) {
         return VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE;
     }
 
-    if (peer->info->type != NET_CLIENT_DRIVER_VHOST_USER) {
+    switch(peer->info->type) {
+    case NET_CLIENT_DRIVER_VHOST_USER:
+    case NET_CLIENT_DRIVER_VHOST_VDPA:
+        return VIRTQUEUE_MAX_SIZE;
+    default:
         return VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE;
-    }
-
-    return VIRTQUEUE_MAX_SIZE;
+    };
 }
 
 static int peer_attach(VirtIONet *n, int index)
-- 
2.27.0


Re: [RFC PATCH] virtio-net: Unlimit tx queue size if peer is vdpa
Posted by Jason Wang 2 years, 2 months ago
在 2022/2/18 上午1:50, Eugenio Pérez 写道:
> The code used to limit the maximum size of tx queue for others backends
> than vhost_user since the introduction of configurable tx queue size in
> 9b02e1618cf2 ("virtio-net: enable configurable tx queue size").
>
> As vhost_user, vhost_vdpa devices should deal with memory region
> crosses already, so let's use the full tx size.
>
> Signed-off-by: Eugenio Pérez <eperezma@redhat.com>


Acked-by: Jason Wang <jasowang@redhat.com>


> ---
>   hw/net/virtio-net.c | 13 ++++++++-----
>   1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index 49cd13314a..b1769bfee0 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -629,17 +629,20 @@ static int virtio_net_max_tx_queue_size(VirtIONet *n)
>       NetClientState *peer = n->nic_conf.peers.ncs[0];
>   
>       /*
> -     * Backends other than vhost-user don't support max queue size.
> +     * Backends other than vhost-user or vhost-vdpa don't support max queue
> +     * size.
>        */
>       if (!peer) {
>           return VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE;
>       }
>   
> -    if (peer->info->type != NET_CLIENT_DRIVER_VHOST_USER) {
> +    switch(peer->info->type) {
> +    case NET_CLIENT_DRIVER_VHOST_USER:
> +    case NET_CLIENT_DRIVER_VHOST_VDPA:
> +        return VIRTQUEUE_MAX_SIZE;
> +    default:
>           return VIRTIO_NET_TX_QUEUE_DEFAULT_SIZE;
> -    }
> -
> -    return VIRTQUEUE_MAX_SIZE;
> +    };
>   }
>   
>   static int peer_attach(VirtIONet *n, int index)