New upstream version 17.08
[deb_dpdk.git] / app / test-pmd / parameters.c
index fbe6284..2f7f70f 100644 (file)
@@ -41,7 +41,6 @@
 #include <time.h>
 #include <fcntl.h>
 #include <sys/types.h>
-#include <errno.h>
 
 #include <sys/queue.h>
 #include <sys/stat.h>
@@ -89,6 +88,7 @@ usage(char* progname)
               "[--cmdline-file=FILENAME] "
 #endif
               "[--help|-h] | [--auto-start|-a] | ["
+              "--tx-first | --stats-period=PERIOD | "
               "--coremask=COREMASK --portmask=PORTMASK --numa "
               "--mbuf-size= | --total-num-mbufs= | "
               "--nb-cores= | --nb-ports= | "
@@ -109,6 +109,10 @@ usage(char* progname)
        printf("  --auto-start: start forwarding on init "
               "[always when non-interactive].\n");
        printf("  --help: display this message and quit.\n");
+       printf("  --tx-first: start forwarding sending a burst first "
+              "(only if interactive is disabled).\n");
+       printf("  --stats-period=PERIOD: statistics will be shown "
+              "every PERIOD seconds (only if interactive is disabled).\n");
        printf("  --nb-cores=N: set the number of forwarding cores "
               "(1 <= N <= %d).\n", nb_lcores);
        printf("  --nb-ports=N: set the number of forwarding ports "
@@ -207,9 +211,11 @@ usage(char* progname)
        printf("  --bitrate-stats=N: set the logical core N to perform "
                "bit-rate calculation.\n");
        printf("  --print-event <unknown|intr_lsc|queue_state|intr_reset|vf_mbox|macsec|intr_rmv|all>: "
-              "enable print of designated event or all of them.");
+              "enable print of designated event or all of them.\n");
        printf("  --mask-event <unknown|intr_lsc|queue_state|intr_reset|vf_mbox|macsec|intr_rmv|all>: "
-              "disable print of designated event or all of them.");
+              "disable print of designated event or all of them.\n");
+       printf("  --flow-isolate-all: "
+              "requests flow API isolated mode on all ports at initialization time.\n");
 }
 
 #ifdef RTE_LIBRTE_CMDLINE
@@ -566,6 +572,8 @@ launch_args_parse(int argc, char** argv)
                { "eth-peers-configfile",       1, 0, 0 },
                { "eth-peer",                   1, 0, 0 },
 #endif
+               { "tx-first",                   0, 0, 0 },
+               { "stats-period",               1, 0, 0 },
                { "ports",                      1, 0, 0 },
                { "nb-cores",                   1, 0, 0 },
                { "nb-ports",                   1, 0, 0 },
@@ -623,6 +631,7 @@ launch_args_parse(int argc, char** argv)
                { "tx-queue-stats-mapping",     1, 0, 0 },
                { "rx-queue-stats-mapping",     1, 0, 0 },
                { "no-flush-rx",        0, 0, 0 },
+               { "flow-isolate-all",           0, 0, 0 },
                { "txpkts",                     1, 0, 0 },
                { "disable-link-check",         0, 0, 0 },
                { "no-lsc-interrupt",           0, 0, 0 },
@@ -674,6 +683,23 @@ launch_args_parse(int argc, char** argv)
                                printf("Auto-start selected\n");
                                auto_start = 1;
                        }
+                       if (!strcmp(lgopts[opt_idx].name, "tx-first")) {
+                               printf("Ports to start sending a burst of "
+                                               "packets first\n");
+                               tx_first = 1;
+                       }
+                       if (!strcmp(lgopts[opt_idx].name, "stats-period")) {
+                               char *end = NULL;
+                               unsigned int n;
+
+                               n = strtoul(optarg, &end, 10);
+                               if ((optarg[0] == '\0') || (end == NULL) ||
+                                               (*end != '\0'))
+                                       break;
+
+                               stats_period = n;
+                               break;
+                       }
                        if (!strcmp(lgopts[opt_idx].name,
                                    "eth-peers-configfile")) {
                                if (init_peer_eth_addrs(optarg) != 0)
@@ -1081,6 +1107,8 @@ launch_args_parse(int argc, char** argv)
                                lsc_interrupt = 0;
                        if (!strcmp(lgopts[opt_idx].name, "no-rmv-interrupt"))
                                rmv_interrupt = 0;
+                       if (!strcmp(lgopts[opt_idx].name, "flow-isolate-all"))
+                               flow_isolate_all = 1;
                        if (!strcmp(lgopts[opt_idx].name, "print-event"))
                                if (parse_event_printing_config(optarg, 1)) {
                                        rte_exit(EXIT_FAILURE,