iPXE
virtio-net.h File Reference

Virtual I/O network device. More...

#include <ipxe/virtio.h>

Go to the source code of this file.

Data Structures

union  virtio_net_header
 A virtio network packet header. More...
struct  virtio_net_queue
 A virtio network queue. More...
struct  virtio_net
 A virtio network device. More...

Macros

#define VIRTIO_FEAT0_NET_MTU   0x00000008
 Device has a reported MTU.
#define VIRTIO_FEAT0_NET_MAC   0x00000020
 Device has a MAC address.
#define VIRTIO_NET_MAC   0x00
 MAC address register offset.
#define VIRTIO_NET_MTU   0x0a
 MTU register offset.
#define VIRTIO_NET_RX_INDEX   0
 Receive queue index.
#define VIRTIO_NET_RX_COUNT   128
 Receive queue requested queue size.
#define VIRTIO_NET_RX_MAX   16
 Receive queue maximum fill level.
#define VIRTIO_NET_TX_INDEX   1
 Transmit queue index.
#define VIRTIO_NET_TX_COUNT   128
 Transmit queue requested queue size.
#define VIRTIO_NET_TX_MAX   128
 Transmit queue maximum fill level.
#define VIRTIO_NET_DESCS   2
 Number of descriptors per packet.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 FILE_SECBOOT (PERMITTED)
static void virtio_net_queue_init (struct virtio_net_queue *queue, struct io_buffer **iobufs, uint8_t *slots, unsigned int index, unsigned int count, unsigned int max, unsigned int dma, unsigned int write)
 Initialise virtio network queue.

Detailed Description

Virtual I/O network device.

Definition in file virtio-net.h.

Macro Definition Documentation

◆ VIRTIO_FEAT0_NET_MTU

#define VIRTIO_FEAT0_NET_MTU   0x00000008

Device has a reported MTU.

Definition at line 16 of file virtio-net.h.

Referenced by virtio_net_mtu().

◆ VIRTIO_FEAT0_NET_MAC

#define VIRTIO_FEAT0_NET_MAC   0x00000020

Device has a MAC address.

Definition at line 19 of file virtio-net.h.

Referenced by virtio_net_mac().

◆ VIRTIO_NET_MAC

#define VIRTIO_NET_MAC   0x00

MAC address register offset.

Definition at line 22 of file virtio-net.h.

Referenced by virtio_net_mac().

◆ VIRTIO_NET_MTU

#define VIRTIO_NET_MTU   0x0a

MTU register offset.

Definition at line 25 of file virtio-net.h.

Referenced by virtio_net_mtu().

◆ VIRTIO_NET_RX_INDEX

#define VIRTIO_NET_RX_INDEX   0

Receive queue index.

Definition at line 36 of file virtio-net.h.

Referenced by virtio_net_probe().

◆ VIRTIO_NET_RX_COUNT

#define VIRTIO_NET_RX_COUNT   128

Receive queue requested queue size.

Definition at line 39 of file virtio-net.h.

Referenced by virtio_net_probe().

◆ VIRTIO_NET_RX_MAX

#define VIRTIO_NET_RX_MAX   16

Receive queue maximum fill level.

Definition at line 42 of file virtio-net.h.

Referenced by virtio_net_close(), and virtio_net_probe().

◆ VIRTIO_NET_TX_INDEX

#define VIRTIO_NET_TX_INDEX   1

Transmit queue index.

Definition at line 45 of file virtio-net.h.

Referenced by virtio_net_probe().

◆ VIRTIO_NET_TX_COUNT

#define VIRTIO_NET_TX_COUNT   128

Transmit queue requested queue size.

Definition at line 48 of file virtio-net.h.

Referenced by virtio_net_probe().

◆ VIRTIO_NET_TX_MAX

#define VIRTIO_NET_TX_MAX   128

Transmit queue maximum fill level.

Definition at line 51 of file virtio-net.h.

Referenced by virtio_net_probe().

◆ VIRTIO_NET_DESCS

#define VIRTIO_NET_DESCS   2

Number of descriptors per packet.

Definition at line 54 of file virtio-net.h.

Referenced by virtio_net_complete(), virtio_net_enable(), and virtio_net_submit().

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL )

◆ FILE_SECBOOT()

FILE_SECBOOT ( PERMITTED )

◆ virtio_net_queue_init()

void virtio_net_queue_init ( struct virtio_net_queue * queue,
struct io_buffer ** iobufs,
uint8_t * slots,
unsigned int index,
unsigned int count,
unsigned int max,
unsigned int dma,
unsigned int write )
inlinestatic

Initialise virtio network queue.

Parameters
queueVirtio network queue
indexQueue index
iobufsI/O buffer list
slotsDescriptor slot ring
dmaDMA direction for packet header
writeWritability flag for packet header
countRequested queue size
maxMaximum fill level

Definition at line 97 of file virtio-net.h.

101 {
102
103 queue->queue.index = index;
104 queue->iobufs = iobufs;
105 queue->slots = slots;
106 queue->dma = dma;
107 queue->write = write;
108 queue->count = count;
109 queue->max = max;
110}
long index
Definition bigint.h:30
#define max(x, y)
Definition ath.h:41
uint16_t queue
Queue ID.
Definition ena.h:11
static unsigned int count
Number of entries.
Definition dwmac.h:220
device nvs write
Definition threewire.h:62
physaddr_t dma(struct dma_mapping *map, void *addr)
Get DMA address from virtual address.
static const char grant_ref_t unsigned int struct io_buffer ** iobufs
Definition netfront.h:94

References count, dma(), index, iobufs, max, queue, and write.

Referenced by virtio_net_probe().