|
FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
|
Go to the documentation of this file.
16 #ifndef included_gro_h
17 #define included_gro_h
23 #define GRO_FLOW_TABLE_MAX_SIZE 16
24 #define GRO_FLOW_TABLE_FLUSH 1e-5
25 #define GRO_FLOW_N_BUFFERS 64
26 #define GRO_FLOW_TIMEOUT 1e-5
27 #define GRO_TO_VECTOR_SIZE(X) (X + GRO_FLOW_TABLE_MAX_SIZE)
68 to->flow_key.flow_data[0] =
from->flow_data[0];
69 to->flow_key.flow_data[1] =
from->flow_data[1];
70 to->flow_key.flow_data[2] =
from->flow_data[2];
71 to->flow_key.flow_data[3] =
from->flow_data[3];
72 to->flow_key.flow_data[4] =
from->flow_data[4];
73 to->flow_key.flow_data_u32 =
from->flow_data_u32;
128 if (!flow_table_temp)
133 flow_table_temp->
is_l2 = is_l2;
134 *flow_table = flow_table_temp;
265 s =
format (s,
"packet-coalesce: enable\n");
267 s =
format (s,
"packet-coalesce: disable\n");
273 "%Uflow-table: size %u gro-total-vectors %lu gro-n-vectors %u",
278 double average_rate =
280 s =
format (s,
" gro-average-rate %.2f", average_rate);
283 s =
format (s,
" gro-average-rate 0.00");
static_always_inline gro_flow_t * gro_flow_table_find_or_add_flow(gro_flow_table_t *flow_table, gro_flow_key_t *flow_key)
static_always_inline u8 gro_flow_table_is_timeout(vlib_main_t *vm, gro_flow_table_t *flow_table)
gro_flow_t gro_flow[GRO_FLOW_TABLE_MAX_SIZE]
ip46_address_t src_address
static void clib_mem_free(void *p)
static_always_inline u8 gro_flow_table_is_enable(gro_flow_table_t *flow_table)
static heap_elt_t * first(heap_header_t *h)
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
static_always_inline u32 gro_flow_table_init(gro_flow_table_t **flow_table, u8 is_l2, u32 node_index)
static_always_inline void gro_flow_table_reset_flow(gro_flow_table_t *flow_table, gro_flow_t *gro_flow)
static_always_inline u8 gro_flow_is_timeout(vlib_main_t *vm, gro_flow_t *gro_flow)
static_always_inline void gro_flow_store_packet(gro_flow_t *gro_flow, u32 bi0)
static_always_inline void gro_flow_table_free(gro_flow_table_t *flow_table)
static_always_inline gro_flow_t * gro_flow_table_new_flow(gro_flow_table_t *flow_table)
static_always_inline void gro_flow_set_timeout(vlib_main_t *vm, gro_flow_t *gro_flow, f64 timeout_expire)
timeout_expire is in between 3 to 10 microseconds 3e-6 1e-5
static_always_inline void gro_flow_table_set_is_enable(gro_flow_table_t *flow_table, u8 is_enable)
#define static_always_inline
ip46_address_t dst_address
#define GRO_FLOW_TABLE_MAX_SIZE
static_always_inline gro_flow_t * gro_flow_table_get_flow(gro_flow_table_t *flow_table, gro_flow_key_t *flow_key)
static_always_inline void gro_flow_table_set_node_index(gro_flow_table_t *flow_table, u32 node_index)
description fragment has unexpected format
static_always_inline u8 gro_flow_is_equal(gro_flow_key_t *first, gro_flow_key_t *second)
static_always_inline void gro_flow_set_flow_key(gro_flow_t *to, gro_flow_key_t *from)
clib_memset(h->entries, 0, sizeof(h->entries[0]) *entries)
static_always_inline void gro_flow_table_set_timeout(vlib_main_t *vm, gro_flow_table_t *flow_table, f64 timeout_expire)
static f64 vlib_time_now(vlib_main_t *vm)
vl_api_interface_index_t sw_if_index
static void * clib_mem_alloc(uword size)
static_always_inline u8 * gro_flow_table_format(u8 *s, va_list *args)