diff --git a/devices/src/virtio/block.rs b/devices/src/virtio/block.rs index 477a9deb9e..2a515afadf 100644 --- a/devices/src/virtio/block.rs +++ b/devices/src/virtio/block.rs @@ -29,6 +29,7 @@ use super::{ const QUEUE_SIZE: u16 = 256; const QUEUE_SIZES: &[u16] = &[QUEUE_SIZE]; +const NUM_MSIX_VECTORS: u16 = 2; const SECTOR_SHIFT: u8 = 9; const SECTOR_SIZE: u64 = 0x01 << SECTOR_SHIFT; const MAX_DISCARD_SECTORS: u32 = u32::MAX; @@ -706,6 +707,10 @@ impl VirtioDevice for Block { TYPE_BLOCK } + fn msix_vectors(&self) -> u16 { + NUM_MSIX_VECTORS + } + fn queue_max_sizes(&self) -> &[u16] { QUEUE_SIZES } diff --git a/devices/src/virtio/net.rs b/devices/src/virtio/net.rs index a2b10580ed..b439238b32 100644 --- a/devices/src/virtio/net.rs +++ b/devices/src/virtio/net.rs @@ -25,6 +25,7 @@ use super::{Interrupt, Queue, Reader, VirtioDevice, Writer, TYPE_NET}; const QUEUE_SIZE: u16 = 256; const NUM_QUEUES: usize = 2; const QUEUE_SIZES: &[u16] = &[QUEUE_SIZE, QUEUE_SIZE]; +const NUM_MSIX_VECTORS: u16 = NUM_QUEUES as u16; #[derive(Debug)] pub enum NetError { @@ -406,6 +407,10 @@ where TYPE_NET } + fn msix_vectors(&self) -> u16 { + NUM_MSIX_VECTORS + } + fn queue_max_sizes(&self) -> &[u16] { QUEUE_SIZES } diff --git a/devices/src/virtio/vhost/net.rs b/devices/src/virtio/vhost/net.rs index 8462da58ce..5834aa7ef8 100644 --- a/devices/src/virtio/vhost/net.rs +++ b/devices/src/virtio/vhost/net.rs @@ -150,6 +150,10 @@ where TYPE_NET } + fn msix_vectors(&self) -> u16 { + NUM_MSIX_VECTORS + } + fn queue_max_sizes(&self) -> &[u16] { QUEUE_SIZES } diff --git a/devices/src/virtio/vhost/vsock.rs b/devices/src/virtio/vhost/vsock.rs index ed95b8b73d..231e13456f 100644 --- a/devices/src/virtio/vhost/vsock.rs +++ b/devices/src/virtio/vhost/vsock.rs @@ -112,6 +112,10 @@ impl VirtioDevice for Vsock { TYPE_VSOCK } + fn msix_vectors(&self) -> u16 { + NUM_MSIX_VECTORS + } + fn queue_max_sizes(&self) -> &[u16] { QUEUE_SIZES }