static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue, int ctrl)

{

    VirtIODevice *vdev = VIRTIO_DEVICE(n);

    int i, max = multiqueue ? n->max_queues : 1;



    n->multiqueue = multiqueue;



    for (i = 2; i <= n->max_queues * 2 + 1; i++) {

        virtio_del_queue(vdev, i);

    }



    for (i = 1; i < max; i++) {

        n->vqs[i].rx_vq = virtio_add_queue(vdev, 256, virtio_net_handle_rx);

        if (n->vqs[i].tx_timer) {

            n->vqs[i].tx_vq =

                virtio_add_queue(vdev, 256, virtio_net_handle_tx_timer);

            n->vqs[i].tx_timer = qemu_new_timer_ns(vm_clock,

                                                   virtio_net_tx_timer,

                                                   &n->vqs[i]);

        } else {

            n->vqs[i].tx_vq =

                virtio_add_queue(vdev, 256, virtio_net_handle_tx_bh);

            n->vqs[i].tx_bh = qemu_bh_new(virtio_net_tx_bh, &n->vqs[i]);

        }



        n->vqs[i].tx_waiting = 0;

        n->vqs[i].n = n;

    }



    if (ctrl) {

        n->ctrl_vq = virtio_add_queue(vdev, 64, virtio_net_handle_ctrl);

    }



    virtio_net_set_queues(n);

}

static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue, int ctrl)

{

    VirtIODevice *vdev = VIRTIO_DEVICE(n);

    int i, max = multiqueue ? n->max_queues : 1;



    n->multiqueue = multiqueue;



    for (i = 2; i <= n->max_queues * 2 + 1; i++) {

        virtio_del_queue(vdev, i);

    }



    for (i = 1; i < max; i++) {

        n->vqs[i].rx_vq = virtio_add_queue(vdev, 256, virtio_net_handle_rx);

        if (n->vqs[i].tx_timer) {

            n->vqs[i].tx_vq =

                virtio_add_queue(vdev, 256, virtio_net_handle_tx_timer);

            n->vqs[i].tx_timer = qemu_new_timer_ns(vm_clock,

                                                   virtio_net_tx_timer,

                                                   &n->vqs[i]);

        } else {

            n->vqs[i].tx_vq =

                virtio_add_queue(vdev, 256, virtio_net_handle_tx_bh);

            n->vqs[i].tx_bh = qemu_bh_new(virtio_net_tx_bh, &n->vqs[i]);

        }



        n->vqs[i].tx_waiting = 0;

        n->vqs[i].n = n;

    }



    if (ctrl) {

        n->ctrl_vq = virtio_add_queue(vdev, 64, virtio_net_handle_ctrl);

    }



    virtio_net_set_queues(n);

}

static void FUNC_0(VirtIONet *VAR_0, int VAR_1, int VAR_2)

{

    VirtIODevice *vdev = VIRTIO_DEVICE(VAR_0);

    int VAR_3, VAR_4 = VAR_1 ? VAR_0->max_queues : 1;



    VAR_0->VAR_1 = VAR_1;



    for (VAR_3 = 2; VAR_3 <= VAR_0->max_queues * 2 + 1; VAR_3++) {

        virtio_del_queue(vdev, VAR_3);

    }



    for (VAR_3 = 1; VAR_3 < VAR_4; VAR_3++) {

        VAR_0->vqs[VAR_3].rx_vq = virtio_add_queue(vdev, 256, virtio_net_handle_rx);

        if (VAR_0->vqs[VAR_3].tx_timer) {

            VAR_0->vqs[VAR_3].tx_vq =

                virtio_add_queue(vdev, 256, virtio_net_handle_tx_timer);

            VAR_0->vqs[VAR_3].tx_timer = qemu_new_timer_ns(vm_clock,

                                                   virtio_net_tx_timer,

                                                   &VAR_0->vqs[VAR_3]);

        } else {

            VAR_0->vqs[VAR_3].tx_vq =

                virtio_add_queue(vdev, 256, virtio_net_handle_tx_bh);

            VAR_0->vqs[VAR_3].tx_bh = qemu_bh_new(virtio_net_tx_bh, &VAR_0->vqs[VAR_3]);

        }



        VAR_0->vqs[VAR_3].tx_waiting = 0;

        VAR_0->vqs[VAR_3].VAR_0 = VAR_0;

    }



    if (VAR_2) {

        VAR_0->ctrl_vq = virtio_add_queue(vdev, 64, virtio_net_handle_ctrl);

    }



    virtio_net_set_queues(VAR_0);

}

static void FUNC_0(VirtIONet *VAR_0, int VAR_1, int VAR_2)
{ VirtIODevice *vdev = VIRTIO_DEVICE(VAR_0); int VAR_3, VAR_4 = VAR_1 ? VAR_0->max_queues : 1; VAR_0->VAR_1 = VAR_1; for (VAR_3 = 2; VAR_3 <= VAR_0->max_queues * 2 + 1; VAR_3++) { virtio_del_queue(vdev, VAR_3); } for (VAR_3 = 1; VAR_3 < VAR_4; VAR_3++) { VAR_0->vqs[VAR_3].rx_vq = virtio_add_queue(vdev, 256, virtio_net_handle_rx); if (VAR_0->vqs[VAR_3].tx_timer) { VAR_0->vqs[VAR_3].tx_vq =
virtio_add_queue(vdev, 256, virtio_net_handle_tx_timer); VAR_0->vqs[VAR_3].tx_timer = qemu_new_timer_ns(vm_clock,
virtio_net_tx_timer,
&VAR_0->vqs[VAR_3]); } else { VAR_0->vqs[VAR_3].tx_vq =
virtio_add_queue(vdev, 256, virtio_net_handle_tx_bh); VAR_0->vqs[VAR_3].tx_bh = qemu_bh_new(virtio_net_tx_bh, &VAR_0->vqs[VAR_3]); } VAR_0->vqs[VAR_3].tx_waiting = 0; VAR_0->vqs[VAR_3].VAR_0 = VAR_0; } if (VAR_2) { VAR_0->ctrl_vq = virtio_add_queue(vdev, 64, virtio_net_handle_ctrl); } virtio_net_set_queues(VAR_0); }