From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from USCAMAIL.TILERA.COM (uscamail.tilera.com [12.218.212.166]) by dpdk.org (Postfix) with ESMTP id AF0EF156 for ; Thu, 3 Apr 2014 19:28:49 +0200 (CEST) Received: from sclab-apps-2.internal.tilera.com (10.108.0.15) by USCAEXCH2.tad.internal.tilera.com (10.103.0.33) with Microsoft SMTP Server (TLS) id 14.0.702.0; Thu, 3 Apr 2014 10:30:25 -0700 Received: (from cchemparathy@localhost) by sclab-apps-2.internal.tilera.com (8.14.4/8.14.4/Submit) id s33HUOa4029245; Thu, 3 Apr 2014 10:30:24 -0700 X-Authentication-Warning: sclab-apps-2.internal.tilera.com: cchemparathy set sender to cchemparathy@tilera.com using -f From: Cyril Chemparathy To: Date: Thu, 3 Apr 2014 10:30:14 -0700 Message-ID: <1396546216-29200-5-git-send-email-cchemparathy@tilera.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1396546216-29200-1-git-send-email-cchemparathy@tilera.com> References: <1396546216-29200-1-git-send-email-cchemparathy@tilera.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [dpdk-dev] [PATCH 4/6] test-pmd: allow txpkts to be setup via command line X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Apr 2014 17:28:50 -0000 We allow a new --txpkts command-line parameter to configure segment sizes when in txonly or flowgen forwarding modes. Signed-off-by: Cyril Chemparathy --- app/test-pmd/parameters.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 67081d7..ce90399 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -476,6 +476,52 @@ parse_ringnuma_config(const char *q_arg) return 0; } +static unsigned int +parse_item_list(char* str, unsigned int max_items, unsigned int *parsed_items) +{ + unsigned int nb_item; + unsigned int value; + unsigned int i; + int value_ok; + char c; + + /* + * First parse all items in the list and store their value. + */ + value = 0; + nb_item = 0; + value_ok = 0; + for (i = 0; i < strlen(str); i++) { + c = str[i]; + if ((c >= '0') && (c <= '9')) { + value = (unsigned int) (value * 10 + (c - '0')); + value_ok = 1; + continue; + } + if (c != ',') { + printf("character %c is not a decimal digit\n", c); + return (0); + } + if (! value_ok) { + printf("No valid value before comma\n"); + return (0); + } + if (nb_item < max_items) { + parsed_items[nb_item] = value; + value_ok = 0; + value = 0; + } + nb_item++; + } + + if (nb_item >= max_items) + rte_exit(EXIT_FAILURE, "too many txpkt segments!\n"); + + parsed_items[nb_item++] = value; + + return (nb_item); +} + void launch_args_parse(int argc, char** argv) { @@ -538,6 +584,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 }, + { "txpkts", 1, 0, 0 }, { 0, 0, 0, 0 }, }; @@ -983,6 +1030,16 @@ launch_args_parse(int argc, char** argv) "invalid RX queue statistics mapping config entered\n"); } } + if (!strcmp(lgopts[opt_idx].name, "txpkts")) { + unsigned seg_lengths[RTE_MAX_SEGS_PER_PKT]; + unsigned int nb_segs; + + nb_segs = parse_item_list(optarg, RTE_MAX_SEGS_PER_PKT, seg_lengths); + if (nb_segs > 0) + set_tx_pkt_segments(seg_lengths, nb_segs); + else + rte_exit(EXIT_FAILURE, "bad txpkts\n"); + } if (!strcmp(lgopts[opt_idx].name, "no-flush-rx")) no_flush_rx = 1; -- 1.8.3.1