ethdev: add return code to stats reset function
authorDavid Harton <dharton@cisco.com>
Wed, 20 Sep 2017 14:11:30 +0000 (10:11 -0400)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 12 Oct 2017 00:36:58 +0000 (01:36 +0100)
Some devices do not support reset of eth stats.  An application may
need to know not to clear shadow stats if the device cannot.

rte_eth_stats_reset is updated to provide a return code to share
whether the device supports reset or not.

Signed-off-by: David Harton <dharton@cisco.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
doc/guides/rel_notes/release_17_11.rst
lib/librte_ether/rte_ethdev.c
lib/librte_ether/rte_ethdev.h

index 5609c30..4f5576d 100644 (file)
@@ -47,6 +47,12 @@ New Features
   256 ports in dpdk. All ethdev APIs which have port_id as parameter are changed
   in the meantime.
 
+* **Modified the return type of rte_eth_stats_reset.**
+
+  Changed return type of ``rte_eth_stats_reset`` from ``void`` to ``int``
+  so the caller may know whether a device supports the operation or not
+  and if the operation was carried out.
+
 * **Added a new driver for Marvell Armada 7k/8k devices.**
 
   Added the new mrvl net driver for Marvell Armada 7k/8k devices. See the
index f20cb25..3c5441e 100644 (file)
@@ -1535,17 +1535,19 @@ rte_eth_stats_get(uint16_t port_id, struct rte_eth_stats *stats)
        return 0;
 }
 
-void
+int
 rte_eth_stats_reset(uint16_t port_id)
 {
        struct rte_eth_dev *dev;
 
-       RTE_ETH_VALID_PORTID_OR_RET(port_id);
+       RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
        dev = &rte_eth_devices[port_id];
 
-       RTE_FUNC_PTR_OR_RET(*dev->dev_ops->stats_reset);
+       RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->stats_reset, -ENOTSUP);
        (*dev->dev_ops->stats_reset)(dev);
        dev->data->rx_mbuf_alloc_failed = 0;
+
+       return 0;
 }
 
 static int
index b88005b..8e928da 100644 (file)
@@ -2369,8 +2369,12 @@ int rte_eth_stats_get(uint16_t port_id, struct rte_eth_stats *stats);
  *
  * @param port_id
  *   The port identifier of the Ethernet device.
+ * @return
+ *   - (0) if device notified to reset stats.
+ *   - (-ENOTSUP) if hardware doesn't support.
+ *   - (-ENODEV) if *port_id* invalid.
  */
-void rte_eth_stats_reset(uint16_t port_id);
+int rte_eth_stats_reset(uint16_t port_id);
 
 /**
  * Retrieve names of extended statistics of an Ethernet device.