avf: api fix
[vpp.git] / src / plugins / avf / avf.h
index 71e6f09..14d7819 100644 (file)
  *------------------------------------------------------------------
  */
 
+#ifndef _AVF_H_
+#define _AVF_H_
+
 #include <avf/virtchnl.h>
 
+#include <vlib/log.h>
+
 #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
  *