summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorIgor Romanov <igor.romanov@oktetlabs.ru>2019-09-10 09:25:43 +0100
committerFerruh Yigit <ferruh.yigit@intel.com>2019-10-07 15:00:54 +0200
commite661a08ba9e66838ef06b6f8865c03da8b8c9e50 (patch)
treeedf1b37a442ca46ca647c61d61f5ed968cac78e0 /app
parent4633c3b2ebf2fbbb8b6d4f7e411133a941106044 (diff)
downloaddpdk-e661a08ba9e66838ef06b6f8865c03da8b8c9e50.zip
dpdk-e661a08ba9e66838ef06b6f8865c03da8b8c9e50.tar.gz
dpdk-e661a08ba9e66838ef06b6f8865c03da8b8c9e50.tar.xz
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>
Diffstat (limited to 'app')
-rw-r--r--app/test-pmd/config.c13
-rw-r--r--app/test-pmd/softnicfwd.c16
-rw-r--r--app/test-pmd/testpmd.c10
-rw-r--r--app/test-pmd/testpmd.h1
-rw-r--r--app/test-pmd/util.c13
5 files changed, 46 insertions, 7 deletions
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 857b6da..33a4e98 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -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);
diff --git a/app/test-pmd/softnicfwd.c b/app/test-pmd/softnicfwd.c
index 94e6669..e9d4373 100644
--- a/app/test-pmd/softnicfwd.c
+++ b/app/test-pmd/softnicfwd.c
@@ -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);
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 2a57978..0f6e279 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -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)
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index ab93062..9446d27 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -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 */
diff --git a/app/test-pmd/util.c b/app/test-pmd/util.c
index 4626751..19d3677 100644
--- a/app/test-pmd/util.c
+++ b/app/test-pmd/util.c
@@ -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;
+}