.eh_timed_out = virtscsi_eh_timed_out,
        .slave_alloc = virtscsi_device_alloc,
 
-       .can_queue = 1024,
        .dma_boundary = UINT_MAX,
        .use_clustering = ENABLE_CLUSTERING,
        .target_alloc = virtscsi_target_alloc,
        .eh_timed_out = virtscsi_eh_timed_out,
        .slave_alloc = virtscsi_device_alloc,
 
-       .can_queue = 1024,
        .dma_boundary = UINT_MAX,
        .use_clustering = ENABLE_CLUSTERING,
        .target_alloc = virtscsi_target_alloc,
        if (err)
                goto virtscsi_init_failed;
 
+       shost->can_queue = virtqueue_get_vring_size(vscsi->req_vqs[0].vq);
+
        cmd_per_lun = virtscsi_config_get(vdev, cmd_per_lun) ?: 1;
        shost->cmd_per_lun = min_t(u32, cmd_per_lun, shost->can_queue);
        shost->max_sectors = virtscsi_config_get(vdev, max_sectors) ?: 0xFFFF;