X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Fparameters.c;h=08e5a76f981f8ded87087d05ebb720e53d4b883c;hb=425781ff5afe08b77c58ec5e4d5cf56b9ac19e02;hp=f1daa6eca322a1889e0748b12badbdf8839f364d;hpb=0a530f0d58b0304d3f7515bb14f81fd2b6e6931e;p=dpdk.git diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index f1daa6eca3..08e5a76f98 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2016 Intel Corporation. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -63,7 +63,6 @@ #include #include #include -#include #include #include #include @@ -150,6 +149,7 @@ usage(char* progname) "If the drop-queue doesn't exist, the packet is dropped. " "By default drop-queue=127.\n"); printf(" --crc-strip: enable CRC stripping by hardware.\n"); + printf(" --enable-lro: enable large receive offload.\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"); @@ -191,7 +191,8 @@ usage(char* progname) "(0 <= mapping <= %d).\n", RTE_ETHDEV_QUEUE_STAT_CNTRS - 1); printf(" --no-flush-rx: Don't flush RX streams before forwarding." " Used mainly with PCAP drivers.\n"); - printf(" --txpkts=X[,Y]*: set TX segment sizes.\n"); + printf(" --txpkts=X[,Y]*: set TX segment sizes" + " or total packet length.\n"); printf(" --disable-link-check: disable check on link status when " "starting/stopping ports.\n"); } @@ -398,9 +399,9 @@ parse_portnuma_config(const char *q_arg) 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; @@ -458,9 +459,9 @@ parse_ringnuma_config(const char *q_arg) 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]; @@ -525,7 +526,9 @@ launch_args_parse(int argc, char** argv) { "pkt-filter-size", 1, 0, 0 }, { "pkt-filter-drop-queue", 1, 0, 0 }, { "crc-strip", 0, 0, 0 }, + { "enable-lro", 0, 0, 0 }, { "enable-rx-cksum", 0, 0, 0 }, + { "enable-scatter", 0, 0, 0 }, { "disable-hw-vlan", 0, 0, 0 }, { "disable-hw-vlan-filter", 0, 0, 0 }, { "disable-hw-vlan-strip", 0, 0, 0 }, @@ -667,12 +670,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); @@ -707,12 +710,17 @@ launch_args_parse(int argc, char** argv) RTE_FDIR_MODE_SIGNATURE; else if (!strcmp(optarg, "perfect")) fdir_conf.mode = RTE_FDIR_MODE_PERFECT; + else if (!strcmp(optarg, "perfect-mac-vlan")) + fdir_conf.mode = RTE_FDIR_MODE_PERFECT_MAC_VLAN; + else if (!strcmp(optarg, "perfect-tunnel")) + fdir_conf.mode = RTE_FDIR_MODE_PERFECT_TUNNEL; else if (!strcmp(optarg, "none")) fdir_conf.mode = RTE_FDIR_MODE_NONE; else rte_exit(EXIT_FAILURE, "pkt-mode-invalid %s invalid - must be: " - "none, signature or perfect\n", + "none, signature, perfect, perfect-mac-vlan" + " or perfect-tunnel\n", optarg); } if (!strcmp(lgopts[opt_idx].name, @@ -759,6 +767,10 @@ launch_args_parse(int argc, char** argv) } if (!strcmp(lgopts[opt_idx].name, "crc-strip")) rx_mode.hw_strip_crc = 1; + if (!strcmp(lgopts[opt_idx].name, "enable-lro")) + rx_mode.enable_lro = 1; + if (!strcmp(lgopts[opt_idx].name, "enable-scatter")) + rx_mode.enable_scatter = 1; if (!strcmp(lgopts[opt_idx].name, "enable-rx-cksum")) rx_mode.hw_ip_checksum = 1; @@ -805,22 +817,26 @@ launch_args_parse(int argc, char** argv) rss_hf = ETH_RSS_UDP; if (!strcmp(lgopts[opt_idx].name, "rxq")) { n = atoi(optarg); - if (n >= 1 && n <= (int) MAX_QUEUE_ID) + if (n >= 0 && n <= (int) MAX_QUEUE_ID) nb_rxq = (queueid_t) n; else rte_exit(EXIT_FAILURE, "rxq %d invalid - must be" - " >= 1 && <= %d\n", n, + " >= 0 && <= %d\n", n, (int) MAX_QUEUE_ID); } if (!strcmp(lgopts[opt_idx].name, "txq")) { n = atoi(optarg); - if (n >= 1 && n <= (int) MAX_QUEUE_ID) + if (n >= 0 && n <= (int) MAX_QUEUE_ID) nb_txq = (queueid_t) n; else rte_exit(EXIT_FAILURE, "txq %d invalid - must be" - " >= 1 && <= %d\n", n, + " >= 0 && <= %d\n", n, (int) MAX_QUEUE_ID); } + if (!nb_rxq && !nb_txq) { + rte_exit(EXIT_FAILURE, "Either rx or tx queues should " + "be non-zero\n"); + } if (!strcmp(lgopts[opt_idx].name, "burst")) { n = atoi(optarg); if ((n >= 1) && (n <= MAX_PKT_BURST))