From: Emma Finn <emma.finn@intel.com>
To: dev@dpdk.org
Cc: john.mcnamara@intel.com, ferruh.yigit@intel.com,
bernard.iremonger@intel.com, Emma Finn <emma.finn@intel.com>
Subject: [dpdk-dev] [PATCH v1] testpmd: add new command for show port info
Date: Tue, 28 Aug 2018 15:11:34 +0100 [thread overview]
Message-ID: <1535465494-45384-1-git-send-email-emma.finn@intel.com> (raw)
existing testpmd command "show port info" is too verbose.
Added a new summary command to print brief information on ports.
Signed-off-by: Emma Finn <emma.finn@intel.com>
---
app/test-pmd/cmdline.c | 15 ++++++++++-----
app/test-pmd/config.c | 41 +++++++++++++++++++++++++++++++++++++++++
app/test-pmd/testpmd.h | 2 ++
3 files changed, 53 insertions(+), 5 deletions(-)
mode change 100644 => 100755 app/test-pmd/cmdline.c
mode change 100644 => 100755 app/test-pmd/config.c
mode change 100644 => 100755 app/test-pmd/testpmd.h
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
old mode 100644
new mode 100755
index 589121d..21e0b7a
--- 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,9 @@ 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"))
+ RTE_ETH_FOREACH_DEV(i)
+ port_summary_display(i,1);
else if (!strcmp(res->what, "stats"))
RTE_ETH_FOREACH_DEV(i)
nic_stats_display(i);
@@ -7100,14 +7103,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 +7140,8 @@ 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_summary_display(res->portnum,0);
else if (!strcmp(res->what, "stats"))
nic_stats_display(res->portnum);
else if (!strcmp(res->what, "xstats"))
@@ -7158,7 +7163,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 +7171,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 "
"<port_id>",
.tokens = {
(void *)&cmd_showport_show,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
old mode 100644
new mode 100755
index 14ccd68..3e049ca
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -518,6 +518,35 @@ port_infos_display(portid_t port_id)
}
void
+port_summary_display(portid_t port_id, int all)
+{
+ struct ether_addr mac_addr;
+ struct rte_eth_link link;
+ struct rte_eth_dev_info dev_info;
+ int port_number;
+ 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);
+ memset(&dev_info, 0, sizeof(dev_info));
+ 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);
+ port_number = get_valid_ports();
+ if(all==1 && port_id ==0)
+ printf("Number of ports: %i \n", port_number);
+ printf("Port %-2d: %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;
@@ -768,6 +797,18 @@ void print_valid_ports(void)
printf(" ]\n");
}
+int get_valid_ports(void)
+{
+ portid_t pid;
+ uint16_t count = 0;
+
+ RTE_ETH_FOREACH_DEV(pid) {
+ count ++;
+ }
+ return count;
+}
+
+
static int
vlan_id_is_invalid(uint16_t vlan_id)
{
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
old mode 100644
new mode 100755
index a1f6614..28250e4
--- 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, int all);
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);
+int get_valid_ports(void);
int new_socket_id(unsigned int socket_id);
queueid_t get_allowed_max_nb_rxq(portid_t *pid);
--
2.7.4
next reply other threads:[~2018-08-28 14:11 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-28 14:11 Emma Finn [this message]
2018-08-28 16:55 ` Stephen Hemminger
2018-08-29 9:48 ` [dpdk-dev] [PATCH v2] app/testpmd: " Emma Finn
2018-08-29 10:47 ` [dpdk-dev] [PATCH v3] " Emma Finn
2018-08-29 15:37 ` Stephen Hemminger
2018-08-29 16:24 ` Ferruh Yigit
2018-08-30 9:26 ` Iremonger, Bernard
2018-08-30 11:03 ` [dpdk-dev] [PATCH v4] " Emma Finn
2018-08-30 13:12 ` [dpdk-dev] [PATCH v5] " Emma Finn
2018-08-31 16:33 ` Iremonger, Bernard
2018-09-25 10:32 ` [dpdk-dev] [PATCH v6] " Marko Kovacevic
2018-09-25 11:05 ` Iremonger, Bernard
2018-10-11 11:28 ` Ferruh Yigit
2018-08-29 5:36 [dpdk-dev] [PATCH v1] testpmd: " Rami Rosen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1535465494-45384-1-git-send-email-emma.finn@intel.com \
--to=emma.finn@intel.com \
--cc=bernard.iremonger@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=john.mcnamara@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).