From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id ADD78F11 for ; Wed, 29 Aug 2018 11:48:47 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Aug 2018 02:48:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,301,1531810800"; d="scan'208";a="252825232" Received: from silpixa00393942.ir.intel.com ([10.237.223.24]) by orsmga005.jf.intel.com with ESMTP; 29 Aug 2018 02:48:44 -0700 From: Emma Finn To: dev@dpdk.org Cc: john.mcnamara@intel.com, ferruh.yigit@intel.com, bernard.iremonger@intel.com, stephen@networkplumber.org, Emma Finn Date: Wed, 29 Aug 2018 10:48:40 +0100 Message-Id: <1535536120-6934-1-git-send-email-emma.finn@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1535465494-45384-1-git-send-email-emma.finn@intel.com> References: <1535465494-45384-1-git-send-email-emma.finn@intel.com> Subject: [dpdk-dev] [PATCH v2] app/testpmd: add new command for show port info 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: Wed, 29 Aug 2018 09:48:48 -0000 existing testpmd command "show port info" is too verbose. Added a new summary command to print brief information on ports. console output: testpmd> show port summary all Number of available ports: 2 Port MAC Address Name Driver Status Link 0 11:22:33:44:55:66 0000:07:00.0, net_i40e, up, 40000 Mbps 1 66:55:44:33:22:11 0000:07:00.1, net_i40e, up, 40000 Mbps Signed-off-by: Emma Finn --- v2: droped off redundant information added a single header line. (Stephen Hemminger) --- app/test-pmd/cmdline.c | 19 +++++++++++---- app/test-pmd/config.c | 38 +++++++++++++++++++++++++++++ app/test-pmd/testpmd.h | 2 ++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 ++- 4 files changed, 57 insertions(+), 6 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 589121d..bb15338 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -167,7 +167,7 @@ static void cmd_help_long_parsed(void *parsed_result, "Display:\n" "--------\n\n" - "show port (info|stats|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all)\n" + "show port (info|stats|summary|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all)\n" " Display information for port_id, or all.\n\n" "show port X rss reta (size) (mask0,mask1,...)\n" @@ -7073,6 +7073,11 @@ static void cmd_showportall_parsed(void *parsed_result, } else if (!strcmp(res->what, "info")) RTE_ETH_FOREACH_DEV(i) port_infos_display(i); + else if (!strcmp(res->what, "summary")) { + port_number_display(); + RTE_ETH_FOREACH_DEV(i) + port_summary_display(i); + } else if (!strcmp(res->what, "stats")) RTE_ETH_FOREACH_DEV(i) nic_stats_display(i); @@ -7100,14 +7105,14 @@ cmdline_parse_token_string_t cmd_showportall_port = TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, port, "port"); cmdline_parse_token_string_t cmd_showportall_what = TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, what, - "info#stats#xstats#fdir#stat_qmap#dcb_tc#cap"); + "info#summary#stats#xstats#fdir#stat_qmap#dcb_tc#cap"); cmdline_parse_token_string_t cmd_showportall_all = TOKEN_STRING_INITIALIZER(struct cmd_showportall_result, all, "all"); cmdline_parse_inst_t cmd_showportall = { .f = cmd_showportall_parsed, .data = NULL, .help_str = "show|clear port " - "info|stats|xstats|fdir|stat_qmap|dcb_tc|cap all", + "info|summary|stats|xstats|fdir|stat_qmap|dcb_tc|cap all", .tokens = { (void *)&cmd_showportall_show, (void *)&cmd_showportall_port, @@ -7137,6 +7142,10 @@ static void cmd_showport_parsed(void *parsed_result, nic_xstats_clear(res->portnum); } else if (!strcmp(res->what, "info")) port_infos_display(res->portnum); + else if (!strcmp(res->what, "summary")) { + port_number_display(); + port_summary_display(res->portnum); + } else if (!strcmp(res->what, "stats")) nic_stats_display(res->portnum); else if (!strcmp(res->what, "xstats")) @@ -7158,7 +7167,7 @@ cmdline_parse_token_string_t cmd_showport_port = TOKEN_STRING_INITIALIZER(struct cmd_showport_result, port, "port"); cmdline_parse_token_string_t cmd_showport_what = TOKEN_STRING_INITIALIZER(struct cmd_showport_result, what, - "info#stats#xstats#fdir#stat_qmap#dcb_tc#cap"); + "info#summary#stats#xstats#fdir#stat_qmap#dcb_tc#cap"); cmdline_parse_token_num_t cmd_showport_portnum = TOKEN_NUM_INITIALIZER(struct cmd_showport_result, portnum, UINT16); @@ -7166,7 +7175,7 @@ cmdline_parse_inst_t cmd_showport = { .f = cmd_showport_parsed, .data = NULL, .help_str = "show|clear port " - "info|stats|xstats|fdir|stat_qmap|dcb_tc|cap " + "info|summary|stats|xstats|fdir|stat_qmap|dcb_tc|cap " "", .tokens = { (void *)&cmd_showport_show, diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 14ccd68..cf436ba 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -518,6 +518,44 @@ port_infos_display(portid_t port_id) } void +port_number_display(void) +{ + uint16_t port_number; + port_number = rte_eth_dev_count(); + printf("Number of available ports: %i\n", port_number); + printf("%s %s %10s %15s %8s %s\n", "Port", "MAC Address", "Name", + "Driver", "Status", "Link"); +} + +void +port_summary_display(portid_t port_id) +{ + struct ether_addr mac_addr; + struct rte_eth_link link; + struct rte_eth_dev_info dev_info; + + char name[RTE_ETH_NAME_MAX_LEN]; + + if (port_id_is_invalid(port_id, ENABLED_WARN)) { + print_valid_ports(); + return; + } + + rte_eth_link_get_nowait(port_id, &link); + rte_eth_dev_info_get(port_id, &dev_info); + rte_eth_dev_get_name_by_port(port_id, name); + rte_eth_macaddr_get(port_id, &mac_addr); + + printf("%-4d %02X:%02X:%02X:%02X:%02X:%02X %s, %s, %s, %u Mbps\n", + port_id, mac_addr.addr_bytes[0], mac_addr.addr_bytes[1], + mac_addr.addr_bytes[2], mac_addr.addr_bytes[3], + mac_addr.addr_bytes[4], mac_addr.addr_bytes[5], name, + dev_info.driver_name, (link.link_status) ? ("up") : ("down"), + (unsigned) link.link_speed); +} + + +void port_offload_cap_display(portid_t port_id) { struct rte_eth_dev_info dev_info; diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index a1f6614..842d4e0 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -594,6 +594,7 @@ void nic_xstats_display(portid_t port_id); void nic_xstats_clear(portid_t port_id); void nic_stats_mapping_display(portid_t port_id); void port_infos_display(portid_t port_id); +void port_summary_display(portid_t port_id); void port_offload_cap_display(portid_t port_id); void rx_queue_infos_display(portid_t port_idi, uint16_t queue_id); void tx_queue_infos_display(portid_t port_idi, uint16_t queue_id); @@ -736,6 +737,7 @@ enum print_warning { }; int port_id_is_invalid(portid_t port_id, enum print_warning warning); void print_valid_ports(void); +void port_number_display(void); int new_socket_id(unsigned int socket_id); queueid_t get_allowed_max_nb_rxq(portid_t *pid); diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index dde205a..23c4feb 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -159,12 +159,14 @@ show port Display information for a given port or all ports:: - testpmd> show port (info|stats|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all) + testpmd> show port (info|summary|stats|xstats|fdir|stat_qmap|dcb_tc|cap) (port_id|all) The available information categories are: * ``info``: General port information such as MAC address. +* ``summary``: Brief port summary such as Device Name, Driver Name etc. + * ``stats``: RX/TX statistics. * ``xstats``: RX/TX extended NIC statistics. -- 2.7.4