#define VIRTIO_PCI_QUEUE_ADDR_SHIFT 12
-#define VIRTIO_PCI_VRING_ALIGN 4096
+#define VNET_VIRTIO_PCI_VRING_ALIGN 4096
typedef enum
{
u16 (*get_queue_size) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id);
void (*set_queue_size) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id,
u16 queue_size);
- u8 (*setup_queue) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id,
- void *p);
+ u8 (*setup_queue) (vlib_main_t *vm, virtio_if_t *vif, u16 queue_id,
+ vnet_virtio_vring_t *vring);
void (*del_queue) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id);
- void (*notify_queue) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id);
+ u16 (*get_queue_notify_off) (vlib_main_t * vm, virtio_if_t * vif,
+ u16 queue_id);
+ void (*notify_queue) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id,
+ u16 queue_notify_offset);
u16 (*set_config_irq) (vlib_main_t * vm, virtio_if_t * vif, u16 vec);
u16 (*set_queue_irq) (vlib_main_t * vm, virtio_if_t * vif, u16 vec,
_ (CSUM_OFFLOAD, 1) \
_ (GRO_COALESCE, 2) \
_ (PACKED, 3) \
- _ (IN_ORDER, 4)
+ _ (IN_ORDER, 4) \
+ _ (BUFFERING, 5)
typedef enum
{
#undef _
} virtio_flag_t;
+typedef enum
+{
+ VIRTIO_BIND_NONE = 0,
+ VIRTIO_BIND_DEFAULT = 1,
+ VIRTIO_BIND_FORCE = 2,
+} __clib_packed virtio_bind_t;
+
typedef struct
{
u32 addr;
u64 features;
u8 gso_enabled;
u8 checksum_offload_enabled;
+ virtio_bind_t bind;
+ u32 buffering_size;
u32 virtio_flags;
clib_error_t *error;
} virtio_pci_create_if_args_t;