From: Ivan Boule <ivan.boule-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
To: Thomas Monjalon
<thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>,
dev-VfR2kkLFssw@public.gmane.org
Subject: Re: [PATCH v3] app/testpmd: list forwarding engines
Date: Fri, 16 May 2014 09:21:29 +0200 [thread overview]
Message-ID: <5375BC79.1090309@6wind.com> (raw)
In-Reply-To: <1400170121-2737-1-git-send-email-thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
On 05/15/2014 06:08 PM, Thomas Monjalon wrote:
> Having a function to list forwarding engines helps to show them
> in cli help and in parameters usage witout duplicating code.
>
> Signed-off-by: Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
> ---
> app/test-pmd/cmdline.c | 52 +++++++++++++++++++++++++++--------------------
> app/test-pmd/config.c | 19 +++++++++++++++++
> app/test-pmd/parameters.c | 3 ++-
> app/test-pmd/testpmd.h | 1 +
> 4 files changed, 52 insertions(+), 23 deletions(-)
>
> changes in v2:
> - factorize also contextual help
> changes in v3:
> - remove useless loop
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index 7becedc..c6a417a 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -294,17 +294,9 @@ static void cmd_help_long_parsed(void *parsed_result,
> " bit 3 - insert sctp checksum offload if set\n"
> " Please check the NIC datasheet for HW limits.\n\n"
>
> -#ifdef RTE_LIBRTE_IEEE1588
> - "set fwd (io|mac|mac_retry|rxonly|txonly|csum|ieee1588)\n"
> - " Set IO, MAC, MAC_RETRY, RXONLY, CSUM or TXONLY or ieee1588"
> - " packet forwarding mode.\n\n"
> + "set fwd (%s)\n"
> + " Set packet forwarding mode.\n\n"
>
> -#else
> - "set fwd (io|mac|mac_retry|rxonly|txonly|csum)\n"
> - " Set IO, MAC, MAC_RETRY, RXONLY, CSUM or TXONLY packet"
> - " forwarding mode.\n\n"
> -
> -#endif
> "mac_addr add (port_id) (XX:XX:XX:XX:XX:XX)\n"
> " Add a MAC address on port_id.\n\n"
>
> @@ -398,6 +390,7 @@ static void cmd_help_long_parsed(void *parsed_result,
> " using the lowest port on the NIC.\n\n"
> #endif
>
> + , list_pkt_forwarding_modes()
> );
> }
>
> @@ -2688,22 +2681,12 @@ cmdline_parse_token_string_t cmd_setfwd_fwd =
> TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_mode_result, fwd, "fwd");
> cmdline_parse_token_string_t cmd_setfwd_mode =
> TOKEN_STRING_INITIALIZER(struct cmd_set_fwd_mode_result, mode,
> -#ifdef RTE_LIBRTE_IEEE1588
> - "io#mac#mac_retry#rxonly#txonly#csum#ieee1588");
> -#else
> - "io#mac#mac_retry#rxonly#txonly#csum");
> -#endif
> + "" /* defined at init */);
>
> cmdline_parse_inst_t cmd_set_fwd_mode = {
> .f = cmd_set_fwd_mode_parsed,
> .data = NULL,
> -#ifdef RTE_LIBRTE_IEEE1588
> - .help_str = "set fwd io|mac|mac_retry|rxonly|txonly|csum|ieee1588 - set IO, MAC,"
> - " MAC_RETRY, RXONLY, TXONLY, CSUM or IEEE1588 packet forwarding mode",
> -#else
> - .help_str = "set fwd io|mac|mac_retry|rxonly|txonly|csum - set IO, MAC,"
> - " MAC_RETRY, RXONLY, CSUM or TXONLY packet forwarding mode",
> -#endif
> + .help_str = NULL, /* defined at init */
> .tokens = {
> (void *)&cmd_setfwd_set,
> (void *)&cmd_setfwd_fwd,
> @@ -2712,6 +2695,28 @@ cmdline_parse_inst_t cmd_set_fwd_mode = {
> },
> };
>
> +static void cmd_set_fwd_mode_init(void)
> +{
> + char *modes, *c;
> + static char token[128];
> + static char help[256];
> + cmdline_parse_token_string_t *token_struct;
> +
> + modes = list_pkt_forwarding_modes();
> + rte_snprintf(help, sizeof help, "set fwd %s - "
> + "set packet forwarding mode", modes);
> + cmd_set_fwd_mode.help_str = help;
> +
> + /* string token separator is # */
> + for (c = token; *modes != '\0'; modes++)
> + if (*modes == '|')
> + *c++ = '#';
> + else
> + *c++ = *modes;
> + token_struct = (cmdline_parse_token_string_t*)cmd_set_fwd_mode.tokens[2];
> + token_struct->string_data.str = token;
> +}
> +
> /* *** SET BURST TX DELAY TIME RETRY NUMBER *** */
> struct cmd_set_burst_tx_retry_result {
> cmdline_fixed_string_t set;
> @@ -5198,6 +5203,9 @@ prompt(void)
> {
> struct cmdline *cl;
>
> + /* initialize non-constant commands */
> + cmd_set_fwd_mode_init();
> +
> cl = cmdline_stdin_new(main_ctx, "testpmd> ");
> if (cl == NULL) {
> return;
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
> index d0e21b7..41326fe 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -1231,6 +1231,25 @@ set_tx_pkt_segments(unsigned *seg_lengths, unsigned nb_segs)
> tx_pkt_nb_segs = (uint8_t) nb_segs;
> }
>
> +char*
> +list_pkt_forwarding_modes(void)
> +{
> + static char fwd_modes[128] = "";
> + const char *separator = "|";
> + struct fwd_engine *fwd_eng;
> + unsigned i = 0;
> +
> + if (strlen (fwd_modes) == 0) {
> + while ((fwd_eng = fwd_engines[i++]) != NULL) {
> + strcat(fwd_modes, fwd_eng->fwd_mode_name);
> + strcat(fwd_modes, separator);
> + }
> + fwd_modes[strlen(fwd_modes) - strlen(separator)] = '\0';
> + }
> +
> + return fwd_modes;
> +}
> +
> void
> set_pkt_forwarding_mode(const char *fwd_mode_name)
> {
> diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> index 67081d7..8a3ce2c 100644
> --- a/app/test-pmd/parameters.c
> +++ b/app/test-pmd/parameters.c
> @@ -158,7 +158,8 @@ usage(char* progname)
> printf(" --disable-rss: disable rss.\n");
> printf(" --port-topology=N: set port topology (N: paired (default) or "
> "chained).\n");
> - printf(" --forward-mode=N: set forwarding mode.\n");
> + printf(" --forward-mode=N: set forwarding mode (N: %s).\n",
> + list_pkt_forwarding_modes());
> printf(" --rss-ip: set RSS functions to IPv4/IPv6 only .\n");
> printf(" --rss-udp: set RSS functions to IPv4/IPv6 + UDP.\n");
> printf(" --rxq=N: set the number of RX queues per port to N.\n");
> diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
> index 52d3543..0e4a35e 100644
> --- a/app/test-pmd/testpmd.h
> +++ b/app/test-pmd/testpmd.h
> @@ -491,6 +491,7 @@ void tx_cksum_set(portid_t port_id, uint8_t cksum_mask);
> void set_verbose_level(uint16_t vb_level);
> void set_tx_pkt_segments(unsigned *seg_lengths, unsigned nb_segs);
> void set_nb_pkt_per_burst(uint16_t pkt_burst);
> +char *list_pkt_forwarding_modes(void);
> void set_pkt_forwarding_mode(const char *fwd_mode);
> void start_packet_forwarding(int with_tx_first);
> void stop_packet_forwarding(void);
Acked by: Ivan Boule<ivan.boule-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
--
Ivan Boule
6WIND Development Engineer
next prev parent reply other threads:[~2014-05-16 7:21 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-03 17:30 [PATCH 0/6] Extensions to test-pmd Cyril Chemparathy
[not found] ` <1396546216-29200-1-git-send-email-cchemparathy-kv+TWInifGbQT0dZR+AlfA@public.gmane.org>
2014-04-03 17:30 ` [PATCH 1/6] test-pmd: add support for single port loopback topology Cyril Chemparathy
2014-04-03 17:30 ` [PATCH 2/6] test-pmd: add support for auto-start when interactive Cyril Chemparathy
2014-04-03 17:30 ` [PATCH 3/6] test-pmd: allow command line selection of forwarding mode Cyril Chemparathy
[not found] ` <1396546216-29200-4-git-send-email-cchemparathy-kv+TWInifGbQT0dZR+AlfA@public.gmane.org>
2014-04-04 8:21 ` Richardson, Bruce
[not found] ` <59AF69C657FD0841A61C55336867B5B01A9F8609-kPTMFJFq+rELt2AQoY/u9bfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2014-05-14 17:05 ` [PATCH] app/testpmd: list forwarding modes Thomas Monjalon
[not found] ` <1400087113-5270-1-git-send-email-thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-05-15 9:35 ` [PATCH v2] " Thomas Monjalon
[not found] ` <1400146513-14283-1-git-send-email-thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-05-15 16:08 ` [PATCH v3] app/testpmd: list forwarding engines Thomas Monjalon
[not found] ` <1400170121-2737-1-git-send-email-thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-05-16 7:21 ` Ivan Boule [this message]
[not found] ` <5375BC79.1090309-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2014-05-16 14:24 ` Thomas Monjalon
2014-04-03 17:30 ` [PATCH 4/6] test-pmd: allow txpkts to be setup via command line Cyril Chemparathy
2014-04-03 17:30 ` [PATCH 5/6] test-pmd: add mac swap forwarding mode Cyril Chemparathy
2014-04-03 17:30 ` [PATCH 6/6] test-pmd: add flowgen forwarding engine Cyril Chemparathy
2014-05-16 14:22 ` [PATCH 0/6] Extensions to test-pmd Thomas Monjalon
2014-05-16 16:55 ` Cyril Chemparathy
[not found] ` <5376430A.8010707-kv+TWInifGbQT0dZR+AlfA@public.gmane.org>
2014-05-19 9:31 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5375BC79.1090309@6wind.com \
--to=ivan.boule-pdr9zngts4eavxtiumwx3w@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.