aboutsummaryrefslogtreecommitdiff
path: root/hw/net/virtio-net.c
diff options
context:
space:
mode:
authorEugenio Pérez <eperezma@redhat.com>2022-09-06 17:07:18 +0200
committerJason Wang <jasowang@redhat.com>2022-09-27 15:14:37 +0800
commitca8717f931463833da3ce5ca9712c9341ba8c308 (patch)
treea3bc3193415f8c0bac156e25e0ba6eec17f35f2e /hw/net/virtio-net.c
parent275ba561cd3f7b17675046792ecbdea184e948f8 (diff)
downloadqemu-ca8717f931463833da3ce5ca9712c9341ba8c308.zip
qemu-ca8717f931463833da3ce5ca9712c9341ba8c308.tar.gz
qemu-ca8717f931463833da3ce5ca9712c9341ba8c308.tar.bz2
virtio-net: Update virtio-net curr_queue_pairs in vdpa backends
It was returned as error before. Instead of it, simply update the corresponding field so qemu can send it in the migration data. Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Acked-by: Si-Wei Liu <si-wei.liu@oracle.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'hw/net/virtio-net.c')
-rw-r--r--hw/net/virtio-net.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index dd0d056..63a8332 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -1412,19 +1412,14 @@ static int virtio_net_handle_mq(VirtIONet *n, uint8_t cmd,
return VIRTIO_NET_ERR;
}
- /* Avoid changing the number of queue_pairs for vdpa device in
- * userspace handler. A future fix is needed to handle the mq
- * change in userspace handler with vhost-vdpa. Let's disable
- * the mq handling from userspace for now and only allow get
- * done through the kernel. Ripples may be seen when falling
- * back to userspace, but without doing it qemu process would
- * crash on a recursive entry to virtio_net_set_status().
- */
+ n->curr_queue_pairs = queue_pairs;
if (nc->peer && nc->peer->info->type == NET_CLIENT_DRIVER_VHOST_VDPA) {
- return VIRTIO_NET_ERR;
+ /*
+ * Avoid updating the backend for a vdpa device: We're only interested
+ * in updating the device model queues.
+ */
+ return VIRTIO_NET_OK;
}
-
- n->curr_queue_pairs = queue_pairs;
/* stop the backend before changing the number of queue_pairs to avoid handling a
* disabled queue */
virtio_net_set_status(vdev, vdev->status);