src/driver/virtio.h
virtio device struct.
filesrc/driver/virtio.h
#ifndef IXY_VIRTIO_H
#define IXY_VIRTIO_H
#include <stdbool.h>
#include "stats.h"
#include "memory.h"
struct virtio_device {
struct ixy_device ixy;
int fd;
void* rx_queue;
void* tx_queue;
void* ctrl_queue;
uint64_t rx_pkts;
uint64_t tx_pkts;
uint64_t rx_bytes;
uint64_t tx_bytes;
};
#define IXY_TO_VIRTIO(ixy_device) container_of(ixy_device, struct virtio_device, ixy)
struct ixy_device* virtio_init(const char* pci_addr, uint16_t rx_queues, uint16_t tx_queues);
uint32_t virtio_get_link_speed(const struct ixy_device* dev);
void virtio_set_promisc(struct ixy_device* dev, bool enabled);
void virtio_read_stats(struct ixy_device* dev, struct device_stats* stats);
uint32_t virtio_tx_batch(struct ixy_device* dev, uint16_t queue_id, struct pkt_buf* bufs[], uint32_t num_bufs);
uint32_t virtio_rx_batch(struct ixy_device* dev, uint16_t queue_id, struct pkt_buf* bufs[], uint32_t num_bufs);
#endif // IXY_VIRTIO_H