⚠️ VeridianOS Kernel Documentation - This is low-level kernel code. All functions are unsafe unless explicitly marked otherwise. no_std

VirtioNetDriver

Struct VirtioNetDriver 

Source
pub struct VirtioNetDriver { /* private fields */ }
Expand description

VirtIO Network Driver

Implementations§

Source§

impl VirtioNetDriver

Source

pub fn new(mmio_base: usize) -> Result<Self, KernelError>

Create a new VirtIO Network driver

Source

pub fn transmit(&mut self, packet: &[u8]) -> Result<(), KernelError>

Transmit a packet using virtqueue.

Prepends a VirtioNetHeader, copies the frame data into the pre-allocated TX data buffer, and kicks the device.

Source

pub fn receive(&mut self) -> Result<Option<Packet>, KernelError>

Receive a packet using virtqueue.

Checks the used ring for completed RX buffers, copies the received frame data (after stripping the VirtioNetHeader), recycles the descriptor, and returns the packet.

Source

pub fn mac_address(&self) -> MacAddress

Get MAC address

Trait Implementations§

Source§

impl NetworkDevice for VirtioNetDriver

Source§

fn name(&self) -> &str

Get device name
Source§

fn mac_address(&self) -> MacAddress

Get device MAC address
Source§

fn capabilities(&self) -> DeviceCapabilities

Get device capabilities
Source§

fn state(&self) -> DeviceState

Get device state
Source§

fn set_state(&mut self, state: DeviceState) -> Result<(), KernelError>

Set device state
Source§

fn statistics(&self) -> DeviceStatistics

Get device statistics
Source§

fn transmit(&mut self, packet: &Packet) -> Result<(), KernelError>

Transmit a packet
Source§

fn receive(&mut self) -> Result<Option<Packet>, KernelError>

Receive a packet (non-blocking)
Source§

fn mtu(&self) -> usize

Get MTU

Auto Trait Implementations§

§

impl Freeze for VirtioNetDriver

§

impl RefUnwindSafe for VirtioNetDriver

§

impl Send for VirtioNetDriver

§

impl Sync for VirtioNetDriver

§

impl Unpin for VirtioNetDriver

§

impl !UnwindSafe for VirtioNetDriver

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.