Skip to content

Commit

Permalink
app/testpmd: remove duplicated Rx offload commands
Browse files Browse the repository at this point in the history
[ upstream commit e5db17a ]

The testpmd application provides two sets of commands for RX offload
flags configuration. The purpose of this patch is to eliminate this
duplication by removing the old set of commands:
“port config all crc-strip|scatter|rx-cksum|rx-timestamp|hw-vlan|
hw-vlan-filter|hw-vlan-strip|hw-vlan-extend on|off”

The other commands set that can be used instead in order to enable
or disable the same RX offloading flags on all RX queues of a port is:
"port config <port_id> rx_offload crc_strip|scatter|ipv4_cksum|
udp_cksum|tcp_cksum|timestamp|vlan_strip|vlan_filter|vlan_extend on|off"

This patch also fixes the "drop-en" command, which enables packets
dropping on all RX queues of all ports when no receive buffers available
“port config all drop-en on|off”

Fixes: 384161e ("app/testpmd: adjust on the fly VLAN configuration")

Signed-off-by: Flavia Musatescu <flavia.musatescu@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
  • Loading branch information
Flavia Musatescu authored and kevintraynor committed Nov 21, 2019
1 parent 007d5fe commit 403ef11
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 185 deletions.
120 changes: 14 additions & 106 deletions app/test-pmd/cmdline.c
Expand Up @@ -796,11 +796,9 @@ 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|scatter|rx-cksum|rx-timestamp|hw-vlan|hw-vlan-filter|"
"hw-vlan-strip|hw-vlan-extend|drop-en)"
" (on|off)\n"
" Set crc-strip/scatter/rx-checksum/hardware-vlan/drop_en"
" for ports.\n\n"
"port config all drop-en (on|off)\n"
" Enable or disable packet drop on all RX queues of all ports when no "
"receive buffers available.\n\n"

