X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession.h;fp=src%2Fvnet%2Fsession%2Fsession.h;h=a68e51239bdcd348f834688c63830a1e7a0a487b;hb=0654242d1ef51566f0d58445a16053cf376e5a6e;hp=68ed8431605a09df760ec9bf37355cb5aec66382;hpb=6e1eaad216c41ce1cb4af13a2214f4d86e094414;p=vpp.git diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h index 68ed8431605..a68e51239bd 100644 --- a/src/vnet/session/session.h +++ b/src/vnet/session/session.h @@ -21,6 +21,7 @@ #include #include #include +#include #define foreach_session_input_error \ _(NO_SESSION, "No session drops") \ @@ -85,6 +86,13 @@ typedef enum session_wrk_flags_ SESSION_WRK_F_ADAPTIVE = 1 << 0, } __clib_packed session_wrk_flag_t; +#define DMA_TRANS_SIZE 1024 +typedef struct +{ + u32 *pending_tx_buffers; + u16 *pending_tx_nexts; +} session_dma_transfer; + typedef struct session_worker_ { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); @@ -155,6 +163,15 @@ typedef struct session_worker_ /** List head for first worker evts pending handling on main */ clib_llist_index_t evts_pending_main; + int config_index; + u8 dma_enabled; + session_dma_transfer *dma_trans; + u16 trans_head; + u16 trans_tail; + u16 trans_size; + u16 batch_num; + vlib_dma_batch_t *batch; + #if SESSION_DEBUG /** last event poll time by thread */ clib_time_type_t last_event_poll; @@ -237,6 +254,9 @@ typedef struct session_main_ /** Session ssvm segment configs*/ uword wrk_mqs_segment_size; + /** Session enable dma*/ + u8 dma_enabled; + /** Session table size parameters */ u32 configured_v4_session_table_buckets; u32 configured_v4_session_table_memory;