app/testpmd: add tx_first burst number option
authorZhihong Wang <zhihong.wang@intel.com>
Tue, 14 Jun 2016 23:08:03 +0000 (19:08 -0400)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 16 Jun 2016 14:25:25 +0000 (16:25 +0200)
This patch enables configurable tx_first burst number.

Use "start tx_first (burst_num)" to specify how many bursts of packets to
be sent before forwarding start, or "start tx_first" like before for the
default 1 burst send.

Signed-off-by: Zhihong Wang <zhihong.wang@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
app/test-pmd/cmdline.c
app/test-pmd/testpmd.c
doc/guides/testpmd_app_ug/testpmd_funcs.rst

index 8a41ece..030beec 100644 (file)
@@ -5397,6 +5397,46 @@ cmdline_parse_inst_t cmd_start_tx_first = {
        },
 };
 
+/* *** START FORWARDING WITH N TX BURST FIRST *** */
+struct cmd_start_tx_first_n_result {
+       cmdline_fixed_string_t start;
+       cmdline_fixed_string_t tx_first;
+       uint32_t tx_num;
+};
+
+static void
+cmd_start_tx_first_n_parsed(void *parsed_result,
+                         __attribute__((unused)) struct cmdline *cl,
+                         __attribute__((unused)) void *data)
+{
+       struct cmd_start_tx_first_n_result *res = parsed_result;
+
+       start_packet_forwarding(res->tx_num);
+}
+
+cmdline_parse_token_string_t cmd_start_tx_first_n_start =
+       TOKEN_STRING_INITIALIZER(struct cmd_start_tx_first_n_result,
+                       start, "start");
+cmdline_parse_token_string_t cmd_start_tx_first_n_tx_first =
+       TOKEN_STRING_INITIALIZER(struct cmd_start_tx_first_n_result,
+                       tx_first, "tx_first");
+cmdline_parse_token_num_t cmd_start_tx_first_n_tx_num =
+       TOKEN_NUM_INITIALIZER(struct cmd_start_tx_first_n_result,
+                       tx_num, UINT32);
+
+cmdline_parse_inst_t cmd_start_tx_first_n = {
+       .f = cmd_start_tx_first_n_parsed,
+       .data = NULL,
+       .help_str = "start packet forwarding, after sending <num> "
+               "bursts of packets",
+       .tokens = {
+               (void *)&cmd_start_tx_first_n_start,
+               (void *)&cmd_start_tx_first_n_tx_first,
+               (void *)&cmd_start_tx_first_n_tx_num,
+               NULL,
+       },
+};
+
 /* *** SET LINK UP *** */
 struct cmd_set_link_up_result {
        cmdline_fixed_string_t set;
@@ -10553,6 +10593,7 @@ cmdline_parse_ctx_t main_ctx[] = {
        (cmdline_parse_inst_t *)&cmd_showcfg,
        (cmdline_parse_inst_t *)&cmd_start,
        (cmdline_parse_inst_t *)&cmd_start_tx_first,
+       (cmdline_parse_inst_t *)&cmd_start_tx_first_n,
        (cmdline_parse_inst_t *)&cmd_set_link_up,
        (cmdline_parse_inst_t *)&cmd_set_link_down,
        (cmdline_parse_inst_t *)&cmd_reset,
index 8945854..901e664 100644 (file)
@@ -1057,8 +1057,11 @@ start_packet_forwarding(int with_tx_first)
                        for (i = 0; i < cur_fwd_config.nb_fwd_ports; i++)
                                (*port_fwd_begin)(fwd_ports_ids[i]);
                }
-               launch_packet_forwarding(run_one_txonly_burst_on_core);
-               rte_eal_mp_wait_lcore();
+               while (with_tx_first--) {
+                       launch_packet_forwarding(
+                                       run_one_txonly_burst_on_core);
+                       rte_eal_mp_wait_lcore();
+               }
                port_fwd_end = tx_only_engine.port_fwd_end;
                if (port_fwd_end != NULL) {
                        for (i = 0; i < cur_fwd_config.nb_fwd_ports; i++)
index d812989..4e19229 100644 (file)
@@ -98,9 +98,11 @@ Start packet forwarding with current configuration::
 start tx_first
 ~~~~~~~~~~~~~~
 
-Start packet forwarding with current configuration after sending one burst of packets::
+Start packet forwarding with current configuration after sending specified number of bursts of packets::
 
-   testpmd> start tx_first
+   testpmd> start tx_first (""|burst_num)
+
+The default burst number is 1 when ``burst_num`` not presented.
 
 stop
 ~~~~