app/testpmd: check status of getting link info

Add a wrapper for rte_eth_eth_link_get_nowait() that prints an
error and returns a status code if the function fails.

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
This commit is contained in:
Igor Romanov 2019-09-10 09:25:43 +01:00 committed by Ferruh Yigit
parent 4633c3b2eb
commit e661a08ba9
5 changed files with 46 additions and 7 deletions

View File

@ -484,7 +484,9 @@ port_infos_display(portid_t port_id)
return;
}
port = &ports[port_id];
rte_eth_link_get_nowait(port_id, &link);
ret = eth_link_get_nowait_print_err(port_id, &link);
if (ret < 0)
return;
ret = eth_dev_info_get_print_err(port_id, &dev_info);
if (ret != 0)
@ -635,7 +637,9 @@ port_summary_display(portid_t port_id)
return;
}
rte_eth_link_get_nowait(port_id, &link);
ret = eth_link_get_nowait_print_err(port_id, &link);
if (ret < 0)
return;
ret = eth_dev_info_get_print_err(port_id, &dev_info);
if (ret != 0)
@ -3521,10 +3525,13 @@ set_queue_rate_limit(portid_t port_id, uint16_t queue_idx, uint16_t rate)
{
int diag;
struct rte_eth_link link;
int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN))
return 1;
rte_eth_link_get_nowait(port_id, &link);
ret = eth_link_get_nowait_print_err(port_id, &link);
if (ret < 0)
return 1;
if (rate > link.link_speed) {
printf("Invalid rate value:%u bigger than link speed: %u\n",
rate, link.link_speed);

View File

@ -163,16 +163,22 @@ softnic_begin(void *arg __rte_unused)
return 0;
}
static void
static int
set_tm_hiearchy_nodes_shaper_rate(portid_t port_id,
struct tm_hierarchy *h)
{
struct rte_eth_link link_params;
uint64_t tm_port_rate;
int ret;
memset(&link_params, 0, sizeof(link_params));
rte_eth_link_get(port_id, &link_params);
ret = rte_eth_link_get(port_id, &link_params);
if (ret < 0) {
printf("Error during getting device (port %u) link info: %s\n",
port_id, rte_strerror(-ret));
return ret;
}
tm_port_rate = (uint64_t)ETH_SPEED_NUM_10G * BYTES_IN_MBPS;
/* Set tm hierarchy shapers rate */
@ -183,6 +189,8 @@ set_tm_hiearchy_nodes_shaper_rate(portid_t port_id,
= h->subport_node_shaper_rate / PIPE_NODES_PER_SUBPORT;
h->tc_node_shaper_rate = h->pipe_node_shaper_rate;
h->tc_node_shared_shaper_rate = h->subport_node_shaper_rate;
return 0;
}
static int
@ -554,7 +562,9 @@ softport_tm_hierarchy_specify(portid_t port_id,
memset(&h, 0, sizeof(struct tm_hierarchy));
/* TM hierarchy shapers rate */
set_tm_hiearchy_nodes_shaper_rate(port_id, &h);
status = set_tm_hiearchy_nodes_shaper_rate(port_id, &h);
if (status)
return status;
/* Add root node (level 0) */
status = softport_tm_root_node_add(port_id, &h, error);

View File

@ -2625,6 +2625,7 @@ check_all_ports_link_status(uint32_t port_mask)
portid_t portid;
uint8_t count, all_ports_up, print_flag = 0;
struct rte_eth_link link;
int ret;
printf("Checking link statuses...\n");
fflush(stdout);
@ -2634,7 +2635,14 @@ check_all_ports_link_status(uint32_t port_mask)
if ((port_mask & (1 << portid)) == 0)
continue;
memset(&link, 0, sizeof(link));
rte_eth_link_get_nowait(portid, &link);
ret = rte_eth_link_get_nowait(portid, &link);
if (ret < 0) {
all_ports_up = 0;
if (print_flag == 1)
printf("Port %u link get failed: %s\n",
portid, rte_strerror(-ret));
continue;
}
/* print link status if flag set */
if (print_flag == 1) {
if (link.link_status)

View File

@ -825,6 +825,7 @@ void setup_gso(const char *mode, portid_t port_id);
int eth_dev_info_get_print_err(uint16_t port_id,
struct rte_eth_dev_info *dev_info);
void eth_set_promisc_mode(uint16_t port_id, int enable);
int eth_link_get_nowait_print_err(uint16_t port_id, struct rte_eth_link *link);
/* Functions to manage the set of filtered Multicast MAC addresses */

View File

@ -261,3 +261,16 @@ eth_set_promisc_mode(uint16_t port, int enable)
enable ? "enabling" : "disabling",
port, rte_strerror(-ret));
}
int
eth_link_get_nowait_print_err(uint16_t port_id, struct rte_eth_link *link)
{
int ret;
ret = rte_eth_link_get_nowait(port_id, link);
if (ret < 0)
printf("Device (port %u) link get (without wait) failed: %s\n",
port_id, rte_strerror(-ret));
return ret;
}