* [dpdk-dev] [PATCH v1] testpmd: add new command for show port info
@ 2018-08-28 14:11 Emma Finn
2018-08-28 16:55 ` Stephen Hemminger
2018-08-29 9:48 ` [dpdk-dev] [PATCH v2] app/testpmd: " Emma Finn
0 siblings, 2 replies; 13+ messages in thread
From: Emma Finn @ 2018-08-28 14:11 UTC (permalink / raw)
To: dev; +Cc: john.mcnamara, ferruh.yigit, bernard.iremonger, Emma Finn
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
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] testpmd: add new command for show port info
2018-08-28 14:11 [dpdk-dev] [PATCH v1] testpmd: add new command for show port info Emma Finn
@ 2018-08-28 16:55 ` Stephen Hemminger
2018-08-29 9:48 ` [dpdk-dev] [PATCH v2] app/testpmd: " Emma Finn
1 sibling, 0 replies; 13+ messages in thread
From: Stephen Hemminger @ 2018-08-28 16:55 UTC (permalink / raw)
To: Emma Finn; +Cc: dev, john.mcnamara, ferruh.yigit, bernard.iremonger
On Tue, 28 Aug 2018 15:11:34 +0100
Emma Finn <emma.finn@intel.com> wrote:
> 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>
Looks good.
Maybe it would be better to drop off redundant information or only add
a single header line like:
testpmd> show port summary all
Port Mac Name Driver Link Status
0 11:22:33:44:55 0001:00 ixgbe 10Gbit Up
...
^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v2] app/testpmd: add new command for show port info
2018-08-28 14:11 [dpdk-dev] [PATCH v1] testpmd: add new command for show port info Emma Finn
2018-08-28 16:55 ` Stephen Hemminger
@ 2018-08-29 9:48 ` Emma Finn
2018-08-29 10:47 ` [dpdk-dev] [PATCH v3] " Emma Finn
1 sibling, 1 reply; 13+ messages in thread
From: Emma Finn @ 2018-08-29 9:48 UTC (permalink / raw)
To: dev; +Cc: john.mcnamara, ferruh.yigit, bernard.iremonger, stephen, Emma Finn
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 <emma.finn@intel.com>
---
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 "
"<port_id>",
.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
^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v3] app/testpmd: add new command for show port info
2018-08-29 9:48 ` [dpdk-dev] [PATCH v2] app/testpmd: " Emma Finn
@ 2018-08-29 10:47 ` Emma Finn
2018-08-29 15:37 ` Stephen Hemminger
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Emma Finn @ 2018-08-29 10:47 UTC (permalink / raw)
To: dev; +Cc: john.mcnamara, ferruh.yigit, bernard.iremonger, stephen, Emma Finn
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 <emma.finn@intel.com>
---
v2: droped off redundant information added
a single header line. (Stephen Hemminger)
v3: removed deprecated function and refactored code.
---
app/test-pmd/cmdline.c | 19 +++++++++++----
app/test-pmd/config.c | 37 +++++++++++++++++++++++++++++
app/test-pmd/testpmd.h | 2 ++
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 +++-
4 files changed, 56 insertions(+), 6 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 589121d..e54e2e5 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_summary_header_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_summary_header_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 "
"<port_id>",
.tokens = {
(void *)&cmd_showport_show,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 14ccd68..237efc3 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -518,6 +518,43 @@ port_infos_display(portid_t port_id)
}
void
+port_summary_header_display(void)
+{
+ uint16_t port_number;
+
+ port_number = rte_eth_dev_count_avail();
+ 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..f0bc716 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -594,6 +594,8 @@ 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_summary_header_display(void);
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);
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
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v3] app/testpmd: add new command for show port info
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
` (2 subsequent siblings)
3 siblings, 0 replies; 13+ messages in thread
From: Stephen Hemminger @ 2018-08-29 15:37 UTC (permalink / raw)
To: Emma Finn; +Cc: dev, john.mcnamara, ferruh.yigit, bernard.iremonger
On Wed, 29 Aug 2018 11:47:29 +0100
Emma Finn <emma.finn@intel.com> wrote:
> 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 <emma.finn@intel.com>
>
Looks good, thanks for doing this.
Is there a good way to handle ports that are "owned" as in bonding/failsafe etc?
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v3] app/testpmd: add new command for show port info
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
3 siblings, 0 replies; 13+ messages in thread
From: Ferruh Yigit @ 2018-08-29 16:24 UTC (permalink / raw)
To: Emma Finn, dev; +Cc: john.mcnamara, bernard.iremonger, stephen
On 8/29/2018 11:47 AM, Emma Finn wrote:
> 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 <emma.finn@intel.com>
When header is used, I think no need "," between fields. Except from this,
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v3] app/testpmd: add new command for show port info
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
3 siblings, 0 replies; 13+ messages in thread
From: Iremonger, Bernard @ 2018-08-30 9:26 UTC (permalink / raw)
To: Finn, Emma, dev; +Cc: Mcnamara, John, Yigit, Ferruh, stephen
Hi Emma,
> -----Original Message-----
> From: Finn, Emma
> Sent: Wednesday, August 29, 2018 11:47 AM
> To: dev@dpdk.org
> Cc: Mcnamara, John <john.mcnamara@intel.com>; Yigit, Ferruh
> <ferruh.yigit@intel.com>; Iremonger, Bernard <bernard.iremonger@intel.com>;
> stephen@networkplumber.org; Finn, Emma <emma.finn@intel.com>
> Subject: [PATCH v3] app/testpmd: add new command for show port info
>
> 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 <emma.finn@intel.com>
>
> ---
>
> v2: droped off redundant information added
> a single header line. (Stephen Hemminger)
>
> v3: removed deprecated function and refactored code.
> ---
> app/test-pmd/cmdline.c | 19 +++++++++++----
> app/test-pmd/config.c | 37 +++++++++++++++++++++++++++++
> app/test-pmd/testpmd.h | 2 ++
> doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 +++-
> 4 files changed, 56 insertions(+), 6 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 589121d..e54e2e5 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_summary_header_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_summary_header_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 "
> "<port_id>",
> .tokens = {
> (void *)&cmd_showport_show,
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index
> 14ccd68..237efc3 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -518,6 +518,43 @@ port_infos_display(portid_t port_id) }
>
> void
> +port_summary_header_display(void)
> +{
> + uint16_t port_number;
> +
> + port_number = rte_eth_dev_count_avail();
> + 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);
> +}
The checkpatch warning in the line above should probably be fixed.
WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
#157: FILE: app/test-pmd/config.c:554:
+ (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..f0bc716 100644
> --- a/app/test-pmd/testpmd.h
> +++ b/app/test-pmd/testpmd.h
> @@ -594,6 +594,8 @@ 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_summary_header_display(void);
> 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); 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
Regards,
Bernard.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v4] app/testpmd: add new command for show port info
2018-08-29 10:47 ` [dpdk-dev] [PATCH v3] " Emma Finn
` (2 preceding siblings ...)
2018-08-30 9:26 ` Iremonger, Bernard
@ 2018-08-30 11:03 ` Emma Finn
2018-08-30 13:12 ` [dpdk-dev] [PATCH v5] " Emma Finn
3 siblings, 1 reply; 13+ messages in thread
From: Emma Finn @ 2018-08-30 11:03 UTC (permalink / raw)
To: dev; +Cc: john.mcnamara, ferruh.yigit, bernard.iremonger, stephen, Emma Finn
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 <emma.finn@intel.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
v2: droped off redundant information added
a single header line. (Stephen Hemminger)
v3: removed deprecated function and refactored code.
v4: fixed unsigned checkpatch warning and removed commas.
---
app/test-pmd/cmdline.c | 19 +++++++++++----
app/test-pmd/config.c | 37 +++++++++++++++++++++++++++++
app/test-pmd/testpmd.h | 2 ++
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 +++-
4 files changed, 56 insertions(+), 6 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 589121d..e54e2e5 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_summary_header_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_summary_header_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 "
"<port_id>",
.tokens = {
(void *)&cmd_showport_show,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 14ccd68..208aa7e 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -518,6 +518,43 @@ port_infos_display(portid_t port_id)
}
void
+port_summary_header_display(void)
+{
+ uint16_t port_number;
+
+ port_number = rte_eth_dev_count_avail();
+ printf("Number of available ports: %i\n", port_number);
+ printf("%s %s %10s %14s %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 %-6s %uMbps\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 int) 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..f0bc716 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -594,6 +594,8 @@ 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_summary_header_display(void);
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);
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
^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v5] app/testpmd: add new command for show port info
2018-08-30 11:03 ` [dpdk-dev] [PATCH v4] " Emma Finn
@ 2018-08-30 13:12 ` Emma Finn
2018-08-31 16:33 ` Iremonger, Bernard
2018-09-25 10:32 ` [dpdk-dev] [PATCH v6] " Marko Kovacevic
0 siblings, 2 replies; 13+ messages in thread
From: Emma Finn @ 2018-08-30 13:12 UTC (permalink / raw)
To: dev; +Cc: john.mcnamara, ferruh.yigit, bernard.iremonger, stephen, Emma Finn
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 40000Mbps
1 66:55:44:33:22:11 0000:07:00.1 net_i40e up 40000Mbps
Signed-off-by: Emma Finn <emma.finn@intel.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
v2: droped off redundant information added
a single header line. (Stephen Hemminger)
v3: removed deprecated function and refactored code.
v4: fixed unsigned checkpatch warning and removed commas.
v5: fixed commit message console output.
---
app/test-pmd/cmdline.c | 19 +++++++++++----
app/test-pmd/config.c | 37 +++++++++++++++++++++++++++++
app/test-pmd/testpmd.h | 2 ++
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 +++-
4 files changed, 56 insertions(+), 6 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 589121d..e54e2e5 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_summary_header_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_summary_header_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 "
"<port_id>",
.tokens = {
(void *)&cmd_showport_show,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 14ccd68..208aa7e 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -518,6 +518,43 @@ port_infos_display(portid_t port_id)
}
void
+port_summary_header_display(void)
+{
+ uint16_t port_number;
+
+ port_number = rte_eth_dev_count_avail();
+ printf("Number of available ports: %i\n", port_number);
+ printf("%s %s %10s %14s %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 %-6s %uMbps\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 int) 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..f0bc716 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -594,6 +594,8 @@ 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_summary_header_display(void);
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);
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
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v5] app/testpmd: add new command for show port info
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
1 sibling, 0 replies; 13+ messages in thread
From: Iremonger, Bernard @ 2018-08-31 16:33 UTC (permalink / raw)
To: Finn, Emma, dev; +Cc: Mcnamara, John, Yigit, Ferruh, stephen
Hi Emma,
> -----Original Message-----
> From: Finn, Emma
> Sent: Thursday, August 30, 2018 2:12 PM
> To: dev@dpdk.org
> Cc: Mcnamara, John <john.mcnamara@intel.com>; Yigit, Ferruh
> <ferruh.yigit@intel.com>; Iremonger, Bernard
> <bernard.iremonger@intel.com>; stephen@networkplumber.org; Finn,
> Emma <emma.finn@intel.com>
> Subject: [PATCH v5] app/testpmd: add new command for show port info
>
> 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 40000Mbps
> 1 66:55:44:33:22:11 0000:07:00.1 net_i40e up 40000Mbps
>
> Signed-off-by: Emma Finn <emma.finn@intel.com>
> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>
> ---
>
> v2: droped off redundant information added
> a single header line. (Stephen Hemminger)
>
> v3: removed deprecated function and refactored code.
>
> v4: fixed unsigned checkpatch warning and removed commas.
>
> v5: fixed commit message console output.
> ---
> app/test-pmd/cmdline.c | 19 +++++++++++----
> app/test-pmd/config.c | 37 +++++++++++++++++++++++++++++
> app/test-pmd/testpmd.h | 2 ++
> doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 +++-
> 4 files changed, 56 insertions(+), 6 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 589121d..e54e2e5 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_summary_header_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_summary_header_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 "
> "<port_id>",
> .tokens = {
> (void *)&cmd_showport_show,
> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index
> 14ccd68..208aa7e 100644
> --- a/app/test-pmd/config.c
> +++ b/app/test-pmd/config.c
> @@ -518,6 +518,43 @@ port_infos_display(portid_t port_id) }
>
> void
> +port_summary_header_display(void)
> +{
> + uint16_t port_number;
> +
> + port_number = rte_eth_dev_count_avail();
> + printf("Number of available ports: %i\n", port_number);
> + printf("%s %s %10s %14s %8s %s\n", "Port", "MAC Address",
> "Name",
> + "Driver", "Status", "Link");
> +}
The field width of the "Driver" heading is fine for "net_i40e" but a character short for "net_ixgbe".
The field should be probably be a bit wider to allow for longer driver names.
> +
> +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 %-6s
> %uMbps\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 int) 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..f0bc716 100644
> --- a/app/test-pmd/testpmd.h
> +++ b/app/test-pmd/testpmd.h
> @@ -594,6 +594,8 @@ 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_summary_header_display(void);
> 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); 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
Regards,
Bernard.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v6] app/testpmd: add new command for show port info
2018-08-30 13:12 ` [dpdk-dev] [PATCH v5] " Emma Finn
2018-08-31 16:33 ` Iremonger, Bernard
@ 2018-09-25 10:32 ` Marko Kovacevic
2018-09-25 11:05 ` Iremonger, Bernard
1 sibling, 1 reply; 13+ messages in thread
From: Marko Kovacevic @ 2018-09-25 10:32 UTC (permalink / raw)
To: dev; +Cc: ferruh.yigit, bernard.iremonger, Emma Finn
From: Emma Finn <emma.finn@intel.com>
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 40000Mbps
1 66:55:44:33:22:11 0000:07:00.1 net_i40e up 40000Mbps
Signed-off-by: Emma Finn <emma.finn@intel.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
v2: droped off redundant information added
a single header line. (Stephen Hemminger)
v3: removed deprecated function and refactored code.
v4: fixed unsigned checkpatch warning and removed commas.
v5: fixed commit message console output.
V6: changed the fields to me a bit wider to allow for longer
driver names
---
app/test-pmd/cmdline.c | 19 +++++++++++----
app/test-pmd/config.c | 37 +++++++++++++++++++++++++++++
app/test-pmd/testpmd.h | 2 ++
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 +++-
4 files changed, 56 insertions(+), 6 deletions(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 0cbd340..cb0d9ef 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"
@@ -7071,6 +7071,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_summary_header_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);
@@ -7098,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,
@@ -7135,6 +7140,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_summary_header_display();
+ port_summary_display(res->portnum);
+ }
else if (!strcmp(res->what, "stats"))
nic_stats_display(res->portnum);
else if (!strcmp(res->what, "xstats"))
@@ -7156,7 +7165,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);
@@ -7164,7 +7173,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
index a0f9349..d53723c 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -518,6 +518,43 @@ port_infos_display(portid_t port_id)
}
void
+port_summary_header_display(void)
+{
+ uint16_t port_number;
+
+ port_number = rte_eth_dev_count_avail();
+ printf("Number of available ports: %i\n", port_number);
+ printf("%-4s %-17s %-12s %-14s %-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 %-12s %-14s %-8s %uMbps\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 int) 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..f0bc716 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -594,6 +594,8 @@ 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_summary_header_display(void);
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);
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.9.5
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v6] app/testpmd: add new command for show port info
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
0 siblings, 1 reply; 13+ messages in thread
From: Iremonger, Bernard @ 2018-09-25 11:05 UTC (permalink / raw)
To: Kovacevic, Marko, dev; +Cc: Yigit, Ferruh, Finn, Emma
> -----Original Message-----
> From: Kovacevic, Marko
> Sent: Tuesday, September 25, 2018 11:33 AM
> To: dev@dpdk.org
> Cc: Yigit, Ferruh <ferruh.yigit@intel.com>; Iremonger, Bernard
> <bernard.iremonger@intel.com>; Finn, Emma <emma.finn@intel.com>
> Subject: [PATCH v6] app/testpmd: add new command for show port info
>
> From: Emma Finn <emma.finn@intel.com>
>
> 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 40000Mbps
> 1 66:55:44:33:22:11 0000:07:00.1 net_i40e up 40000Mbps
>
> Signed-off-by: Emma Finn <emma.finn@intel.com>
> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v6] app/testpmd: add new command for show port info
2018-09-25 11:05 ` Iremonger, Bernard
@ 2018-10-11 11:28 ` Ferruh Yigit
0 siblings, 0 replies; 13+ messages in thread
From: Ferruh Yigit @ 2018-10-11 11:28 UTC (permalink / raw)
To: Iremonger, Bernard, Kovacevic, Marko, dev; +Cc: Finn, Emma
On 9/25/2018 12:05 PM, Iremonger, Bernard wrote:
>> -----Original Message-----
>> From: Kovacevic, Marko
>> Sent: Tuesday, September 25, 2018 11:33 AM
>> To: dev@dpdk.org
>> Cc: Yigit, Ferruh <ferruh.yigit@intel.com>; Iremonger, Bernard
>> <bernard.iremonger@intel.com>; Finn, Emma <emma.finn@intel.com>
>> Subject: [PATCH v6] app/testpmd: add new command for show port info
>>
>> From: Emma Finn <emma.finn@intel.com>
>>
>> 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 40000Mbps
>> 1 66:55:44:33:22:11 0000:07:00.1 net_i40e up 40000Mbps
>>
>> Signed-off-by: Emma Finn <emma.finn@intel.com>
>> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
>> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>
> Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Applied to dpdk-next-net/master, thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-10-11 11:37 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-28 14:11 [dpdk-dev] [PATCH v1] testpmd: add new command for show port info Emma Finn
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
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).