diff options
author | Damjan Marion <damarion@cisco.com> | 2018-04-16 00:18:34 +0200 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2018-04-25 15:36:04 +0000 |
commit | c576622667199db906efa3110ad25e552b3a0890 (patch) | |
tree | d6ffda4bf9b096f9ee1759d57e79d36dc51f27d0 /src/plugins/dpdk/device/dpdk.h | |
parent | 4a6d02337b9058182172f19df894ad2e18e6ac68 (diff) |
dpdk: complete rework of the dpdk-input node
Change-Id: If174d189de40e6f9ffae99997bba93a2519d9fda
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/plugins/dpdk/device/dpdk.h')
-rw-r--r-- | src/plugins/dpdk/device/dpdk.h | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h index 896617bd55f..bd442bd97af 100644 --- a/src/plugins/dpdk/device/dpdk.h +++ b/src/plugins/dpdk/device/dpdk.h @@ -181,14 +181,13 @@ typedef struct dpdk_portid_t device_index; u32 hw_if_index; - u32 vlib_sw_if_index; + u32 sw_if_index; /* next node index if we decide to steal the rx graph arc */ u32 per_interface_next_index; /* dpdk rte_mbuf rx and tx vectors, VLIB_FRAME_SIZE */ struct rte_mbuf ***tx_vectors; /* one per worker thread */ - struct rte_mbuf ***rx_vectors; dpdk_pmd_t pmd:8; i8 cpu_socket; @@ -350,19 +349,30 @@ typedef struct extern dpdk_config_main_t dpdk_config_main; +#define DPDK_RX_BURST_SZ VLIB_FRAME_SIZE + +typedef struct +{ + CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); + struct rte_mbuf *mbufs[DPDK_RX_BURST_SZ]; + u32 buffers[DPDK_RX_BURST_SZ]; + u16 next[DPDK_RX_BURST_SZ]; + u16 etype[DPDK_RX_BURST_SZ]; + u8 flags[DPDK_RX_BURST_SZ]; + vlib_buffer_t buffer_template; +} dpdk_per_thread_data_t; + typedef struct { /* Devices */ dpdk_device_t *devices; dpdk_device_and_queue_t **devices_by_hqos_cpu; + dpdk_per_thread_data_t *per_thread_data; /* per-thread recycle lists */ u32 **recycle; - /* per-thread buffer templates */ - vlib_buffer_t *buffer_templates; - /* buffer flags template, configurable to enable/disable tcp / udp cksum */ u32 buffer_flags_template; @@ -416,7 +426,7 @@ typedef struct /* Copy of VLIB buffer; packet data stored in pre_data. */ vlib_buffer_t buffer; u8 data[256]; /* First 256 data bytes, used for hexdump */ -} dpdk_tx_dma_trace_t; +} dpdk_tx_trace_t; typedef struct { @@ -426,7 +436,7 @@ typedef struct struct rte_mbuf mb; vlib_buffer_t buffer; /* Copy of VLIB buffer; pkt data stored in pre_data. */ u8 data[256]; /* First 256 data bytes, used for hexdump */ -} dpdk_rx_dma_trace_t; +} dpdk_rx_trace_t; void dpdk_device_setup (dpdk_device_t * xd); void dpdk_device_start (dpdk_device_t * xd); @@ -467,8 +477,8 @@ void dpdk_update_link_state (dpdk_device_t * xd, f64 now); format_function_t format_dpdk_device_name; format_function_t format_dpdk_device; format_function_t format_dpdk_device_errors; -format_function_t format_dpdk_tx_dma_trace; -format_function_t format_dpdk_rx_dma_trace; +format_function_t format_dpdk_tx_trace; +format_function_t format_dpdk_rx_trace; format_function_t format_dpdk_rte_mbuf; format_function_t format_dpdk_rx_rte_mbuf; unformat_function_t unformat_dpdk_log_level; |