ethdev: return status of stats read
authorJia Yu <jyu@vmware.com>
Fri, 7 Nov 2014 17:31:51 +0000 (09:31 -0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 18 Feb 2015 16:50:15 +0000 (17:50 +0100)
rte_eth_stats_get is to get physical device statistics. Without
return status, caller does not know whether function fails or not
(i.e. invalid port_id, driver has no stats_get callback). Caller
cannot differiente normal 0 stats or error case. This fix adds
a return status to the function.

Signed-off-by: Jia Yu <jyu@vmware.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
lib/librte_ether/rte_ethdev.c
lib/librte_ether/rte_ethdev.h

index 8993b35..17be2f3 100644 (file)
@@ -1268,21 +1268,22 @@ rte_eth_link_get_nowait(uint8_t port_id, struct rte_eth_link *eth_link)
        }
 }
 
-void
+int
 rte_eth_stats_get(uint8_t port_id, struct rte_eth_stats *stats)
 {
        struct rte_eth_dev *dev;
 
        if (port_id >= nb_ports) {
                PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
-               return;
+               return (-ENODEV);
        }
        dev = &rte_eth_devices[port_id];
        memset(stats, 0, sizeof(*stats));
 
-       FUNC_PTR_OR_RET(*dev->dev_ops->stats_get);
+       FUNC_PTR_OR_ERR_RET(*dev->dev_ops->stats_get, -ENOTSUP);
        (*dev->dev_ops->stats_get)(dev, stats);
        stats->rx_nombuf = dev->data->rx_mbuf_alloc_failed;
+       return 0;
 }
 
 void
index 84160c3..6e454e8 100644 (file)
@@ -2052,8 +2052,10 @@ extern void rte_eth_link_get_nowait(uint8_t port_id,
  *   - *obytes*   with the total of successfully transmitted bytes.
  *   - *ierrors*  with the total of erroneous received packets.
  *   - *oerrors*  with the total of failed transmitted packets.
+ * @return
+ *   Zero if successful. Non-zero otherwise.
  */
-extern void rte_eth_stats_get(uint8_t port_id, struct rte_eth_stats *stats);
+extern int rte_eth_stats_get(uint8_t port_id, struct rte_eth_stats *stats);
 
 /**
  * Reset the general I/O statistics of an Ethernet device.