Skip to content

Commit

Permalink
examples/l3fwd: make Rx and Tx queue size configurable
Browse files Browse the repository at this point in the history
[ upstream commit 8efffae ]

Make Rx and Tx queue sizes configurable from the command line.
This helps DTS write better test cases.

Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Kathleen Capella <kathleen.capella@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
  • Loading branch information
nagarahalli authored and kevintraynor committed Mar 8, 2022
1 parent b466dfc commit ae6979c
Showing 1 changed file with 53 additions and 1 deletion.
54 changes: 53 additions & 1 deletion examples/l3fwd/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,8 @@ print_usage(const char *prgname)
" [-P]"
" [--lookup]"
" --config (port,queue,lcore)[,(port,queue,lcore)]"
" [--rx-queue-size NPKTS]"
" [--tx-queue-size NPKTS]"
" [--eth-dest=X,MM:MM:MM:MM:MM:MM]"
" [--max-pkt-len PKTLEN]"
" [--no-numa]"
Expand All @@ -360,6 +362,10 @@ print_usage(const char *prgname)
" Default: lpm\n"
" Accepted: em (Exact Match), lpm (Longest Prefix Match), fib (Forwarding Information Base)\n"
" --config (port,queue,lcore): Rx queue configuration\n"
" --rx-queue-size NPKTS: Rx queue size in decimal\n"
" Default: %d\n"
" --tx-queue-size NPKTS: Tx queue size in decimal\n"
" Default: %d\n"
" --eth-dest=X,MM:MM:MM:MM:MM:MM: Ethernet destination for port X\n"
" --max-pkt-len PKTLEN: maximum packet length in decimal (64-9600)\n"
" --no-numa: Disable numa awareness\n"
Expand All @@ -381,7 +387,7 @@ print_usage(const char *prgname)
" --event-vector-tmo: Max timeout to form vector in nanoseconds if event vectorization is enabled\n"
" -E : Enable exact match, legacy flag please use --lookup=em instead\n"
" -L : Enable longest prefix match, legacy flag please use --lookup=lpm instead\n\n",
prgname);
prgname, RTE_TEST_RX_DESC_DEFAULT, RTE_TEST_TX_DESC_DEFAULT);
}

static int
Expand Down Expand Up @@ -524,6 +530,38 @@ parse_mode(const char *optarg)
evt_rsrc->enabled = true;
}

static void
parse_queue_size(const char *queue_size_arg, uint16_t *queue_size, int rx)
{
char *end = NULL;
unsigned long value;

/* parse decimal string */
value = strtoul(queue_size_arg, &end, 10);
if ((queue_size_arg[0] == '\0') || (end == NULL) ||
(*end != '\0') || (value == 0)) {
if (rx == 1)
rte_exit(EXIT_FAILURE, "Invalid rx-queue-size\n");
else
rte_exit(EXIT_FAILURE, "Invalid tx-queue-size\n");

return;
}

if (value > UINT16_MAX) {
if (rx == 1)
rte_exit(EXIT_FAILURE, "rx-queue-size %lu > %d\n",
value, UINT16_MAX);
else
rte_exit(EXIT_FAILURE, "tx-queue-size %lu > %d\n",
value, UINT16_MAX);

return;
}

*queue_size = value;
}

static void
parse_eventq_sched(const char *optarg)
{
Expand Down Expand Up @@ -581,6 +619,8 @@ static const char short_options[] =
;

#define CMD_LINE_OPT_CONFIG "config"
#define CMD_LINE_OPT_RX_QUEUE_SIZE "rx-queue-size"
#define CMD_LINE_OPT_TX_QUEUE_SIZE "tx-queue-size"
#define CMD_LINE_OPT_ETH_DEST "eth-dest"
#define CMD_LINE_OPT_NO_NUMA "no-numa"
#define CMD_LINE_OPT_IPV6 "ipv6"
Expand All @@ -603,6 +643,8 @@ enum {
* conflict with short options */
CMD_LINE_OPT_MIN_NUM = 256,
CMD_LINE_OPT_CONFIG_NUM,
CMD_LINE_OPT_RX_QUEUE_SIZE_NUM,
CMD_LINE_OPT_TX_QUEUE_SIZE_NUM,
CMD_LINE_OPT_ETH_DEST_NUM,
CMD_LINE_OPT_NO_NUMA_NUM,
CMD_LINE_OPT_IPV6_NUM,
Expand All @@ -621,6 +663,8 @@ enum {

static const struct option lgopts[] = {
{CMD_LINE_OPT_CONFIG, 1, 0, CMD_LINE_OPT_CONFIG_NUM},
{CMD_LINE_OPT_RX_QUEUE_SIZE, 1, 0, CMD_LINE_OPT_RX_QUEUE_SIZE_NUM},
{CMD_LINE_OPT_TX_QUEUE_SIZE, 1, 0, CMD_LINE_OPT_TX_QUEUE_SIZE_NUM},
{CMD_LINE_OPT_ETH_DEST, 1, 0, CMD_LINE_OPT_ETH_DEST_NUM},
{CMD_LINE_OPT_NO_NUMA, 0, 0, CMD_LINE_OPT_NO_NUMA_NUM},
{CMD_LINE_OPT_IPV6, 0, 0, CMD_LINE_OPT_IPV6_NUM},
Expand Down Expand Up @@ -714,6 +758,14 @@ parse_args(int argc, char **argv)
lcore_params = 1;
break;

case CMD_LINE_OPT_RX_QUEUE_SIZE_NUM:
parse_queue_size(optarg, &nb_rxd, 1);
break;

case CMD_LINE_OPT_TX_QUEUE_SIZE_NUM:
parse_queue_size(optarg, &nb_txd, 0);
break;

case CMD_LINE_OPT_ETH_DEST_NUM:
parse_eth_dest(optarg);
break;
Expand Down

0 comments on commit ae6979c

Please sign in to comment.