app/testpmd: add command line option for Tx offloads

This patch adds command line option to set hex value for the ports Tx
offloads flags.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
This commit is contained in:
Shahaf Shuler 2018-01-10 11:09:15 +02:00 committed by Thomas Monjalon
parent 3eecba267c
commit fd8c20aab4
4 changed files with 26 additions and 2 deletions

View File

@ -70,7 +70,7 @@ usage(char* progname)
"--rss-ip | --rss-udp | " "--rss-ip | --rss-udp | "
"--rxpt= | --rxht= | --rxwt= | --rxfreet= | " "--rxpt= | --rxht= | --rxwt= | --rxfreet= | "
"--txpt= | --txht= | --txwt= | --txfreet= | " "--txpt= | --txht= | --txwt= | --txfreet= | "
"--txrst= | --txqflags= ]\n", "--txrst= | --txqflags= | --tx-offloads ]\n",
progname); progname);
#ifdef RTE_LIBRTE_CMDLINE #ifdef RTE_LIBRTE_CMDLINE
printf(" --interactive: run in interactive mode.\n"); printf(" --interactive: run in interactive mode.\n");
@ -187,6 +187,7 @@ usage(char* progname)
"disable print of designated event or all of them.\n"); "disable print of designated event or all of them.\n");
printf(" --flow-isolate-all: " printf(" --flow-isolate-all: "
"requests flow API isolated mode on all ports at initialization time.\n"); "requests flow API isolated mode on all ports at initialization time.\n");
printf(" --tx-offloads=0xXXXXXXXX: hexadecimal bitmask of TX queue offloads\n");
} }
#ifdef RTE_LIBRTE_CMDLINE #ifdef RTE_LIBRTE_CMDLINE
@ -537,8 +538,9 @@ launch_args_parse(int argc, char** argv)
char **argvopt; char **argvopt;
int opt_idx; int opt_idx;
enum { TX, RX }; enum { TX, RX };
/* Default Rx offloads for all ports. */ /* Default offloads for all ports. */
uint64_t rx_offloads = rx_mode.offloads; uint64_t rx_offloads = rx_mode.offloads;
uint64_t tx_offloads = tx_mode.offloads;
static struct option lgopts[] = { static struct option lgopts[] = {
{ "help", 0, 0, 0 }, { "help", 0, 0, 0 },
@ -616,6 +618,7 @@ launch_args_parse(int argc, char** argv)
{ "no-rmv-interrupt", 0, 0, 0 }, { "no-rmv-interrupt", 0, 0, 0 },
{ "print-event", 1, 0, 0 }, { "print-event", 1, 0, 0 },
{ "mask-event", 1, 0, 0 }, { "mask-event", 1, 0, 0 },
{ "tx-offloads", 1, 0, 0 },
{ 0, 0, 0, 0 }, { 0, 0, 0, 0 },
}; };
@ -1087,6 +1090,15 @@ launch_args_parse(int argc, char** argv)
rmv_interrupt = 0; rmv_interrupt = 0;
if (!strcmp(lgopts[opt_idx].name, "flow-isolate-all")) if (!strcmp(lgopts[opt_idx].name, "flow-isolate-all"))
flow_isolate_all = 1; flow_isolate_all = 1;
if (!strcmp(lgopts[opt_idx].name, "tx-offloads")) {
char *end = NULL;
n = strtoull(optarg, &end, 16);
if (n >= 0)
tx_offloads = (uint64_t)n;
else
rte_exit(EXIT_FAILURE,
"tx-offloads must be >= 0\n");
}
if (!strcmp(lgopts[opt_idx].name, "print-event")) if (!strcmp(lgopts[opt_idx].name, "print-event"))
if (parse_event_printing_config(optarg, 1)) { if (parse_event_printing_config(optarg, 1)) {
rte_exit(EXIT_FAILURE, rte_exit(EXIT_FAILURE,
@ -1113,4 +1125,5 @@ launch_args_parse(int argc, char** argv)
/* Set offload configuration from command line parameters. */ /* Set offload configuration from command line parameters. */
rx_mode.offloads = rx_offloads; rx_mode.offloads = rx_offloads;
tx_mode.offloads = tx_offloads;
} }

View File

@ -316,6 +316,8 @@ struct rte_eth_rxmode rx_mode = {
.ignore_offload_bitfield = 1, .ignore_offload_bitfield = 1,
}; };
struct rte_eth_txmode tx_mode;
struct rte_fdir_conf fdir_conf = { struct rte_fdir_conf fdir_conf = {
.mode = RTE_FDIR_MODE_NONE, .mode = RTE_FDIR_MODE_NONE,
.pballoc = RTE_FDIR_PBALLOC_64K, .pballoc = RTE_FDIR_PBALLOC_64K,
@ -576,6 +578,8 @@ init_config(void)
RTE_ETH_FOREACH_DEV(pid) { RTE_ETH_FOREACH_DEV(pid) {
port = &ports[pid]; port = &ports[pid];
/* Apply default Tx configuration for all ports */
port->dev_conf.txmode = tx_mode;
rte_eth_dev_info_get(pid, &port->dev_info); rte_eth_dev_info_get(pid, &port->dev_info);
if (numa_support) { if (numa_support) {

View File

@ -367,6 +367,8 @@ extern portid_t fwd_ports_ids[RTE_MAX_ETHPORTS];
extern struct rte_port *ports; extern struct rte_port *ports;
extern struct rte_eth_rxmode rx_mode; extern struct rte_eth_rxmode rx_mode;
extern struct rte_eth_txmode tx_mode;
extern uint64_t rss_hf; extern uint64_t rss_hf;
extern queueid_t nb_rxq; extern queueid_t nb_rxq;

View File

@ -509,3 +509,8 @@ The commandline options are:
configured flow rules only (see flow command). configured flow rules only (see flow command).
Ports that do not support this mode are automatically discarded. Ports that do not support this mode are automatically discarded.
* ``--tx-offloads=0xXXXXXXXX``
Set the hexadecimal bitmask of TX queue offloads.
The default value is 0.