New upstream version 17.11.4
[deb_dpdk.git] / app / test-pmd / parameters.c
index 2f7f70f..5d51808 100644 (file)
@@ -55,7 +55,6 @@
 #include <rte_debug.h>
 #include <rte_cycles.h>
 #include <rte_memory.h>
-#include <rte_memzone.h>
 #include <rte_launch.h>
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
@@ -162,6 +161,7 @@ usage(char* progname)
        printf("  --disable-crc-strip: disable CRC stripping by hardware.\n");
        printf("  --enable-lro: enable large receive offload.\n");
        printf("  --enable-rx-cksum: enable rx hardware checksum offload.\n");
+       printf("  --enable-rx-timestamp: enable rx hardware timestamp offload.\n");
        printf("  --disable-hw-vlan: disable hardware vlan.\n");
        printf("  --disable-hw-vlan-filter: disable hardware vlan filter.\n");
        printf("  --disable-hw-vlan-strip: disable hardware vlan strip.\n");
@@ -393,7 +393,8 @@ parse_portnuma_config(const char *q_arg)
        char s[256];
        const char *p, *p0 = q_arg;
        char *end;
-       uint8_t i,port_id,socket_id;
+       uint8_t i, socket_id;
+       portid_t port_id;
        unsigned size;
        enum fieldnames {
                FLD_PORT = 0,
@@ -402,7 +403,6 @@ parse_portnuma_config(const char *q_arg)
        };
        unsigned long int_fld[_NUM_FLD];
        char *str_fld[_NUM_FLD];
-       portid_t pid;
 
        /* reset from value set at definition */
        while ((p = strchr(p0,'(')) != NULL) {
@@ -423,12 +423,10 @@ parse_portnuma_config(const char *q_arg)
                        if (errno != 0 || end == str_fld[i] || int_fld[i] > 255)
                                return -1;
                }
-               port_id = (uint8_t)int_fld[FLD_PORT];
-               if (port_id_is_invalid(port_id, ENABLED_WARN)) {
-                       printf("Valid port range is [0");
-                       RTE_ETH_FOREACH_DEV(pid)
-                               printf(", %d", pid);
-                       printf("]\n");
+               port_id = (portid_t)int_fld[FLD_PORT];
+               if (port_id_is_invalid(port_id, ENABLED_WARN) ||
+                       port_id == (portid_t)RTE_PORT_ALL) {
+                       print_valid_ports();
                        return -1;
                }
                socket_id = (uint8_t)int_fld[FLD_SOCKET];
@@ -448,7 +446,8 @@ parse_ringnuma_config(const char *q_arg)
        char s[256];
        const char *p, *p0 = q_arg;
        char *end;
-       uint8_t i,port_id,ring_flag,socket_id;
+       uint8_t i, ring_flag, socket_id;
+       portid_t port_id;
        unsigned size;
        enum fieldnames {
                FLD_PORT = 0,
@@ -458,7 +457,6 @@ parse_ringnuma_config(const char *q_arg)
        };
        unsigned long int_fld[_NUM_FLD];
        char *str_fld[_NUM_FLD];
-       portid_t pid;
        #define RX_RING_ONLY 0x1
        #define TX_RING_ONLY 0x2
        #define RXTX_RING    0x3
@@ -482,12 +480,10 @@ parse_ringnuma_config(const char *q_arg)
                        if (errno != 0 || end == str_fld[i] || int_fld[i] > 255)
                                return -1;
                }
