From patchwork Thu Feb 4 08:27:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Wang X-Patchwork-Id: 10367 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id B00D395DE; Thu, 4 Feb 2016 09:27:49 +0100 (CET) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 7E71A95DD for ; Thu, 4 Feb 2016 09:27:47 +0100 (CET) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP; 04 Feb 2016 00:27:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,393,1449561600"; d="scan'208";a="42221273" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by fmsmga004.fm.intel.com with ESMTP; 04 Feb 2016 00:27:45 -0800 Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com [10.239.29.89]) by shvmail01.sh.intel.com with ESMTP id u148Rg7N015364; Thu, 4 Feb 2016 16:27:42 +0800 Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1]) by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id u148RcdR030782; Thu, 4 Feb 2016 16:27:40 +0800 Received: (from xiaowan1@localhost) by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id u148Rc0C030778; Thu, 4 Feb 2016 16:27:38 +0800 From: Wang Xiao W To: jing.d.chen@intel.com Date: Thu, 4 Feb 2016 16:27:32 +0800 Message-Id: <1454574452-30741-2-git-send-email-xiao.w.wang@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1454574452-30741-1-git-send-email-xiao.w.wang@intel.com> References: <1450784205-10880-2-git-send-email-xiao.w.wang@intel.com> <1454574452-30741-1-git-send-email-xiao.w.wang@intel.com> Cc: dev@dpdk.org Subject: [dpdk-dev] [PATCH v3] testpmd: fix wrong prompt in tx_vlan set command handler 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When using testpmd, sometimes we forget the right order of port_id and vid in "tx_vlan set (port_id) vlan_id[, vlan_id_outer]\n" command, and input "tx_vlan set 51 0", we'll get a strange prompt saying "Error, as QinQ has been enabled.". In cmd_tx_vlan_set_parsed function, the first thing we do is checking the port's vlan_offload capability, rather than checking validity of the port_id, therefore if it's an invalid port_id we'll get the above wrong message. We should always make sure that we get a valid port_id before we do other things. It's the similar issue for cmd_tx_vlan_set_qinq_parsed function. Signed-off-by: Wang Xiao W --- app/test-pmd/cmdline.c | 18 +++--------------- app/test-pmd/config.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 6d28c1b..52179e6 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -2954,12 +2954,6 @@ cmd_tx_vlan_set_parsed(void *parsed_result, __attribute__((unused)) void *data) { struct cmd_tx_vlan_set_result *res = parsed_result; - int vlan_offload = rte_eth_dev_get_vlan_offload(res->port_id); - - if (vlan_offload & ETH_VLAN_EXTEND_OFFLOAD) { - printf("Error, as QinQ has been enabled.\n"); - return; - } tx_vlan_set(res->port_id, res->vlan_id); } @@ -2970,12 +2964,12 @@ cmdline_parse_token_string_t cmd_tx_vlan_set_tx_vlan = cmdline_parse_token_string_t cmd_tx_vlan_set_set = TOKEN_STRING_INITIALIZER(struct cmd_tx_vlan_set_result, set, "set"); -cmdline_parse_token_num_t cmd_tx_vlan_set_vlanid = - TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_result, - vlan_id, UINT16); cmdline_parse_token_num_t cmd_tx_vlan_set_portid = TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_result, port_id, UINT8); +cmdline_parse_token_num_t cmd_tx_vlan_set_vlanid = + TOKEN_NUM_INITIALIZER(struct cmd_tx_vlan_set_result, + vlan_id, UINT16); cmdline_parse_inst_t cmd_tx_vlan_set = { .f = cmd_tx_vlan_set_parsed, @@ -3006,12 +3000,6 @@ cmd_tx_vlan_set_qinq_parsed(void *parsed_result, __attribute__((unused)) void *data) { struct cmd_tx_vlan_set_qinq_result *res = parsed_result; - int vlan_offload = rte_eth_dev_get_vlan_offload(res->port_id); - - if (!(vlan_offload & ETH_VLAN_EXTEND_OFFLOAD)) { - printf("Error, as QinQ hasn't been enabled.\n"); - return; - } tx_qinq_set(res->port_id, res->vlan_id, res->vlan_id_outer); } diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 7088f6f..956d29c 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1839,10 +1839,18 @@ vlan_tpid_set(portid_t port_id, uint16_t tp_id) void tx_vlan_set(portid_t port_id, uint16_t vlan_id) { + int vlan_offload; if (port_id_is_invalid(port_id, ENABLED_WARN)) return; if (vlan_id_is_invalid(vlan_id)) return; + + vlan_offload = rte_eth_dev_get_vlan_offload(port_id); + if (vlan_offload & ETH_VLAN_EXTEND_OFFLOAD) { + printf("Error, as QinQ has been enabled.\n"); + return; + } + tx_vlan_reset(port_id); ports[port_id].tx_ol_flags |= TESTPMD_TX_OFFLOAD_INSERT_VLAN; ports[port_id].tx_vlan_id = vlan_id; @@ -1851,12 +1859,20 @@ tx_vlan_set(portid_t port_id, uint16_t vlan_id) void tx_qinq_set(portid_t port_id, uint16_t vlan_id, uint16_t vlan_id_outer) { + int vlan_offload; if (port_id_is_invalid(port_id, ENABLED_WARN)) return; if (vlan_id_is_invalid(vlan_id)) return; if (vlan_id_is_invalid(vlan_id_outer)) return; + + vlan_offload = rte_eth_dev_get_vlan_offload(port_id); + if (!(vlan_offload & ETH_VLAN_EXTEND_OFFLOAD)) { + printf("Error, as QinQ hasn't been enabled.\n"); + return; + } + tx_vlan_reset(port_id); ports[port_id].tx_ol_flags |= TESTPMD_TX_OFFLOAD_INSERT_QINQ; ports[port_id].tx_vlan_id = vlan_id;