X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Favf%2Favf.h;h=14d78195f76d6c710754c02db69d2dd24dcf3a5b;hb=4e6014fc;hp=71e6f09e824a6e2814dd53832259efd50f67b2bb;hpb=b4ff07a2f843207b6d024e1ed8a31fa37324fe07;p=vpp.git diff --git a/src/plugins/avf/avf.h b/src/plugins/avf/avf.h index 71e6f09e824..14d78195f76 100644 --- a/src/plugins/avf/avf.h +++ b/src/plugins/avf/avf.h @@ -15,8 +15,13 @@ *------------------------------------------------------------------ */ +#ifndef _AVF_H_ +#define _AVF_H_ + #include +#include + #define foreach_avf_device_flags \ _(0, INITIALIZED, "initialized") \ _(1, ERROR, "error") \ @@ -33,19 +38,39 @@ enum #undef _ }; -typedef struct +typedef volatile struct { - u64 qword[4]; + union + { + struct + { + u64 mirr:13; + u64 rsv1:3; + u64 l2tag1:16; + u64 filter_status:32; + u64 status:19; + u64 error:8; + u64 rsv2:3; + u64 ptype:8; + u64 length:26; + }; + u64 qword[4]; +#ifdef CLIB_HAVE_VEC256 + u64x4 as_u64x4; +#endif + }; } avf_rx_desc_t; STATIC_ASSERT_SIZEOF (avf_rx_desc_t, 32); -typedef struct +typedef volatile struct { union { u64 qword[2]; +#ifdef CLIB_HAVE_VEC128 u64x2 as_u64x2; +#endif }; } avf_tx_desc_t; @@ -59,7 +84,7 @@ typedef struct u16 size; avf_rx_desc_t *descs; u32 *bufs; - u16 n_bufs; + u16 n_enqueued; } avf_rxq_t; typedef struct @@ -71,7 +96,7 @@ typedef struct clib_spinlock_t lock; avf_tx_desc_t *descs; u32 *bufs; - u16 n_bufs; + u16 n_enqueued; } avf_txq_t; typedef struct @@ -120,15 +145,13 @@ typedef struct typedef struct { - u32 bi; u32 status; u16 length; - u16 tail_length; u8 ptype; u8 error; } avf_rx_vector_entry_t; -STATIC_ASSERT_SIZEOF (avf_rx_vector_entry_t, 16); +STATIC_ASSERT_SIZEOF (avf_rx_vector_entry_t, 8); #define AVF_RX_VECTOR_SZ VLIB_FRAME_SIZE @@ -144,6 +167,7 @@ typedef struct CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); avf_rx_vector_entry_t rx_vector[AVF_RX_VECTOR_SZ]; u32 *to_free; + vlib_buffer_t buffer_template; } avf_per_thread_data_t; typedef struct @@ -157,11 +181,15 @@ STATIC_ASSERT (VNET_DEVICE_INPUT_N_NEXT_NODES < 256, "too many next nodes"); typedef struct { + u16 msg_id_base; + avf_device_t *devices; avf_per_thread_data_t *per_thread_data; vlib_physmem_region_index_t physmem_region; int physmem_region_alloc; + vlib_log_class_t log_class; + /* 256 element array for ptype based lookup */ avf_ptype_t *ptypes; } avf_main_t; @@ -172,8 +200,11 @@ typedef struct { vlib_pci_addr_t addr; int enable_elog; + u16 rxq_size; + u16 txq_size; /* return */ int rv; + u32 sw_if_index; clib_error_t *error; } avf_create_if_args_t; @@ -256,6 +287,8 @@ typedef struct avf_rx_vector_entry_t rxve; } avf_input_trace_t; +#endif /* AVF_H */ + /* * fd.io coding-style-patch-verification: ON *