From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 0C1CA5A44 for ; Sun, 30 Apr 2017 06:20:04 +0200 (CEST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Apr 2017 21:20:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,394,1488873600"; d="scan'208";a="255160307" Received: from dpdk6.bj.intel.com ([172.16.182.81]) by fmsmga004.fm.intel.com with ESMTP; 29 Apr 2017 21:20:00 -0700 From: Wei Dai To: wenzhuo.lu@intel.com, thomas@monjalon.net, harish.patil@cavium.com, rasesh.mody@cavium.com, stephen.hurd@broadcom.com, ajit.khaparde@broadcom.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, shepard.siegel@atomicrules.com, ed.czeck@atomicrules.com, john.miller@atomicrules.com Cc: dev@dpdk.org, Wei Dai Date: Sun, 30 Apr 2017 12:11:47 +0800 Message-Id: <1493525507-56304-4-git-send-email-wei.dai@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1493525507-56304-1-git-send-email-wei.dai@intel.com> References: <1493525507-56304-1-git-send-email-wei.dai@intel.com> Subject: [dpdk-dev] [PATCH v5 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: Sun, 30 Apr 2017 04:20:05 -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(+) mode change 100644 => 100755 app/test-pmd/cmdline.c diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c old mode 100644 new mode 100755 index f6bd75b..a65f457 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -6436,6 +6436,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 { @@ -13612,6 +13666,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