iPXE
|
Go to the source code of this file.
Data Structures | |
struct | vring_desc |
struct | vring_avail |
struct | vring_used_elem |
struct | vring_used |
struct | vring |
struct | vring_virtqueue |
struct | vring_list |
Macros | |
#define | VIRTIO_CONFIG_S_ACKNOWLEDGE 1 |
#define | VIRTIO_CONFIG_S_DRIVER 2 |
#define | VIRTIO_CONFIG_S_DRIVER_OK 4 |
#define | VIRTIO_CONFIG_S_FEATURES_OK 8 |
#define | VIRTIO_CONFIG_S_FAILED 0x80 |
#define | VIRTIO_F_ANY_LAYOUT 27 |
#define | VIRTIO_F_VERSION_1 32 |
#define | VIRTIO_F_IOMMU_PLATFORM 33 |
#define | MAX_QUEUE_NUM (256) |
#define | VRING_DESC_F_NEXT 1 |
#define | VRING_DESC_F_WRITE 2 |
#define | VRING_AVAIL_F_NO_INTERRUPT 1 |
#define | VRING_USED_F_NO_NOTIFY 1 |
#define | vring_size(num) |
Functions | |
static void | vring_init (struct vring *vr, unsigned int num, unsigned char *queue) |
static void | vring_enable_cb (struct vring_virtqueue *vq) |
static void | vring_disable_cb (struct vring_virtqueue *vq) |
static int | vring_more_used (struct vring_virtqueue *vq) |
void | vring_detach (struct vring_virtqueue *vq, unsigned int head) |
void * | vring_get_buf (struct vring_virtqueue *vq, unsigned int *len) |
void | vring_add_buf (struct vring_virtqueue *vq, struct vring_list list[], unsigned int out, unsigned int in, void *index, int num_added) |
void | vring_kick (struct virtio_pci_modern_device *vdev, unsigned int ioaddr, struct vring_virtqueue *vq, int num_added) |
#define VIRTIO_CONFIG_S_ACKNOWLEDGE 1 |
Definition at line 9 of file virtio-ring.h.
#define VIRTIO_CONFIG_S_DRIVER 2 |
Definition at line 11 of file virtio-ring.h.
#define VIRTIO_CONFIG_S_DRIVER_OK 4 |
Definition at line 13 of file virtio-ring.h.
#define VIRTIO_CONFIG_S_FEATURES_OK 8 |
Definition at line 15 of file virtio-ring.h.
#define VIRTIO_CONFIG_S_FAILED 0x80 |
Definition at line 17 of file virtio-ring.h.
#define VIRTIO_F_ANY_LAYOUT 27 |
Definition at line 21 of file virtio-ring.h.
#define VIRTIO_F_VERSION_1 32 |
Definition at line 23 of file virtio-ring.h.
#define VIRTIO_F_IOMMU_PLATFORM 33 |
Definition at line 24 of file virtio-ring.h.
#define MAX_QUEUE_NUM (256) |
Definition at line 26 of file virtio-ring.h.
#define VRING_DESC_F_NEXT 1 |
Definition at line 28 of file virtio-ring.h.
#define VRING_DESC_F_WRITE 2 |
Definition at line 29 of file virtio-ring.h.
#define VRING_AVAIL_F_NO_INTERRUPT 1 |
Definition at line 31 of file virtio-ring.h.
#define VRING_USED_F_NO_NOTIFY 1 |
Definition at line 33 of file virtio-ring.h.
#define vring_size | ( | num | ) |
Definition at line 70 of file virtio-ring.h.
|
inlinestatic |
Definition at line 96 of file virtio-ring.h.
References vring::avail, vring::desc, vring_desc::next, num, vring::num, PAGE_MASK, phys_to_virt(), queue, vring_avail::ring, vring::used, and virt_to_phys().
Referenced by vp_find_vq(), and vpm_find_vqs().
|
inlinestatic |
Definition at line 123 of file virtio-ring.h.
References vring::avail, vring_avail::flags, vring_virtqueue::vring, and VRING_AVAIL_F_NO_INTERRUPT.
Referenced by virtnet_irq().
|
inlinestatic |
Definition at line 128 of file virtio-ring.h.
References vring::avail, vring_avail::flags, vring_virtqueue::vring, and VRING_AVAIL_F_NO_INTERRUPT.
Referenced by virtnet_irq().
|
inlinestatic |
Definition at line 141 of file virtio-ring.h.
References vring_used::idx, vring_virtqueue::last_used_idx, vring::used, vring_virtqueue::vring, and wmb().
Referenced by virtnet_process_rx_packets(), virtnet_process_tx_packets(), and vring_get_buf().
void vring_detach | ( | struct vring_virtqueue * | vq, |
unsigned int | head | ||
) |
Definition at line 37 of file virtio-ring.c.
References vring::desc, vring_desc::flags, vring_virtqueue::free_head, head, vring_desc::next, vring_virtqueue::vring, VRING_DESC_F_NEXT, and wmb().
Referenced by vring_get_buf().
void* vring_get_buf | ( | struct vring_virtqueue * | vq, |
unsigned int * | len | ||
) |
Definition at line 62 of file virtio-ring.c.
References BUG_ON, id, vring_used_elem::id, vring_virtqueue::last_used_idx, len, vring_used_elem::len, NULL, vring::num, vring_used::ring, vring::used, vring_virtqueue::vdata, vring_virtqueue::vring, vring_detach(), vring_more_used(), and wmb().
Referenced by virtnet_process_rx_packets(), and virtnet_process_tx_packets().
void vring_add_buf | ( | struct vring_virtqueue * | vq, |
struct vring_list | list[], | ||
unsigned int | out, | ||
unsigned int | in, | ||
void * | index, | ||
int | num_added | ||
) |
Definition at line 86 of file virtio-ring.c.
References vring_desc::addr, vring_list::addr, vring::avail, BUG_ON, vring::desc, vring_desc::flags, vring_virtqueue::free_head, head, vring_avail::idx, in, vring_desc::len, vring_list::length, vring_desc::next, vring::num, out, vring_avail::ring, vring_virtqueue::vdata, vring_virtqueue::vring, VRING_DESC_F_NEXT, VRING_DESC_F_WRITE, and wmb().
Referenced by virtnet_enqueue_iob().
void vring_kick | ( | struct virtio_pci_modern_device * | vdev, |
unsigned int | ioaddr, | ||
struct vring_virtqueue * | vq, | ||
int | num_added | ||
) |
Definition at line 125 of file virtio-ring.c.
References vring::avail, vring_used::flags, vring_avail::idx, ioaddr, mb(), vring_virtqueue::queue_index, vring::used, vp_notify(), vpm_notify(), vring_virtqueue::vring, VRING_USED_F_NO_NOTIFY, and wmb().
Referenced by virtnet_enqueue_iob().