Loading...
Searching...
No Matches
L4virtio_port Class Reference
Virtio Net Switch

A Port on the Virtio Net Switch. More...

`#include <port_l4virtio.h>`

Inheritance diagram for L4virtio_port:
Collaboration diagram for L4virtio_port:

## Public Member Functions

| L4virtio_port (unsigned vq_max, unsigned num_ds, char const *name, l4_uint8_t const *mac)
| Create a Virtio net port object.
bool | tx_work_pending () const
| Check whether there is any work pending on the transmission queue.
std::optional< Virtio_net_request > | get_tx_request ()
| Get one request from the transmission queue.
void | drop_requests ()
| Drop all requests pending in the transmission queue.
Public Member Functions inherited from Virtio_net
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::Irq > | device_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::Irq > | device_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::Device > | obj_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_iface * | server_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

A Port on the Virtio Net Switch.

A Port object gets created by Virtio_factory::op_create(). This function actually only instantiates objects of the types Switch_port and Monitor_port. The created Port registers itself at the switch's server. Usually, the IPC call for port creation comes from ned. To finalize the setup, the client has to initialize the port during the virtio initialization phase. To do this, the client registers a dataspace for queues and buffers and provides an IRQ to notify the client on incoming network requests.

Definition at line 36 of file port_l4virtio.h.

## Member Function Documentation

## drop_requests()

void L4virtio_port::drop_requests | ( |  | ) |

inline

Drop all requests pending in the transmission queue.

This is used for monitor ports, which are not allowed to send packets.

Definition at line 103 of file port_l4virtio.h.

References Virtio_net_request::drop_requests(), and Virtio_net::tx_q().

Here is the call graph for this function:

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

- pkg/virtio-net-switch/server/switch/port_l4virtio.h