X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdevices%2Faf_packet%2Faf_packet.h;h=3163aa0323e5575309992c4acb158b9332f7e156;hb=7d0e30bc6;hp=77a2c7a3753fb9a76819b3e6bc777eb7e66792e7;hpb=1927da29ccbe1d4cc8e59ccfa197eb41c257814f;p=vpp.git diff --git a/src/vnet/devices/af_packet/af_packet.h b/src/vnet/devices/af_packet/af_packet.h index 77a2c7a3753..3163aa0323e 100644 --- a/src/vnet/devices/af_packet/af_packet.h +++ b/src/vnet/devices/af_packet/af_packet.h @@ -19,11 +19,20 @@ #include +#include + +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