extern vlib_log_class_registration_t avf_log;
+extern vlib_log_class_registration_t avf_stats_log;
#define avf_log_err(dev, f, ...) \
vlib_log (VLIB_LOG_LEVEL_ERR, avf_log.class, "%U: " f, \
format_vlib_pci_addr, &dev->pci_addr, \
## __VA_ARGS__)
+#define avf_stats_log_debug(dev, f, ...) \
+ vlib_log (VLIB_LOG_LEVEL_DEBUG, avf_stats_log.class, "%U: " f, \
+ format_vlib_pci_addr, &dev->pci_addr, ##__VA_ARGS__)
+
#define foreach_avf_device_flags \
_ (0, INITIALIZED, "initialized") \
_ (1, ERROR, "error") \
_ (2, ADMIN_UP, "admin-up") \
_ (3, VA_DMA, "vaddr-dma") \
_ (4, LINK_UP, "link-up") \
- _ (5, SHARED_TXQ_LOCK, "shared-txq-lock") \
_ (6, ELOG, "elog") \
_ (7, PROMISC, "promisc") \
_ (8, RX_INT, "rx-interrupts") \
volatile u32 *qtx_tail;
u16 next;
u16 size;
- u32 ctx_desc_placeholder_bi;
+ u32 *ph_bufs;
clib_spinlock_t lock;
avf_tx_desc_t *descs;
u32 *bufs;
avf_tx_desc_t *tmp_descs;
u32 *tmp_bufs;
+ u32 queue_index;
} avf_txq_t;
typedef struct
u8 *name;
int enable_elog;
u16 rxq_num;
+ u16 txq_num;
u16 rxq_size;
u16 txq_size;
/* return */
format_function_t format_avf_vlan_supported_caps;
format_function_t format_avf_vlan_caps;
format_function_t format_avf_vlan_support;
+format_function_t format_avf_eth_stats;
vnet_flow_dev_ops_function_t avf_flow_ops_fn;
static_always_inline avf_device_t *