app/testpmd: detect numa socket count
[dpdk.git] / app / test-pmd / parameters.c
index 19fbf46..fe78723 100644 (file)
@@ -58,7 +58,6 @@
 #include <rte_memory.h>
 #include <rte_memzone.h>
 #include <rte_launch.h>
-#include <rte_tailq.h>
 #include <rte_eal.h>
 #include <rte_per_lcore.h>
 #include <rte_lcore.h>
@@ -145,10 +144,6 @@ usage(char* progname)
               "(N: none  or match (default) or always).\n");
        printf("  --pkt-filter-size=N: set Flow Director mode "
               "(N: 64K (default mode) or 128K or 256K).\n");
-       printf("  --pkt-filter-flexbytes-offset=N: set flexbytes-offset. "
-              "The offset is defined in word units counted from the "
-              "first byte of the destination Ethernet MAC address. "
-              "0 <= N <= 32.\n");
        printf("  --pkt-filter-drop-queue=N: set drop-queue. "
               "In perfect mode, when you add a rule with queue = -1 "
               "the packet will be enqueued into the rx drop-queue. "
@@ -157,6 +152,9 @@ usage(char* progname)
        printf("  --crc-strip: enable CRC stripping by hardware.\n");
        printf("  --enable-rx-cksum: enable rx hardware checksum 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");
+       printf("  --disable-hw-vlan-extend: disable hardware vlan extend.\n");
        printf("  --enable-drop-en: enable per queue packet drop.\n");
        printf("  --disable-rss: disable rss.\n");
        printf("  --port-topology=N: set port topology (N: paired (default) or "
@@ -370,6 +368,7 @@ 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) {
@@ -391,14 +390,17 @@ parse_portnuma_config(const char *q_arg)
                                return -1;
                }
                port_id = (uint8_t)int_fld[FLD_PORT];
-               if (port_id >= nb_ports) {
-                       printf("Invalid port, range is [0, %d]\n", nb_ports - 1);
+               if (port_id_is_invalid(port_id, ENABLED_WARN)) {
+                       printf("Valid port range is [0");
+                       FOREACH_PORT(pid, ports)
+                               printf(", %d", pid);
+                       printf("]\n");
                        return -1;
                }
                socket_id = (uint8_t)int_fld[FLD_SOCKET];
-               if(socket_id >= MAX_SOCKET) {
+               if(socket_id >= max_socket) {
                        printf("Invalid socket id, range is [0, %d]\n",
-                                MAX_SOCKET - 1);
+                                max_socket - 1);
                        return -1;
                }
                port_numa[port_id] = socket_id;
@@ -423,6 +425,7 @@ 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
@@ -447,14 +450,17 @@ parse_ringnuma_config(const char *q_arg)
                                return -1;
                }
                port_id = (uint8_t)int_fld[FLD_PORT];
-               if (port_id >= nb_ports) {
-                       printf("Invalid port, range is [0, %d]\n", nb_ports - 1);
+               if (port_id_is_invalid(port_id, ENABLED_WARN)) {
+                       printf("Valid port range is [0");
+                       FOREACH_PORT(pid, ports)
+                               printf(", %d", pid);
+                       printf("]\n");
                        return -1;
                }
                socket_id = (uint8_t)int_fld[FLD_SOCKET];
-               if (socket_id >= MAX_SOCKET) {
+               if (socket_id >= max_socket) {
                        printf("Invalid socket id, range is [0, %d]\n",
-                               MAX_SOCKET - 1);
+                               max_socket - 1);
                        return -1;
                }
                ring_flag = (uint8_t)int_fld[FLD_FLAG];
@@ -517,11 +523,13 @@ launch_args_parse(int argc, char** argv)
                { "pkt-filter-mode",            1, 0, 0 },
                { "pkt-filter-report-hash",     1, 0, 0 },
                { "pkt-filter-size",            1, 0, 0 },
-               { "pkt-filter-flexbytes-offset",1, 0, 0 },
                { "pkt-filter-drop-queue",      1, 0, 0 },
                { "crc-strip",                  0, 0, 0 },
                { "enable-rx-cksum",            0, 0, 0 },
                { "disable-hw-vlan",            0, 0, 0 },
+               { "disable-hw-vlan-filter",     0, 0, 0 },
+               { "disable-hw-vlan-strip",      0, 0, 0 },
+               { "disable-hw-vlan-extend",     0, 0, 0 },
                { "enable-drop-en",            0, 0, 0 },
                { "disable-rss",                0, 0, 0 },
                { "port-topology",              1, 0, 0 },
@@ -624,8 +632,7 @@ launch_args_parse(int argc, char** argv)
                                        nb_fwd_ports = (uint8_t) n;
                                else
                                        rte_exit(EXIT_FAILURE,
-                                                "nb-ports should be > 0 and <= %d\n",
-                                                nb_ports);
+                                                "Invalid port %d\n", n);
                        }
                        if (!strcmp(lgopts[opt_idx].name, "nb-cores")) {
                                n = atoi(optarg);
@@ -660,12 +667,12 @@ launch_args_parse(int argc, char** argv)
                                           "invalid ring-numa configuration\n");
                        if (!strcmp(lgopts[opt_idx].name, "socket-num")) {
                                n = atoi(optarg);
-                               if(n < MAX_SOCKET)
+                               if((uint8_t)n < max_socket)
                                        socket_num = (uint8_t)n;
                                else
                                        rte_exit(EXIT_FAILURE,
                                                "The socket number should be < %d\n",
-                                               MAX_SOCKET);
+                                               max_socket);
                        }
                        if (!strcmp(lgopts[opt_idx].name, "mbuf-size")) {
                                n = atoi(optarg);
@@ -740,17 +747,6 @@ launch_args_parse(int argc, char** argv)
                                                 " must be: 64K or 128K or 256K\n",
                                                 optarg);
                        }
-                       if (!strcmp(lgopts[opt_idx].name,
-                                   "pkt-filter-flexbytes-offset")) {
-                               n = atoi(optarg);
-                               if ( n >= 0 && n <= (int) 32)
-                                       fdir_conf.flexbytes_offset =
-                                               (uint8_t) n;
-                               else
-                                       rte_exit(EXIT_FAILURE,
-                                                "flexbytes %d invalid - must"
-                                                "be  >= 0 && <= 32\n", n);
-                       }
                        if (!strcmp(lgopts[opt_idx].name,
                                    "pkt-filter-drop-queue")) {
                                n = atoi(optarg);
@@ -772,6 +768,18 @@ launch_args_parse(int argc, char** argv)
                                rx_mode.hw_vlan_extend = 0;
                        }
 
+                       if (!strcmp(lgopts[opt_idx].name,
+                                       "disable-hw-vlan-filter"))
+                               rx_mode.hw_vlan_filter = 0;
+
+                       if (!strcmp(lgopts[opt_idx].name,
+                                       "disable-hw-vlan-strip"))
+                               rx_mode.hw_vlan_strip  = 0;
+
+                       if (!strcmp(lgopts[opt_idx].name,
+                                       "disable-hw-vlan-extend"))
+                               rx_mode.hw_vlan_extend = 0;
+
                        if (!strcmp(lgopts[opt_idx].name, "enable-drop-en"))
                                rx_drop_en = 1;