"port config all rss (all|default|ip|tcp|udp|sctp|"
"ether|port|vxlan|geneve|nvgre|none|<flowtype_id>)\n"
Expand Down Expand Up @@ -2041,112 +2039,24 @@ cmd_config_rx_mode_flag_parsed(void *parsed_result,
__attribute__((unused)) void *data)
{
struct cmd_config_rx_mode_flag *res = parsed_result;
portid_t pid;
int k;

if (!all_ports_stopped()) {
printf("Please stop all ports first\n");
return;
}

RTE_ETH_FOREACH_DEV(pid) {
struct rte_port *port;
uint64_t rx_offloads;

port = &ports[pid];
rx_offloads = port->dev_conf.rxmode.offloads;
if (!strcmp(res->name, "crc-strip")) {
if (!strcmp(res->value, "on")) {
rx_offloads &= ~DEV_RX_OFFLOAD_KEEP_CRC;
} else if (!strcmp(res->value, "off")) {
rx_offloads |= DEV_RX_OFFLOAD_KEEP_CRC;
} else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "scatter")) {
if (!strcmp(res->value, "on")) {
rx_offloads |= DEV_RX_OFFLOAD_SCATTER;
} else if (!strcmp(res->value, "off")) {
rx_offloads &= ~DEV_RX_OFFLOAD_SCATTER;
} else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "rx-cksum")) {
if (!strcmp(res->value, "on"))
rx_offloads |= DEV_RX_OFFLOAD_CHECKSUM;
else if (!strcmp(res->value, "off"))
rx_offloads &= ~DEV_RX_OFFLOAD_CHECKSUM;
else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "rx-timestamp")) {
if (!strcmp(res->value, "on"))
rx_offloads |= DEV_RX_OFFLOAD_TIMESTAMP;
else if (!strcmp(res->value, "off"))
rx_offloads &= ~DEV_RX_OFFLOAD_TIMESTAMP;
else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "hw-vlan")) {
if (!strcmp(res->value, "on")) {
rx_offloads |= (DEV_RX_OFFLOAD_VLAN_FILTER |
DEV_RX_OFFLOAD_VLAN_STRIP);
} else if (!strcmp(res->value, "off")) {
rx_offloads &= ~(DEV_RX_OFFLOAD_VLAN_FILTER |
DEV_RX_OFFLOAD_VLAN_STRIP);
} else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "hw-vlan-filter")) {
if (!strcmp(res->value, "on"))
rx_offloads |= DEV_RX_OFFLOAD_VLAN_FILTER;
else if (!strcmp(res->value, "off"))
rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_FILTER;
else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "hw-vlan-strip")) {
if (!strcmp(res->value, "on"))
rx_offloads |= DEV_RX_OFFLOAD_VLAN_STRIP;
else if (!strcmp(res->value, "off"))
rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_STRIP;
else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "hw-vlan-extend")) {
if (!strcmp(res->value, "on"))
rx_offloads |= DEV_RX_OFFLOAD_VLAN_EXTEND;
else if (!strcmp(res->value, "off"))
rx_offloads &= ~DEV_RX_OFFLOAD_VLAN_EXTEND;
else {
printf("Unknown parameter\n");
return;
}
} else if (!strcmp(res->name, "drop-en")) {
if (!strcmp(res->value, "on"))
rx_drop_en = 1;
else if (!strcmp(res->value, "off"))
rx_drop_en = 0;
else {
printf("Unknown parameter\n");
return;
}
} else {
if (!strcmp(res->name, "drop-en")) {
if (!strcmp(res->value, "on"))
rx_drop_en = 1;
else if (!strcmp(res->value, "off"))
rx_drop_en = 0;
else {
printf("Unknown parameter\n");
return;
}
port->dev_conf.rxmode.offloads = rx_offloads;
/* Apply Rx offloads configuration */
for (k = 0; k < port->dev_info.max_rx_queues; k++)
port->rx_conf[k].offloads =
port->dev_conf.rxmode.offloads;
} else {
printf("Unknown parameter\n");
return;
}

init_port_config();
Expand All @@ -2163,17 +2073,15 @@ 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#scatter#rx-cksum#rx-timestamp#hw-vlan#"
"hw-vlan-filter#hw-vlan-strip#hw-vlan-extend");
"drop-en");
cmdline_parse_token_string_t cmd_config_rx_mode_flag_value =
TOKEN_STRING_INITIALIZER(struct cmd_config_rx_mode_flag, value,
"on#off");

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|scatter|rx-cksum|rx-timestamp|hw-vlan|"
"hw-vlan-filter|hw-vlan-strip|hw-vlan-extend on|off",
.help_str = "port config all drop-en on|off",
.tokens = {
(void *)&cmd_config_rx_mode_flag_port,
(void *)&cmd_config_rx_mode_flag_keyword,
Expand Down
81 changes: 2 additions & 79 deletions doc/guides/testpmd_app_ug/testpmd_funcs.rst
Expand Up @@ -2009,91 +2009,14 @@ Set the maximum packet length::

This is equivalent to the ``--max-pkt-len`` command-line option.

port config - CRC Strip
~~~~~~~~~~~~~~~~~~~~~~~

Set hardware CRC stripping on or off for all ports::

testpmd> port config all crc-strip (on|off)

CRC stripping is on by default.

The ``off`` option is equivalent to the ``--disable-crc-strip`` command-line option.

port config - scatter
~~~~~~~~~~~~~~~~~~~~~~~

Set RX scatter mode on or off for all ports::

testpmd> port config all scatter (on|off)

RX scatter mode is off by default.

The ``on`` option is equivalent to the ``--enable-scatter`` command-line option.

port config - RX Checksum
~~~~~~~~~~~~~~~~~~~~~~~~~

Set hardware RX checksum offload to on or off for all ports::

testpmd> port config all rx-cksum (on|off)

Checksum offload is off by default.

The ``on`` option is equivalent to the ``--enable-rx-cksum`` command-line option.

port config - VLAN
~~~~~~~~~~~~~~~~~~

Set hardware VLAN on or off for all ports::

testpmd> port config all hw-vlan (on|off)

Hardware VLAN is off by default.

The ``on`` option is equivalent to the ``--enable-hw-vlan`` command-line option.

port config - VLAN filter
~~~~~~~~~~~~~~~~~~~~~~~~~

Set hardware VLAN filter on or off for all ports::

testpmd> port config all hw-vlan-filter (on|off)

Hardware VLAN filter is off by default.

The ``on`` option is equivalent to the ``--enable-hw-vlan-filter`` command-line option.

port config - VLAN strip
~~~~~~~~~~~~~~~~~~~~~~~~

Set hardware VLAN strip on or off for all ports::

testpmd> port config all hw-vlan-strip (on|off)

Hardware VLAN strip is off by default.

The ``on`` option is equivalent to the ``--enable-hw-vlan-strip`` command-line option.

port config - VLAN extend
~~~~~~~~~~~~~~~~~~~~~~~~~

Set hardware VLAN extend on or off for all ports::

testpmd> port config all hw-vlan-extend (on|off)

Hardware VLAN extend is off by default.

The ``on`` option is equivalent to the ``--enable-hw-vlan-extend`` command-line option.

port config - Drop Packets
~~~~~~~~~~~~~~~~~~~~~~~~~~

Set packet drop for packets with no descriptors on or off for all ports::
Enable or disable packet drop on all RX queues of all ports when no receive buffers available::

testpmd> port config all drop-en (on|off)

Packet dropping for packets with no descriptors is off by default.
Packet dropping when no receive buffers available is off by default.

The ``on`` option is equivalent to the ``--enable-drop-en`` command-line option.

Expand Down

0 comments on commit 403ef11

Please sign in to comment.