L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
Virtio_net Class Reference

The Base class of a Port. More...

#include <virtio_net.h>

Inheritance diagram for Virtio_net:
Collaboration diagram for Virtio_net:

Public Member Functions

void reset () override
 reset callback, called for doing a device reset
int reconfig_queue (unsigned index) override
 callback for client queue-config request
bool check_features () override
 callback for checking the subset of accepted features
bool check_queues () override
 Check whether both virtqueues are ready.
void register_single_driver_irq () override
 Save the _kick_guest_irq that the client sent via device_notification_irq().
void trigger_driver_config_irq () override
 callback for triggering configuration change notification IRQ
void notify_queue (L4virtio::Svr::Virtqueue *queue)
 Trigger the _kick_guest_irq IRQ.
Virtqueue * tx_q ()
 Getter for the transmission queue.
Virtqueue * rx_q ()
 Getter for the receive queue.
Virtqueue const * tx_q () const
 Getter for the transmission queue.
Virtqueue const * rx_q () const
 Getter for the receive queue.
Public Member Functions inherited from L4virtio::Svr::Device_t< No_custom_data >
virtual void cfg_changed (unsigned)
 callback for client device configuration changes
virtual L4::Cap< L4::Irqdevice_notify_irq () const
 callback to gather the device notification IRQ (old-style)
virtual void register_driver_irq (unsigned idx)
 Callback for registering an notification IRQ (multi IRQ).
virtual L4::Cap< L4::Irqdevice_notify_irq (unsigned idx)
 Callback to gather the device notification IRQ (multi IRQ).
virtual unsigned num_events_supported () const
 Return the highest notification index supported.
 Device_t (Dev_config *dev_config)
 Make a device for the given config.
Mem_list const * mem_info () const
 Get the memory region list used for this device.
void reset_queue_config (unsigned idx, unsigned num_max, bool inc_generation=false)
 Trigger reset for the configuration space for queue idx.
void init_mem_info (unsigned num)
 Initialize the memory region list to the given maximum.
void device_error ()
 Transition device into DEVICE_NEEDS_RESET state.
bool setup_queue (Virtqueue *q, unsigned qn, unsigned num_max)
 Enable/disable the specified queue.
bool handle_mem_cmd_write ()
 Check for a value in the cmd register and handle a write.
void enable_trusted_ds_validation ()
 Enable trusted dataspace validation.
void add_trusted_dataspaces (std::shared_ptr< Ds_vector const > ds)
 Provide a list of trusted dataspaces that can be used for validation.
Public Member Functions inherited from L4::Epiface_t0< L4virtio::Device, L4::Epiface >
Type_info::Demand get_buffer_demand () const
 Get the server-side buffer demand based in IFACE.
Cap< L4virtio::Deviceobj_cap () const
 Get the (typed) capability to this object.
Public Member Functions inherited from L4::Epiface
 Epiface ()
 Make a server object.
virtual ~Epiface ()=0
 Destroy the object.
Stored_cap obj_cap () const
 Get the capability to the kernel object belonging to this object.
Server_ifaceserver_iface () const
 Get pointer to server interface at which the object is currently registered.
int set_server (Server_iface *srv, Cap< void > cap, bool managed=false)
 Set server registration info for the object.
void set_obj_cap (Cap< void > const &cap)
 Deprecated server registration function.

Additional Inherited Members

Public Types inherited from L4::Epiface_t0< L4virtio::Device, L4::Epiface >
typedef L4virtio::Device Interface
 Data type of the IPC interface definition.
Public Types inherited from L4::Epiface
typedef Ipc_svr::Server_iface Server_iface
 Type for abstract server interface.
typedef Ipc_svr::Server_iface::Demand Demand
 Type for server-side receive buffer demand.
Protected Attributes inherited from L4virtio::Svr::Device_t< No_custom_data >
Mem_list _mem_info
 Memory region list.

Detailed Description

The Base class of a Port.

This class provides the Virtio network protocol specific implementation aspects of a port.

Virtio_net comprises the virtqueues for both, the incoming and the outgoing network requests:

  • The transmission queue, containing requests to be transmitted to other ports. The transmission queue is filled by the client, this port relates to.
  • The receive queue, containing requests that have been transmitted from other ports. The receive queue is filled by the switch.

Definition at line 71 of file virtio_net.h.

Member Function Documentation

◆ notify_queue()

void Virtio_net::notify_queue ( L4virtio::Svr::Virtqueue * queue)
inline

Trigger the _kick_guest_irq IRQ.

This function gets called on the receiving port, when a request was successfully transmitted by the switch.

Definition at line 269 of file virtio_net.h.

References L4VIRTIO_IRQ_STATUS_VRING.


The documentation for this class was generated from the following file: