devices: Add queues params in create_if
[vpp.git] / src / vnet / devices / af_packet / af_packet.h
index 77a2c7a..3163aa0 100644 (file)
 
 #include <vppinfra/lock.h>
 
+#include <vlib/log.h>
+
+typedef struct
+{
+  u32 sw_if_index;
+  u8 host_if_name[64];
+} af_packet_if_detail_t;
+
 typedef struct
 {
   CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
   clib_spinlock_t lockp;
   u8 *host_if_name;
+  int host_if_index;
   int fd;
   struct tpacket_req *rx_req;
   struct tpacket_req *tx_req;
@@ -31,13 +40,15 @@ typedef struct
   u8 *tx_ring;
   u32 hw_if_index;
   u32 sw_if_index;
-  u32 unix_file_index;
+  u32 clib_file_index;
 
   u32 next_rx_frame;
   u32 next_tx_frame;
 
   u32 per_interface_next_index;
   u8 is_admin_up;
+  u32 queue_index;
+  u32 host_mtu;
 } af_packet_if_t;
 
 typedef struct
@@ -53,15 +64,36 @@ typedef struct
 
   /* hash of host interface names */
   mhash_t if_index_by_host_if_name;
+
+  /** log class */
+  vlib_log_class_t log_class;
 } af_packet_main_t;
 
-af_packet_main_t af_packet_main;
+typedef struct
+{
+  u8 *host_if_name;
+  u8 *hw_addr;
+  u32 rx_frame_size;
+  u32 tx_frame_size;
+  u32 rx_frames_per_block;
+  u32 tx_frames_per_block;
+
+  /* return */
+  u32 sw_if_index;
+} af_packet_create_if_arg_t;
+
+extern af_packet_main_t af_packet_main;
 extern vnet_device_class_t af_packet_device_class;
 extern vlib_node_registration_t af_packet_input_node;
 
-int af_packet_create_if (vlib_main_t * vm, u8 * host_if_name,
-                        u8 * hw_addr_set, u32 * sw_if_index);
-int af_packet_delete_if (vlib_main_t * vm, u8 * host_if_name);
+int af_packet_create_if (af_packet_create_if_arg_t *arg);
+int af_packet_delete_if (u8 *host_if_name);
+int af_packet_set_l4_cksum_offload (u32 sw_if_index, u8 set);
+int af_packet_dump_ifs (af_packet_if_detail_t ** out_af_packet_ifs);
+
+format_function_t format_af_packet_device_name;
+
+#define MIN(x,y) (((x)<(y))?(x):(y))
 
 /*
  * fd.io coding-style-patch-verification: ON