-               port_id = (uint8_t)int_fld[FLD_PORT];
-               if (port_id_is_invalid(port_id, ENABLED_WARN)) {
-                       printf("Valid port range is [0");
-                       RTE_ETH_FOREACH_DEV(pid)
-                               printf(", %d", pid);
-                       printf("]\n");
+               port_id = (portid_t)int_fld[FLD_PORT];
+               if (port_id_is_invalid(port_id, ENABLED_WARN) ||
+                       port_id == (portid_t)RTE_PORT_ALL) {
+                       print_valid_ports();
                        return -1;
                }
                socket_id = (uint8_t)int_fld[FLD_SOCKET];
@@ -561,6 +557,7 @@ launch_args_parse(int argc, char** argv)
        int n, opt;
        char **argvopt;
        int opt_idx;
+       portid_t pid;
        enum { TX, RX };
 
        static struct option lgopts[] = {
@@ -601,6 +598,7 @@ launch_args_parse(int argc, char** argv)
                { "disable-crc-strip",          0, 0, 0 },
                { "enable-lro",                 0, 0, 0 },
                { "enable-rx-cksum",            0, 0, 0 },
+               { "enable-rx-timestamp",        0, 0, 0 },
                { "enable-scatter",             0, 0, 0 },
                { "disable-hw-vlan",            0, 0, 0 },
                { "disable-hw-vlan-filter",     0, 0, 0 },
@@ -734,7 +732,7 @@ launch_args_parse(int argc, char** argv)
                        if (!strcmp(lgopts[opt_idx].name, "nb-ports")) {
                                n = atoi(optarg);
                                if (n > 0 && n <= nb_ports)
-                                       nb_fwd_ports = (uint8_t) n;
+                                       nb_fwd_ports = n;
                                else
                                        rte_exit(EXIT_FAILURE,
                                                 "Invalid port %d\n", n);
@@ -899,6 +897,9 @@ launch_args_parse(int argc, char** argv)
                                rx_mode.enable_scatter = 1;
                        if (!strcmp(lgopts[opt_idx].name, "enable-rx-cksum"))
                                rx_mode.hw_ip_checksum = 1;
+                       if (!strcmp(lgopts[opt_idx].name,
+                                       "enable-rx-timestamp"))
+                               rx_mode.hw_timestamp = 1;
 
                        if (!strcmp(lgopts[opt_idx].name, "disable-hw-vlan")) {
                                rx_mode.hw_vlan_filter = 0;
@@ -932,7 +933,7 @@ launch_args_parse(int argc, char** argv)
                                        port_topology = PORT_TOPOLOGY_LOOP;
                                else
                                        rte_exit(EXIT_FAILURE, "port-topology %s invalid -"
-                                                " must be: paired or chained \n",
+                                                " must be: paired, chained or loop\n",
                                                 optarg);
                        }
                        if (!strcmp(lgopts[opt_idx].name, "forward-mode"))
@@ -943,21 +944,21 @@ launch_args_parse(int argc, char** argv)
                                rss_hf = ETH_RSS_UDP;
                        if (!strcmp(lgopts[opt_idx].name, "rxq")) {
                                n = atoi(optarg);
-                               if (n >= 0 && n <= (int) MAX_QUEUE_ID)
+                               if (n >= 0 && check_nb_rxq((queueid_t)n) == 0)
                                        nb_rxq = (queueid_t) n;
                                else
                                        rte_exit(EXIT_FAILURE, "rxq %d invalid - must be"
-                                                 " >= 0 && <= %d\n", n,
-                                                 (int) MAX_QUEUE_ID);
+                                                 " >= 0 && <= %u\n", n,
+                                                 get_allowed_max_nb_rxq(&pid));
                        }
                        if (!strcmp(lgopts[opt_idx].name, "txq")) {
                                n = atoi(optarg);
-                               if (n >= 0 && n <= (int) MAX_QUEUE_ID)
+                               if (n >= 0 && check_nb_txq((queueid_t)n) == 0)
                                        nb_txq = (queueid_t) n;
                                else
                                        rte_exit(EXIT_FAILURE, "txq %d invalid - must be"
-                                                 " >= 0 && <= %d\n", n,
-                                                 (int) MAX_QUEUE_ID);
+                                                 " >= 0 && <= %u\n", n,
+                                                 get_allowed_max_nb_txq(&pid));
                        }
                        if (!nb_rxq && !nb_txq) {
                                rte_exit(EXIT_FAILURE, "Either rx or tx queues should "