X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdevices%2Faf_packet%2Faf_packet.h;h=4cae700909a89118cc1c4db9601645020a5fcf8d;hb=5a7aa51f0;hp=217d2f6b00992b5ff26a8b2ee97fb7429a2cfcbc;hpb=3414977152ae6362277158dc732e6b9958a6e618;p=vpp.git diff --git a/src/vnet/devices/af_packet/af_packet.h b/src/vnet/devices/af_packet/af_packet.h index 217d2f6b009..4cae700909a 100644 --- a/src/vnet/devices/af_packet/af_packet.h +++ b/src/vnet/devices/af_packet/af_packet.h @@ -40,37 +40,68 @@ typedef struct typedef struct { - u32 rx_frame_offset; - u32 num_pkts; - u8 is_save; -} save_state_t; + u8 *ring_start_addr; + u32 ring_size; +} af_packet_ring_t; typedef struct { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); clib_spinlock_t lockp; - u8 *host_if_name; - int host_if_index; int fd; - tpacket_req3_t *rx_req; - tpacket_req3_t *tx_req; - u8 **rx_ring; - u8 **tx_ring; - u8 is_cksum_gso_enabled; - u32 hdrlen; - u32 hw_if_index; - u32 sw_if_index; + union + { + tpacket_req3_t *rx_req; + tpacket_req3_t *tx_req; + }; + + union + { + u8 **rx_ring; + u8 **tx_ring; + }; + + union + { + u32 next_rx_block; + u32 next_tx_frame; + }; + + u16 queue_id; + u32 queue_index; + u32 clib_file_index; - u32 next_rx_block; - u32 next_tx_frame; + u32 rx_frame_offset; + u16 num_rx_pkts; + u8 is_rx_pending; + vnet_hw_if_rx_mode mode; +} af_packet_queue_t; +typedef struct +{ + CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); + u32 hw_if_index; + u32 sw_if_index; u32 per_interface_next_index; + af_packet_if_mode_t mode; u8 is_admin_up; - u32 queue_index; + u8 is_cksum_gso_enabled; + + af_packet_queue_t *rx_queues; + af_packet_queue_t *tx_queues; + + u8 num_rxqs; + u8 num_txqs; + + u8 *host_if_name; + int host_if_index; + u32 hdrlen; + u32 host_mtu; - af_packet_if_mode_t mode; - save_state_t ss; + u32 dev_instance; + + af_packet_ring_t *rings; } af_packet_if_t; typedef struct @@ -96,6 +127,8 @@ typedef struct u32 tx_frame_size; u32 rx_frames_per_block; u32 tx_frames_per_block; + u8 num_rxqs; + u8 num_txqs; af_packet_if_mode_t mode; /* return */