examples/l3fwd: fix error checking
[dpdk.git] / examples / ethtool / lib / rte_ethtool.c
index e6a2e88..db8150e 100644 (file)
@@ -4,6 +4,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdint.h>
+#include <rte_string_fns.h>
 #include <rte_version.h>
 #include <rte_ethdev.h>
 #include <rte_ether.h>
@@ -40,13 +41,17 @@ rte_ethtool_get_drvinfo(uint16_t port_id, struct ethtool_drvinfo *drvinfo)
                printf("Insufficient fw version buffer size, "
                       "the minimum size should be %d\n", ret);
 
-       memset(&dev_info, 0, sizeof(dev_info));
-       rte_eth_dev_info_get(port_id, &dev_info);
+       ret = rte_eth_dev_info_get(port_id, &dev_info);
+       if (ret != 0) {
+               printf("Error during getting device (port %u) info: %s\n",
+                      port_id, strerror(-ret));
 
-       snprintf(drvinfo->driver, sizeof(drvinfo->driver), "%s",
-               dev_info.driver_name);
-       snprintf(drvinfo->version, sizeof(drvinfo->version), "%s",
-               rte_version());
+               return ret;
+       }
+
+       strlcpy(drvinfo->driver, dev_info.driver_name,
+               sizeof(drvinfo->driver));
+       strlcpy(drvinfo->version, rte_version(), sizeof(drvinfo->version));
        /* TODO: replace bus_info by rte_devargs.name */
        if (dev_info.device)
                bus = rte_bus_find_by_device(dev_info.device);
@@ -119,9 +124,13 @@ int
 rte_ethtool_get_link(uint16_t port_id)
 {
        struct rte_eth_link link;
+       int ret;
 
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
-       rte_eth_link_get(port_id, &link);
+       ret = rte_eth_link_get(port_id, &link);
+       if (ret < 0)
+               return ret;
+
        return link.link_status;
 }
 
@@ -303,18 +312,23 @@ rte_ethtool_net_stop(uint16_t port_id)
 }
 
 int
-rte_ethtool_net_get_mac_addr(uint16_t port_id, struct ether_addr *addr)
+rte_ethtool_net_get_mac_addr(uint16_t port_id, struct rte_ether_addr *addr)
 {
+       int ret;
+
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
        if (addr == NULL)
                return -EINVAL;
-       rte_eth_macaddr_get(port_id, addr);
+
+       ret = rte_eth_macaddr_get(port_id, addr);
+       if (ret != 0)
+               return ret;
 
        return 0;
 }
 
 int
-rte_ethtool_net_set_mac_addr(uint16_t port_id, struct ether_addr *addr)
+rte_ethtool_net_set_mac_addr(uint16_t port_id, struct rte_ether_addr *addr)
 {
        if (addr == NULL)
                return -EINVAL;
@@ -323,11 +337,11 @@ rte_ethtool_net_set_mac_addr(uint16_t port_id, struct ether_addr *addr)
 
 int
 rte_ethtool_net_validate_addr(uint16_t port_id __rte_unused,
-       struct ether_addr *addr)
+       struct rte_ether_addr *addr)
 {
        if (addr == NULL)
                return -EINVAL;
-       return is_valid_assigned_ether_addr(addr);
+       return rte_is_valid_assigned_ether_addr(addr);
 }
 
 int
@@ -371,9 +385,12 @@ rte_ethtool_net_set_rx_mode(uint16_t port_id)
        uint16_t num_vfs;
        struct rte_eth_dev_info dev_info;
        uint16_t vf;
+       int ret;
+
+       ret = rte_eth_dev_info_get(port_id, &dev_info);
+       if (ret != 0)
+               return ret;
 
-       memset(&dev_info, 0, sizeof(dev_info));
-       rte_eth_dev_info_get(port_id, &dev_info);
        num_vfs = dev_info.max_vfs;
 
        /* Set VF vf_rx_mode, VF unsupport status is discard */
@@ -385,7 +402,9 @@ rte_ethtool_net_set_rx_mode(uint16_t port_id)
        }
 
        /* Enable Rx vlan filter, VF unspport status is discard */
-       rte_eth_dev_set_vlan_offload(port_id, ETH_VLAN_FILTER_MASK);
+       ret = rte_eth_dev_set_vlan_offload(port_id, ETH_VLAN_FILTER_MASK);
+       if (ret != 0)
+               return ret;
 
        return 0;
 }
@@ -399,11 +418,14 @@ rte_ethtool_get_ringparam(uint16_t port_id,
        struct rte_eth_rxq_info rx_qinfo;
        struct rte_eth_txq_info tx_qinfo;
        int stat;
+       int ret;
 
        if (ring_param == NULL)
                return -EINVAL;
 
-       rte_eth_dev_info_get(port_id, &dev_info);
+       ret = rte_eth_dev_info_get(port_id, &dev_info);
+       if (ret != 0)
+               return ret;
 
        stat = rte_eth_rx_queue_info_get(port_id, 0, &rx_qinfo);
        if (stat != 0)