From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 8110F9ACA for ; Wed, 2 Mar 2016 13:16:14 +0100 (CET) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga101.jf.intel.com with ESMTP; 02 Mar 2016 04:16:13 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,528,1449561600"; d="scan'208";a="927886225" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga002.fm.intel.com with ESMTP; 02 Mar 2016 04:16:13 -0800 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id u22CGCUA009506; Wed, 2 Mar 2016 12:16:12 GMT Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id u22CGCEI002098; Wed, 2 Mar 2016 12:16:12 GMT Received: (from reshmapa@localhost) by sivswdev02.ir.intel.com with id u22CGCIS002094; Wed, 2 Mar 2016 12:16:12 GMT From: Reshma Pattan To: dev@dpdk.org Date: Wed, 2 Mar 2016 12:16:06 +0000 Message-Id: <1456920970-2047-2-git-send-email-reshma.pattan@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1456920970-2047-1-git-send-email-reshma.pattan@intel.com> References: <1455289045-25915-1-git-send-email-reshma.pattan@intel.com> <1456920970-2047-1-git-send-email-reshma.pattan@intel.com> Subject: [dpdk-dev] [PATCH v3 1/5] app/test-pmd: fix nb_rxq and nb_txq checks 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: Wed, 02 Mar 2016 12:16:15 -0000 Made testpmd changes to validate nb_rxq/nb_txq zero value changes of librte_ether. Signed-off-by: Reshma Pattan --- app/test-pmd/cmdline.c | 11 +++++------ app/test-pmd/parameters.c | 14 +++++++++----- app/test-pmd/testpmd.c | 28 +++++++++++++++++++++++++--- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 52e9f5f..f8e71a3 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright(c) 2010-2015 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2016 Intel Corporation. All rights reserved. * Copyright(c) 2014 6WIND S.A. * All rights reserved. * @@ -1163,17 +1163,16 @@ cmd_config_rx_tx_parsed(void *parsed_result, printf("Please stop all ports first\n"); return; } - if (!strcmp(res->name, "rxq")) { - if (res->value <= 0) { - printf("rxq %d invalid - must be > 0\n", res->value); + if (!res->value && !nb_txq) { + printf("Warning: Either rx or tx queues should be non zero\n"); return; } nb_rxq = res->value; } else if (!strcmp(res->name, "txq")) { - if (res->value <= 0) { - printf("txq %d invalid - must be > 0\n", res->value); + if (!res->value && !nb_rxq) { + printf("Warning: Either rx or tx queues should be non zero\n"); return; } nb_txq = res->value; diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 4b421c8..55572eb 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 @@ -810,22 +810,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)) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 1319917..a523442 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright(c) 2010-2015 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 @@ -608,6 +608,7 @@ init_fwd_streams(void) portid_t pid; struct rte_port *port; streamid_t sm_id, nb_fwd_streams_new; + queueid_t q; /* set socket id according to numa or not */ FOREACH_PORT(pid, ports) { @@ -643,7 +644,12 @@ init_fwd_streams(void) } } - nb_fwd_streams_new = (streamid_t)(nb_ports * nb_rxq); + q = RTE_MAX(nb_rxq, nb_txq); + if (q == 0) { + printf("Fail:Cannot allocate fwd streams as number of queues is 0\n"); + return -1; + } + nb_fwd_streams_new = (streamid_t)(nb_ports * q); if (nb_fwd_streams_new == nb_fwd_streams) return 0; /* clear the old */ @@ -955,6 +961,19 @@ start_packet_forwarding(int with_tx_first) portid_t pt_id; streamid_t sm_id; + if (strcmp(cur_fwd_eng->fwd_mode_name, "rxonly") == 0 && !nb_rxq) + rte_exit(EXIT_FAILURE, "rxq are 0, cannot use rxonly fwd mode\n"); + + if (strcmp(cur_fwd_eng->fwd_mode_name, "txonly") == 0 && !nb_txq) + rte_exit(EXIT_FAILURE, "txq are 0, cannot use txonly fwd mode\n"); + + if ((strcmp(cur_fwd_eng->fwd_mode_name, "rxonly") != 0 && + strcmp(cur_fwd_eng->fwd_mode_name, "txonly") != 0) && + (!nb_rxq || !nb_txq)) + rte_exit(EXIT_FAILURE, + "Either rxq or txq are 0, cannot use %s fwd mode\n", + cur_fwd_eng->fwd_mode_name); + if (all_ports_started() == 0) { printf("Not all ports were started\n"); return; @@ -2037,7 +2056,10 @@ main(int argc, char** argv) if (argc > 1) launch_args_parse(argc, argv); - if (nb_rxq > nb_txq) + if (!nb_rxq && !nb_txq) + printf("Warning: Either rx or tx queues should be non-zero\n"); + + if (nb_rxq > 1 && nb_rxq > nb_txq) printf("Warning: nb_rxq=%d enables RSS configuration, " "but nb_txq=%d will prevent to fully test it.\n", nb_rxq, nb_txq); -- 1.7.4.1