app/testpmd: check status of getting link info
[dpdk.git] / app / test-pmd / testpmd.c
index de91e1b..0f6e279 100644 (file)
@@ -2433,13 +2433,17 @@ static void
 setup_attached_port(portid_t pi)
 {
        unsigned int socket_id;
+       int ret;
 
        socket_id = (unsigned)rte_eth_dev_socket_id(pi);
        /* if socket_id is invalid, set to the first available socket. */
        if (check_socket_id(socket_id) < 0)
                socket_id = socket_ids[0];
        reconfig(pi, socket_id);
-       rte_eth_promiscuous_enable(pi);
+       ret = rte_eth_promiscuous_enable(pi);
+       if (ret != 0)
+               printf("Error during enabling promiscuous mode for port %u: %s - ignore\n",
+                       pi, rte_strerror(-ret));
 
        ports_ids[nb_ports++] = pi;
        fwd_ports_ids[nb_fwd_ports++] = pi;
@@ -2621,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);
@@ -2630,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)
@@ -3373,8 +3385,12 @@ main(int argc, char** argv)
                rte_exit(EXIT_FAILURE, "Start ports failed\n");
 
        /* set all ports to promiscuous mode by default */
-       RTE_ETH_FOREACH_DEV(port_id)
-               rte_eth_promiscuous_enable(port_id);
+       RTE_ETH_FOREACH_DEV(port_id) {
+               ret = rte_eth_promiscuous_enable(port_id);
+               if (ret != 0)
+                       printf("Error during enabling promiscuous mode for port %u: %s - ignore\n",
+                               port_id, rte_strerror(-ret));
+       }
 
        /* Init metrics library */
        rte_metrics_init(rte_socket_id());