40#define VMXNET3_MAX_TX_QUEUES 8
43#define VMXNET3_MAX_RX_QUEUES 16
46#define VMXNET3_MAX_INTRS 25
49#define VMXNET3_MAX_PACKET_LEN 0x4000
52#define VMXNET3_PT_BAR PCI_BASE_ADDRESS_0
55#define VMXNET3_PT_LEN 0x1000
58#define VMXNET3_PT_IMR 0x0
61#define VMXNET3_PT_TXPROD 0x600
64#define VMXNET3_PT_RXPROD 0x800
67#define VMXNET3_PT_RXPROD2 0xa00
70#define VMXNET3_VD_BAR PCI_BASE_ADDRESS_1
73#define VMXNET3_VD_LEN 0x1000
76#define VMXNET3_VD_VRRS 0x0
79#define VMXNET3_VD_UVRS 0x8
82#define VMXNET3_VD_DSAL 0x10
85#define VMXNET3_VD_DSAH 0x18
88#define VMXNET3_VD_CMD 0x20
91#define VMXNET3_VD_MACL 0x28
94#define VMXNET3_VD_MACH 0x30
97#define VMXNET3_VD_ICR 0x38
100#define VMXNET3_VD_ECR 0x40
171#define VMXNET3_VERSION_MAGIC 0x69505845
184#define VMXNET3_IC_DISABLE_ALL 0x1
241#define VMXNET3_SHARED_ALIGN 8
244#define VMXNET3_SHARED_MAGIC 0xbabefee1
255#define VMXNET3_TXF_GEN 0x00004000UL
258#define VMXNET3_TXF_EOP 0x000001000UL
261#define VMXNET3_TXF_CQ 0x000002000UL
274#define VMXNET3_TXCF_GEN 0x80000000UL
326#define VMXNET3_RXF_GEN 0x80000000UL
341#define VMXNET3_RXCF_GEN 0x80000000UL
416#define VMXNET3_QUEUES_ALIGN 128
419#define VMXNET3_RING_ALIGN 512
422#define VMXNET3_NUM_TX_DESC 32
425#define VMXNET3_NUM_TX_COMP 32
428#define VMXNET3_NUM_RX_DESC 32
431#define VMXNET3_NUM_RX_COMP 32
455#define VMXNET3_DMA_ALIGN 512
489#define VMXNET3_VERSION_SELECT 1
492#define VMXNET3_UPT_VERSION_SELECT 1
495#define VMXNET3_MTU ( ETH_FRAME_LEN + 4 + 4 )
498#define VMXNET3_TX_FILL ( VMXNET3_NUM_TX_DESC - 1 )
501#define VMXNET3_RX_FILL 8
504#define NET_IP_ALIGN 2
unsigned long long uint64_t
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
Producer and consumer counters.
unsigned int tx_prod
Transmit producer counter.
unsigned int tx_cons
Transmit completion consumer counter.
unsigned int rx_cons
Receive consumer counter.
unsigned int rx_fill
Receive fill level.
unsigned int rx_prod
Receive producer counter.
struct vmxnet3_queues queues
Queue descriptors.
struct vmxnet3_rx_desc rx_desc[VMXNET3_NUM_RX_DESC]
RX descriptor ring.
struct vmxnet3_tx_comp tx_comp[VMXNET3_NUM_TX_COMP]
TX completion ring.
struct vmxnet3_shared shared
Shared area.
struct vmxnet3_tx_desc tx_desc[VMXNET3_NUM_TX_DESC]
TX descriptor ring.
struct vmxnet3_rx_comp rx_comp[VMXNET3_NUM_RX_COMP]
RX completion ring.
uint8_t moderation_level[VMXNET3_MAX_INTRS]
Miscellaneous configuration descriptor.
uint8_t num_rx_queues
Number of RX queues.
uint32_t mtu
Maximum transmission unit.
uint64_t upt_features
UPT features supported.
uint32_t reserved0[4]
Reserved.
uint16_t max_num_rx_sg
Maximum number of RX scatter-gather.
uint32_t version
Driver version.
uint32_t queue_desc_len
Queue descriptors data length.
uint32_t driver_data_len
Driver-private data length.
uint32_t guest_info
Guest information.
uint32_t version_support
Version supported.
uint8_t num_tx_queues
Number of TX queues.
uint64_t queue_desc_address
Queue descriptors data address.
uint64_t driver_data_address
Driver-private data address.
uint32_t upt_version_support
UPT version supported.
void * pt
"PT" register base address
struct vmxnet3_counters count
Producer and consumer counters.
struct vmxnet3_dma * dma
DMA area.
void * vd
"VD" register base address
struct io_buffer * rx_iobuf[VMXNET3_NUM_RX_DESC]
Receive I/O buffers.
struct io_buffer * tx_iobuf[VMXNET3_NUM_TX_DESC]
Transmit I/O buffers.
struct vmxnet3_rx_queue rx
Receive queue descriptor(s)
struct vmxnet3_tx_queue tx
Transmit queue descriptor(s)
Receive completion descriptor.
uint32_t index
Descriptor index.
uint32_t rss
RSS hash value.
uint32_t reserved0
Reserved.
Receive filter configuration.
uint16_t reserved0
Reserved.
uint8_t vlan_filter[512]
VLAN filter table (one bit per possible VLAN)
uint32_t mode
Receive filter mode.
uint16_t multicast_len
Multicast filter table length.
uint64_t multicast_address
Multicast filter table address.
Receive queue configuration.
uint8_t intr_index
Interrupt index.
uint32_t driver_data_len
Driver-private data length.
uint64_t desc_address[2]
Descriptor ring addresses.
uint64_t driver_data_address
Driver-private data address.
uint32_t num_comp
Number of completion descriptors.
uint32_t num_desc[2]
Number of descriptors.
uint64_t reserved0
Reserved.
uint64_t comp_address
Completion ring address.
uint8_t reserved[7]
Reserved.
Receive queue descriptor.
struct vmxnet3_rx_queue_config cfg
struct vmxnet3_rx_queue_control ctrl
struct vmxnet3_queue_status status
struct vmxnet3_rx_stats stats
Receive queue statistics.
uint64_t reserved[10]
Reserved.
uint32_t reserved1[5]
Reserved.
struct vmxnet3_rx_filter_config rx_filter
Receive filter configuration.
struct vmxnet3_variable_config rss
RSS configuration.
uint32_t magic
Magic signature.
uint32_t reserved0
Reserved.
struct vmxnet3_interrupt_config interrupt
Interrupt configuration.
struct vmxnet3_variable_config plugin
Plugin configuration.
uint32_t ecr
Event notifications.
struct vmxnet3_misc_config misc
Miscellaneous configuration.
struct vmxnet3_variable_config pattern
Pattern-matching configuration.
Transmit completion descriptor.
uint32_t reserved0[2]
Reserved.
uint32_t index
Index of the end-of-packet descriptor.
Transmit queue configuration.
uint64_t comp_address
Completion ring address.
uint64_t immediate_address
Data ring address.
uint32_t num_desc
Number of descriptors.
uint64_t reserved0
Reserved.
uint8_t reserved[7]
Reserved.
uint32_t num_comp
Number of completion descriptors.
uint64_t driver_data_address
Driver-private data address.
uint64_t desc_address
Descriptor ring address.
uint32_t driver_data_len
Driver-private data length.
uint8_t intr_index
Interrupt index.
uint32_t num_immediate
Number of data descriptors.
Transmit queue descriptor.
struct vmxnet3_queue_status status
struct vmxnet3_tx_queue_control ctrl
struct vmxnet3_tx_stats state
struct vmxnet3_tx_queue_config cfg
Transmit queue statistics.
uint64_t reserved[10]
Reserved.
Variable-length configuration descriptor.
#define VMXNET3_NUM_TX_DESC
Number of TX descriptors.
#define VMXNET3_NUM_TX_COMP
Number of TX completion descriptors.
#define VMXNET3_NUM_RX_COMP
Number of RX completion descriptors.
#define VMXNET3_MAX_INTRS
Maximum number of interrupts.
#define VMXNET3_NUM_RX_DESC
Number of RX descriptors.
@ VMXNET3_CMD_GET_QUEUE_STATUS
@ VMXNET3_CMD_GET_PERM_MAC_HI
@ VMXNET3_CMD_ACTIVATE_DEV
@ VMXNET3_CMD_GET_CONF_INTR
@ VMXNET3_CMD_UPDATE_RX_MODE
@ VMXNET3_CMD_UPDATE_MAC_FILTERS
@ VMXNET3_CMD_UPDATE_RSSIDT
@ VMXNET3_CMD_GET_DEV_EXTRA_INFO
@ VMXNET3_CMD_GET_PERM_MAC_LO
@ VMXNET3_CMD_UPDATE_FEATURE
@ VMXNET3_CMD_UPDATE_VLAN_FILTERS
@ VMXNET3_CMD_QUIESCE_DEV
@ VMXNET3_CMD_LOAD_PLUGIN
@ VMXNET3_CMD_UPDATE_PMCFG
vmxnet3_rx_filter_mode
Receive filter mode.
@ VMXNET3_RXM_MCAST
Multicast passing the filters.
@ VMXNET3_RXM_PROMISC
Promiscuous.
@ VMXNET3_RXM_UCAST
Unicast only.
@ VMXNET3_RXM_ALL_MULTI
All multicast.
@ VMXNET3_RXM_BCAST
Broadcast only.