app/testpmd: check status of getting MAC address
authorIgor Romanov <igor.romanov@oktetlabs.ru>
Tue, 10 Sep 2019 08:52:16 +0000 (09:52 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Mon, 7 Oct 2019 13:00:55 +0000 (15:00 +0200)
Add a wrapper for rte_eth_macaddr_get() 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>
app/test-pmd/config.c
app/test-pmd/testpmd.c
app/test-pmd/testpmd.h
app/test-pmd/util.c

index 33a4e98..957c61f 100644 (file)
@@ -454,9 +454,11 @@ skip_parse:
 
                        /* List ports with matching device name */
                        RTE_ETH_FOREACH_DEV_OF(port_id, dev) {
-                               rte_eth_macaddr_get(port_id, &mac_addr);
                                printf("\n\tPort id: %-2d", port_id);
-                               print_ethaddr("\n\tMAC address: ", &mac_addr);
+                               if (eth_macaddr_get_print_err(port_id,
+                                                             &mac_addr) == 0)
+                                       print_ethaddr("\n\tMAC address: ",
+                                                     &mac_addr);
                                rte_eth_dev_get_name_by_port(port_id, name);
                                printf("\n\tDevice name: %s", name);
                                printf("\n");
@@ -494,8 +496,8 @@ port_infos_display(portid_t port_id)
 
        printf("\n%s Infos for port %-2d %s\n",
               info_border, port_id, info_border);
-       rte_eth_macaddr_get(port_id, &mac_addr);
-       print_ethaddr("MAC address: ", &mac_addr);
+       if (eth_macaddr_get_print_err(port_id, &mac_addr) == 0)
+               print_ethaddr("MAC address: ", &mac_addr);
        rte_eth_dev_get_name_by_port(port_id, name);
        printf("\nDevice name: %s", name);
        printf("\nDriver name: %s", dev_info.driver_name);
@@ -646,7 +648,9 @@ port_summary_display(portid_t port_id)
                return;
 
        rte_eth_dev_get_name_by_port(port_id, name);
-       rte_eth_macaddr_get(port_id, &mac_addr);
+       ret = eth_macaddr_get_print_err(port_id, &mac_addr);
+       if (ret != 0)
+               return;
 
        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],
index 0f6e279..1e3dc44 100644 (file)
@@ -2209,8 +2209,8 @@ start_port(portid_t pid)
                        RTE_PORT_HANDLING, RTE_PORT_STARTED) == 0)
                        printf("Port %d can not be set into started\n", pi);
 
-               rte_eth_macaddr_get(pi, &mac_addr);
-               printf("Port %d: %02X:%02X:%02X:%02X:%02X:%02X\n", pi,
+               if (eth_macaddr_get_print_err(pi, &mac_addr) == 0)
+                       printf("Port %d: %02X:%02X:%02X:%02X:%02X:%02X\n", pi,
                                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]);
@@ -2984,7 +2984,9 @@ init_port_config(void)
 
                rxtx_port_config(port);
 
-               rte_eth_macaddr_get(pid, &port->eth_addr);
+               ret = eth_macaddr_get_print_err(pid, &port->eth_addr);
+               if (ret != 0)
+                       return;
 
                map_port_queue_stats_mapping_registers(pid, port);
 #if defined RTE_LIBRTE_IXGBE_PMD && defined RTE_LIBRTE_IXGBE_BYPASS
@@ -3187,7 +3189,10 @@ init_port_dcb_config(portid_t pid,
        for (i = 0; i < RTE_DIM(vlan_tags); i++)
                rx_vft_set(pid, vlan_tags[i], 1);
 
-       rte_eth_macaddr_get(pid, &rte_port->eth_addr);
+       retval = eth_macaddr_get_print_err(pid, &rte_port->eth_addr);
+       if (retval != 0)
+               return retval;
+
        map_port_queue_stats_mapping_registers(pid, rte_port);
 
        rte_port->dcb_flag = 1;
index 9446d27..bec19ab 100644 (file)
@@ -826,6 +826,8 @@ 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);
+int eth_macaddr_get_print_err(uint16_t port_id,
+                       struct rte_ether_addr *mac_addr);
 
 
 /* Functions to manage the set of filtered Multicast MAC addresses */
index 19d3677..faf247c 100644 (file)
@@ -274,3 +274,16 @@ eth_link_get_nowait_print_err(uint16_t port_id, struct rte_eth_link *link)
 
        return ret;
 }
+
+int
+eth_macaddr_get_print_err(uint16_t port_id, struct rte_ether_addr *mac_addr)
+{
+       int ret;
+
+       ret = rte_eth_macaddr_get(port_id, mac_addr);
+       if (ret != 0)
+               printf("Error getting device (port %u) mac address: %s\n",
+                               port_id, rte_strerror(-ret));
+
+       return ret;
+}