#define foreach_vmxnet3_tx_func_error \
_(ERROR_PACKETS, "error packets") \
+ _(LINK_DOWN, "link down") \
_(NO_FREE_SLOTS, "no free tx slots")
typedef enum
#undef _
};
+#define foreach_vmxnet3_show_entry \
+ _(RX_COMP, "rx comp") \
+ _(RX_DESC0, "rx desc 0") \
+ _(RX_DESC1, "rx desc 1") \
+ _(TX_COMP, "tx comp") \
+ _(TX_DESC, "tx desc")
+
+enum
+{
+#define _(a, b) VMXNET3_SHOW_##a,
+ foreach_vmxnet3_show_entry
+#undef _
+};
+
/* BAR 0 */
#define VMXNET3_REG_IMR 0x0000 /* Interrupt Mask Register */
#define VMXNET3_REG_TXPROD 0x0600 /* Tx Producer Index */
#define VMXNET3_RXF_BTYPE (1 << 14) /* rx body buffer type */
#define VMXNET3_RXF_GEN (1 << 31) /* rx generation */
+#define VMXNET3_RXCF_IP6 (1 << 20) /* rx ip6 packet */
+#define VMXNET3_RXCF_IP4 (1 << 21) /* rx ip4 packet */
#define VMXNET3_RXCF_GEN (1 << 31) /* rx completion generation */
#define VMXNET3_RXC_INDEX (0xFFF) /* rx completion index mask */
typedef struct
{
CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
- u64 next;
u32 gen;
+ u16 next;
} vmxnet3_rx_comp_ring;
typedef struct
typedef struct
{
CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
- u64 next;
u32 gen;
+ u16 next;
} vmxnet3_tx_comp_ring;
typedef struct
vmxnet3_dma *dma;
+ u32 link_speed;
} vmxnet3_device_t;
typedef struct