{
/* No stream specified: enable/disable all streams. */
/* *INDENT-OFF* */
- pool_foreach (s, pg->streams, ({
+ pool_foreach (s, pg->streams) {
pg_stream_enable_disable (pg, s, is_enable);
- }));
+ }
/* *INDENT-ON* */
}
else
vlib_cli_output (vm, "%U", format_pg_stream, 0, 0);
/* *INDENT-OFF* */
- pool_foreach (s, pg->streams, ({
+ pool_foreach (s, pg->streams) {
vlib_cli_output (vm, "%U", format_pg_stream, s, verbose);
- }));
+ }
/* *INDENT-ON* */
done:
return 0;
}
+const char *
+pg_interface_get_input_node (pg_interface_t *pi)
+{
+ switch (pi->mode)
+ {
+ case PG_MODE_ETHERNET:
+ return ("ethernet-input");
+ case PG_MODE_IP4:
+ return ("ip4-input");
+ case PG_MODE_IP6:
+ return ("ip6-input");
+ }
+
+ ASSERT (0);
+ return ("ethernet-input");
+}
+
static clib_error_t *
new_stream (vlib_main_t * vm,
unformat_input_t * input, vlib_cli_command_t * cmd)
s.node_index = ~0;
s.max_packet_bytes = s.min_packet_bytes = 64;
s.buffer_bytes = vlib_buffer_get_default_data_size (vm);
- s.if_id = 0;
+ s.if_id = ~0;
s.n_max_frame = VLIB_FRAME_SIZE;
pcap_file_name = 0;
else if (unformat (input, "source pg%u", &s.if_id))
;
+ else if (unformat (input, "buffer-flags %U",
+ unformat_vnet_buffer_flags, &s.buffer_flags))
+ ;
+ else if (unformat (input, "buffer-offload-flags %U",
+ unformat_vnet_buffer_offload_flags, &s.buffer_oflags))
+ ;
else if (unformat (input, "node %U",
unformat_vlib_node, vm, &s.node_index))
;
{
if (pcap_file_name != 0)
{
- vlib_node_t *n =
- vlib_get_node_by_name (vm, (u8 *) "ethernet-input");
+ vlib_node_t *n;
+
+ ASSERT (s.if_id != ~0);
+
+ if (s.if_id != ~0)
+ n = vlib_get_node_by_name (vm, (u8 *) pg_interface_get_input_node (
+ &pg->interfaces[s.if_id]));
+ else
+ n = vlib_get_node_by_name (vm, (u8 *) "ethernet-input");
s.node_index = n->index;
}
else
{
pg_main_t *pg = &pg_main;
unformat_input_t _line_input, *line_input = &_line_input;
- u32 if_id, gso_enabled = 0, gso_size = 0;
+ u32 if_id, gso_enabled = 0, gso_size = 0, coalesce_enabled = 0;
clib_error_t *error = NULL;
if (!unformat_user (input, unformat_line_input, line_input))
{
if (unformat (line_input, "interface pg%u", &if_id))
;
+ else if (unformat (line_input, "coalesce-enabled"))
+ coalesce_enabled = 1;
else if (unformat (line_input, "gso-enabled"))
{
gso_enabled = 1;
}
}
- pg_interface_add_or_get (pg, if_id, gso_enabled, gso_size);
+ pg_interface_add_or_get (pg, if_id, gso_enabled, gso_size, coalesce_enabled,
+ PG_MODE_ETHERNET);
done:
unformat_free (line_input);
/* *INDENT-OFF* */
VLIB_CLI_COMMAND (create_pg_if_cmd, static) = {
.path = "create packet-generator",
- .short_help = "create packet-generator interface <interface name> [gso-enabled gso-size <size>]",
+ .short_help = "create packet-generator interface <interface name>"
+ " [gso-enabled gso-size <size> [coalesce-enabled]]",
.function = create_pg_if_cmd_fn,
};
/* *INDENT-ON* */