pub struct SriovDevice {
pub pf_address: PciAddress,
pub capability: SriovCapability,
pub vfs: Vec<VirtualFunction>,
pub vfs_enabled: bool,
}Expand description
An SR-IOV physical function with its virtual functions
Fields§
§pf_address: PciAddressPCI address of the physical function
capability: SriovCapabilityParsed SR-IOV capability
vfs: Vec<VirtualFunction>Virtual functions
vfs_enabled: boolWhether VFs are currently enabled
Implementations§
Source§impl SriovDevice
impl SriovDevice
Sourcepub fn new(pf_address: PciAddress, capability: SriovCapability) -> Self
pub fn new(pf_address: PciAddress, capability: SriovCapability) -> Self
Create a new SR-IOV device from a PF and capability
Sourcepub fn parse_capability(
pf_address: PciAddress,
data: &[u8],
offset: u16,
) -> Result<Self, VmError>
pub fn parse_capability( pf_address: PciAddress, data: &[u8], offset: u16, ) -> Result<Self, VmError>
Parse capability from config space data
Sourcepub fn enable_vfs(&mut self, num_vfs: u16) -> Result<(), VmError>
pub fn enable_vfs(&mut self, num_vfs: u16) -> Result<(), VmError>
Enable VFs (creates VF entries)
Sourcepub fn disable_vfs(&mut self)
pub fn disable_vfs(&mut self)
Disable all VFs
Sourcepub fn assign_vf(&mut self, vf_index: u16, vm_id: u32) -> Result<(), VmError>
pub fn assign_vf(&mut self, vf_index: u16, vm_id: u32) -> Result<(), VmError>
Assign a VF to a VM
Sourcepub fn unassign_vf(&mut self, vf_index: u16) -> Result<(), VmError>
pub fn unassign_vf(&mut self, vf_index: u16) -> Result<(), VmError>
Unassign a VF from its VM
Sourcepub fn vf(&self, vf_index: u16) -> Option<&VirtualFunction>
pub fn vf(&self, vf_index: u16) -> Option<&VirtualFunction>
Get a VF by index
Sourcepub fn num_enabled_vfs(&self) -> usize
pub fn num_enabled_vfs(&self) -> usize
Get number of enabled VFs
Sourcepub fn num_assigned_vfs(&self) -> usize
pub fn num_assigned_vfs(&self) -> usize
Get number of assigned VFs
Sourcepub fn available_vfs(&self) -> Vec<u16>
pub fn available_vfs(&self) -> Vec<u16>
List available (unassigned) VFs