From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 00D3F58CB for ; Thu, 13 Apr 2017 10:29:26 +0200 (CEST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Apr 2017 01:29:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,194,1488873600"; d="scan'208";a="1134896495" Received: from dpdk6.bj.intel.com ([172.16.182.81]) by fmsmga001.fm.intel.com with ESMTP; 13 Apr 2017 01:29:23 -0700 From: Wei Dai To: thomas.monjalon@6wind.com, harish.patil@cavium.com, rasesh.mody@cavium.com, stephen.hurd@broadcom.com, ajit.khaparde@broadcom.com, wenzhuo.lu@intel.com, helin.zhang@intel.com, konstantin.ananyev@intel.com, jingjing.wu@intel.com, jing.d.chen@intel.com, adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com, bruce.richardson@intel.com, yuanhan.liu@linux.intel.com, maxime.coquelin@redhat.com Cc: dev@dpdk.org, Wei Dai Date: Thu, 13 Apr 2017 16:21:06 +0800 Message-Id: <4c9e519ab50002829d35dcf5963d4cf3e3fc8394.1492071245.git.wei.dai@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: <1491987746-10155-1-git-send-email-wei.dai@intel.com> Subject: [dpdk-dev] [PATCH v4 3/3] app/testpmd: add a command to add many MAC addrs X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Apr 2017 08:29:27 -0000 This patch is added to introduce a testpmd command which is used to add more than one MAC addresses one time. This command can simplify the test for the change where the type of return value of adding MAC address. Normally a MAC address may fails to be added only after many MAC addresses have been added. Without this command, a tester may only trigger failed MAC address by running many times of testpmd command 'mac_addr add' . Signed-off-by: Wei Dai --- app/test-pmd/cmdline.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index e0d54d4..0aa9ccc 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -6424,6 +6424,60 @@ cmdline_parse_inst_t cmd_mac_addr = { }, }; +/* *** ADD MORE THAN ONE MAC ADDRESS FROM A PORT *** */ +struct cmd_add_more_mac_addr_result { + cmdline_fixed_string_t mac_addr_cmd; + uint8_t port_num; + struct ether_addr address; + uint8_t cnt_addr; +}; + +static void cmd_add_more_mac_addr_parsed(void *parsed_result, + __attribute__((unused)) struct cmdline *cl, + __attribute__((unused)) void *data) +{ + struct cmd_add_more_mac_addr_result *res = parsed_result; + int ret; + int k; + + for (k = 0; k < res->cnt_addr; k++) { + ret = rte_eth_dev_mac_addr_add(res->port_num, &res->address, 0); + if (ret < 0) { + printf("Fail to add mac addr : (%s) after adding %u addresses\n", + strerror(-ret), k); + return; + } + res->address.addr_bytes[5]++; + } + printf("Success to add %u mac addresses\n", k); +} + +cmdline_parse_token_string_t cmd_add_more_mac_addr_cmd = + TOKEN_STRING_INITIALIZER(struct cmd_add_more_mac_addr_result, + mac_addr_cmd, "add_more_mac_addr"); +cmdline_parse_token_num_t cmd_add_more_mac_addr_portnum = + TOKEN_NUM_INITIALIZER(struct cmd_add_more_mac_addr_result, + port_num, UINT8); +cmdline_parse_token_etheraddr_t cmd_add_more_mac_addr_addr = + TOKEN_ETHERADDR_INITIALIZER(struct cmd_add_more_mac_addr_result, + address); +cmdline_parse_token_num_t cmd_add_more_mac_addr_cnt_addr = + TOKEN_NUM_INITIALIZER(struct cmd_add_more_mac_addr_result, + cnt_addr, UINT8); + +cmdline_parse_inst_t cmd_add_more_mac_addr = { + .f = cmd_add_more_mac_addr_parsed, + .data = (void *)0, + .help_str = "add_more_mac_addr : " + "Add cnt_addr MAC addresses on port_id", + .tokens = { + (void *)&cmd_add_more_mac_addr_cmd, + (void *)&cmd_add_more_mac_addr_portnum, + (void *)&cmd_add_more_mac_addr_addr, + (void *)&cmd_add_more_mac_addr_cnt_addr, + NULL, + }, +}; /* *** CONFIGURE QUEUE STATS COUNTER MAPPINGS *** */ struct cmd_set_qmap_result { @@ -13244,6 +13298,7 @@ cmdline_parse_ctx_t main_ctx[] = { (cmdline_parse_inst_t *)&cmd_read_rxd_txd, (cmdline_parse_inst_t *)&cmd_stop, (cmdline_parse_inst_t *)&cmd_mac_addr, + (cmdline_parse_inst_t *)&cmd_add_more_mac_addr, (cmdline_parse_inst_t *)&cmd_set_qmap, (cmdline_parse_inst_t *)&cmd_operate_port, (cmdline_parse_inst_t *)&cmd_operate_specific_port, -- 2.7.4