16 #ifndef __included_virtio_pci_h__ 17 #define __included_virtio_pci_h__ 20 #define VIRTIO_PCI_ABI_VERSION 0 25 #define VIRTIO_PCI_HOST_FEATURES 0 26 #define VIRTIO_PCI_GUEST_FEATURES 4 27 #define VIRTIO_PCI_QUEUE_PFN 8 28 #define VIRTIO_PCI_QUEUE_NUM 12 29 #define VIRTIO_PCI_QUEUE_SEL 14 30 #define VIRTIO_PCI_QUEUE_NOTIFY 16 31 #define VIRTIO_PCI_STATUS 18 32 #define VIRTIO_PCI_ISR 19 35 #define VIRTIO_MSI_CONFIG_VECTOR 20 36 #define VIRTIO_MSI_QUEUE_VECTOR 22 46 #define VIRTIO_PCI_ISR_INTR 0x1 48 #define VIRTIO_PCI_ISR_CONFIG 0x2 51 #define VIRTIO_ID_NETWORK 0x01 54 #define foreach_virtio_config_status_flags \ 55 _ (VIRTIO_CONFIG_STATUS_RESET, 0x00) \ 56 _ (VIRTIO_CONFIG_STATUS_ACK, 0x01) \ 57 _ (VIRTIO_CONFIG_STATUS_DRIVER, 0x02) \ 58 _ (VIRTIO_CONFIG_STATUS_DRIVER_OK, 0x04) \ 59 _ (VIRTIO_CONFIG_STATUS_FEATURES_OK, 0x08) \ 60 _ (VIRTIO_CONFIG_STATUS_DEVICE_NEEDS_RESET, 0x40) \ 61 _ (VIRTIO_CONFIG_STATUS_FAILED, 0x80) 65 #define _(a, b) a = b, 70 #define foreach_virtio_net_feature_flags \ 71 _ (VIRTIO_NET_F_CSUM, 0) \ 72 _ (VIRTIO_NET_F_GUEST_CSUM, 1) \ 73 _ (VIRTIO_NET_F_CTRL_GUEST_OFFLOADS, 2) \ 74 _ (VIRTIO_NET_F_MTU, 3) \ 75 _ (VIRTIO_NET_F_MAC, 5) \ 76 _ (VIRTIO_NET_F_GSO, 6) \ 77 _ (VIRTIO_NET_F_GUEST_TSO4, 7) \ 78 _ (VIRTIO_NET_F_GUEST_TSO6, 8) \ 79 _ (VIRTIO_NET_F_GUEST_ECN, 9) \ 80 _ (VIRTIO_NET_F_GUEST_UFO, 10) \ 81 _ (VIRTIO_NET_F_HOST_TSO4, 11) \ 82 _ (VIRTIO_NET_F_HOST_TSO6, 12) \ 83 _ (VIRTIO_NET_F_HOST_ECN, 13) \ 84 _ (VIRTIO_NET_F_HOST_UFO, 14) \ 85 _ (VIRTIO_NET_F_MRG_RXBUF, 15) \ 86 _ (VIRTIO_NET_F_STATUS, 16) \ 87 _ (VIRTIO_NET_F_CTRL_VQ, 17) \ 88 _ (VIRTIO_NET_F_CTRL_RX, 18) \ 89 _ (VIRTIO_NET_F_CTRL_VLAN, 19) \ 90 _ (VIRTIO_NET_F_CTRL_RX_EXTRA, 20) \ 91 _ (VIRTIO_NET_F_GUEST_ANNOUNCE, 21) \ 92 _ (VIRTIO_NET_F_MQ, 22) \ 93 _ (VIRTIO_NET_F_CTRL_MAC_ADDR, 23) \ 94 _ (VIRTIO_F_NOTIFY_ON_EMPTY, 24) \ 95 _ (VHOST_F_LOG_ALL, 26) \ 96 _ (VIRTIO_F_ANY_LAYOUT, 27) \ 97 _ (VIRTIO_RING_F_INDIRECT_DESC, 28) \ 98 _ (VIRTIO_RING_F_EVENT_IDX, 29) 102 _ (VHOST_USER_F_PROTOCOL_FEATURES, 30) 104 #define VIRTIO_NET_F_CTRL_GUEST_OFFLOADS 2 105 #define VIRTIO_NET_F_MTU 3 106 #define VIRTIO_NET_S_LINK_UP 1 107 #define VIRTIO_NET_S_ANNOUNCE 2 117 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5 118 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0 121 #define VIRTIO_PCI_CAP_COMMON_CFG 1 123 #define VIRTIO_PCI_CAP_NOTIFY_CFG 2 125 #define VIRTIO_PCI_CAP_ISR_CFG 3 127 #define VIRTIO_PCI_CAP_DEVICE_CFG 4 129 #define VIRTIO_PCI_CAP_PCI_CFG 5 131 #define VIRTIO_PCI_QUEUE_ADDR_SHIFT 12 133 #define VIRTIO_PCI_VRING_ALIGN 4096 157 struct virtio_pci_cap cap;
239 int checksum_offload_enabled,
240 int offloads_disabled);
int virtio_pci_enable_disable_offloads(vlib_main_t *vm, virtio_if_t *vif, int gso_enabled, int checksum_offload_enabled, int offloads_disabled)
int virtio_pci_delete_if(vlib_main_t *vm, virtio_if_t *ad)
void device_status(vlib_main_t *vm, virtio_if_t *vif)
u32 notify_off_multiplier
#define foreach_virtio_config_status_flags
u8 checksum_offload_enabled
virtio_config_status_flags_t
void debug_device_config_space(vlib_main_t *vm, virtio_if_t *vif)
u32 device_feature_select
void virtio_pci_create_if(vlib_main_t *vm, virtio_pci_create_if_args_t *args)