app/testpmd: more vlan offload commands

This patch enables testpmd user can config port hw_vlan with more fine granularity:
hw vlan filter, hw vlan strip, and hw vlan extend.

Don't remove the original command(hw-vlan) considering that some user still want to use
only one command to switch on/off all 3 options.

Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
This commit is contained in:
Ouyang Changchun 2015-03-06 16:10:05 +08:00 committed by Thomas Monjalon
parent 64b01ee0b2
commit c9dd4aad4f
2 changed files with 51 additions and 3 deletions

View File

@ -530,7 +530,8 @@ static void cmd_help_long_parsed(void *parsed_result,
"port config all max-pkt-len (value)\n"
" Set the max packet length.\n\n"
"port config all (crc-strip|rx-cksum|hw-vlan|drop-en)"
"port config all (crc-strip|rx-cksum|hw-vlan|hw-vlan-filter|"
"hw-vlan-strip|hw-vlan-extend|drop-en)"
" (on|off)\n"
" Set crc-strip/rx-checksum/hardware-vlan/drop_en"
" for ports.\n\n"
@ -1343,6 +1344,33 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "hw-vlan-filter")) {
if (!strcmp(res->value, "on"))
rx_mode.hw_vlan_filter = 1;
else if (!strcmp(res->value, "off"))
rx_mode.hw_vlan_filter = 0;
else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "hw-vlan-strip")) {
if (!strcmp(res->value, "on"))
rx_mode.hw_vlan_strip = 1;
else if (!strcmp(res->value, "off"))
rx_mode.hw_vlan_strip = 0;
else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "hw-vlan-extend")) {
if (!strcmp(res->value, "on"))
rx_mode.hw_vlan_extend = 1;
else if (!strcmp(res->value, "off"))
rx_mode.hw_vlan_extend = 0;
else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "drop-en")) {
if (!strcmp(res->value, "on"))
rx_drop_en = 1;
@ -1371,7 +1399,8 @@ cmdline_parse_token_string_t cmd_config_rx_mode_flag_all =
TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, all, "all");
cmdline_parse_token_string_t cmd_config_rx_mode_flag_name =
TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, name,
"crc-strip#rx-cksum#hw-vlan");
"crc-strip#rx-cksum#hw-vlan#"
"hw-vlan-filter#hw-vlan-strip#hw-vlan-extend");
cmdline_parse_token_string_t cmd_config_rx_mode_flag_value =
TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, value,
"on#off");
@ -1379,7 +1408,8 @@ cmdline_parse_token_string_t cmd_config_rx_mode_flag_value =
cmdline_parse_inst_t cmd_config_rx_mode_flag = {
.f = cmd_config_rx_mode_flag_parsed,
.data = NULL,
.help_str = "port config all crc-strip|rx-cksum|hw-vlan on|off",
.help_str = "port config all crc-strip|rx-cksum|hw-vlan|"
"hw-vlan-filter|hw-vlan-strip|hw-vlan-extend on|off",
.tokens = {
(void *)&cmd_config_rx_mode_flag_port,
(void *)&cmd_config_rx_mode_flag_keyword,

View File

@ -153,6 +153,9 @@ usage(char* progname)
printf(" --crc-strip: enable CRC stripping by hardware.\n");
printf(" --enable-rx-cksum: enable rx hardware checksum offload.\n");
printf(" --disable-hw-vlan: disable hardware vlan.\n");
printf(" --disable-hw-vlan-filter: disable hardware vlan filter.\n");
printf(" --disable-hw-vlan-strip: disable hardware vlan strip.\n");
printf(" --disable-hw-vlan-extend: disable hardware vlan extend.\n");
printf(" --enable-drop-en: enable per queue packet drop.\n");
printf(" --disable-rss: disable rss.\n");
printf(" --port-topology=N: set port topology (N: paired (default) or "
@ -525,6 +528,9 @@ launch_args_parse(int argc, char** argv)
{ "crc-strip", 0, 0, 0 },
{ "enable-rx-cksum", 0, 0, 0 },
{ "disable-hw-vlan", 0, 0, 0 },
{ "disable-hw-vlan-filter", 0, 0, 0 },
{ "disable-hw-vlan-strip", 0, 0, 0 },
{ "disable-hw-vlan-extend", 0, 0, 0 },
{ "enable-drop-en", 0, 0, 0 },
{ "disable-rss", 0, 0, 0 },
{ "port-topology", 1, 0, 0 },
@ -764,6 +770,18 @@ launch_args_parse(int argc, char** argv)
rx_mode.hw_vlan_extend = 0;
}
if (!strcmp(lgopts[opt_idx].name,
"disable-hw-vlan-filter"))
rx_mode.hw_vlan_filter = 0;
if (!strcmp(lgopts[opt_idx].name,
"disable-hw-vlan-strip"))
rx_mode.hw_vlan_strip = 0;
if (!strcmp(lgopts[opt_idx].name,
"disable-hw-vlan-extend"))
rx_mode.hw_vlan_extend = 0;
if (!strcmp(lgopts[opt_idx].name, "enable-drop-en"))
rx_drop_en = 1;