X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fpg%2Fpg.h;h=aef7a5bbf7110a913fce2fdc96ca80fc42bba8ee;hb=22e9cfd76;hp=111df91ae99b169ec84ef1e73caf3718361d477d;hpb=bfe4dfa7089b5d2c03aa607ab72abbcd840cbbce;p=vpp.git diff --git a/src/vnet/pg/pg.h b/src/vnet/pg/pg.h index 111df91ae99..aef7a5bbf71 100644 --- a/src/vnet/pg/pg.h +++ b/src/vnet/pg/pg.h @@ -43,7 +43,7 @@ #include /* for VLIB_N_RX_TX */ #include #include /* for buffer_fifo */ -#include +#include #include extern vnet_device_class_t pg_dev_class; @@ -89,8 +89,6 @@ typedef struct /* Buffers pre-initialized with fixed buffer data for this stream. */ u32 *buffer_fifo; - /* Buffer free list for this buffer index in stream. */ - u32 free_list_index; } pg_buffer_index_t; typedef struct pg_stream_t @@ -102,7 +100,6 @@ typedef struct pg_stream_t /* Stream is currently enabled. */ #define PG_STREAM_FLAGS_IS_ENABLED (1 << 0) -#define PG_STREAM_FLAGS_DISABLE_BUFFER_RECYCLE (1 << 1) /* Edit groups are created by each protocol level (e.g. ethernet, ip4, tcp, ...). */ @@ -169,6 +166,7 @@ typedef struct pg_stream_t pg_buffer_index_t *buffer_indices; u8 **replay_packet_templates; + u64 *replay_packet_timestamps; u32 current_replay_packet_index; } pg_stream_t; @@ -192,6 +190,7 @@ pg_edit_group_free (pg_edit_group_t * g) always_inline void pg_stream_free (pg_stream_t * s) { + int i; pg_edit_group_t *g; pg_edit_t *e; vec_foreach (e, s->non_fixed_edits) pg_edit_free (e); @@ -201,6 +200,10 @@ pg_stream_free (pg_stream_t * s) vec_free (s->fixed_packet_data); vec_free (s->fixed_packet_data_mask); vec_free (s->name); + for (i = 0; i < vec_len (s->replay_packet_templates); i++) + vec_free (s->replay_packet_templates[i]); + vec_free (s->replay_packet_templates); + vec_free (s->replay_packet_timestamps); { pg_buffer_index_t *bi; @@ -281,7 +284,7 @@ pg_free_edit_group (pg_stream_t * s) pg_edit_group_t *g = pg_stream_get_group (s, i); pg_edit_group_free (g); - memset (g, 0, sizeof (g[0])); + clib_memset (g, 0, sizeof (g[0])); _vec_len (s->edit_groups) = i; } @@ -296,6 +299,8 @@ typedef struct /* Identifies stream for this interface. */ u32 id; + u8 gso_enabled; + u32 gso_size; pcap_main_t pcap_main; u8 *pcap_file_name; } pg_interface_t; @@ -322,6 +327,9 @@ typedef struct pg_main_t pg_interface_t *interfaces; uword *if_index_by_if_id; + /* Vector of buffer indices for use in pg_stream_fill_replay, per thread */ + u32 **replay_buffers_by_thread; + /* Per VLIB node information. */ pg_node_t *nodes; } pg_main_t; @@ -338,13 +346,15 @@ vlib_node_function_t pg_input, pg_output; /* Stream add/delete. */ void pg_stream_del (pg_main_t * pg, uword index); void pg_stream_add (pg_main_t * pg, pg_stream_t * s_init); +void pg_stream_change (pg_main_t * pg, pg_stream_t * s); /* Enable/disable stream. */ void pg_stream_enable_disable (pg_main_t * pg, pg_stream_t * s, int is_enable); /* Find/create free packet-generator interface index. */ -u32 pg_interface_add_or_get (pg_main_t * pg, uword stream_index); +u32 pg_interface_add_or_get (pg_main_t * pg, uword stream_index, + u8 gso_enabled, u32 gso_size); always_inline pg_node_t * pg_get_node (uword node_index)