compressdev: add device stats
authorFiona Trahe <fiona.trahe@intel.com>
Fri, 27 Apr 2018 13:24:04 +0000 (14:24 +0100)
committerPablo de Lara <pablo.de.lara.guarch@intel.com>
Thu, 10 May 2018 16:46:20 +0000 (17:46 +0100)
Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Signed-off-by: Shally Verma <shally.verma@caviumnetworks.com>
Signed-off-by: Ashish Gupta <ashish.gupta@caviumnetworks.com>
lib/librte_compressdev/rte_compressdev.c
lib/librte_compressdev/rte_compressdev.h
lib/librte_compressdev/rte_compressdev_pmd.h
lib/librte_compressdev/rte_compressdev_version.map

index 03f1ab8..855385e 100644 (file)
@@ -555,6 +555,46 @@ rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
                        dev->data->queue_pairs[qp_id], ops, nb_ops);
 }
 
+int __rte_experimental
+rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats)
+{
+       struct rte_compressdev *dev;
+
+       if (!rte_compressdev_is_valid_dev(dev_id)) {
+               COMPRESSDEV_LOG(ERR, "Invalid dev_id=%d", dev_id);
+               return -ENODEV;
+       }
+
+       if (stats == NULL) {
+               COMPRESSDEV_LOG(ERR, "Invalid stats ptr");
+               return -EINVAL;
+       }
+
+       dev = &rte_comp_devices[dev_id];
+       memset(stats, 0, sizeof(*stats));
+
+       RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->stats_get, -ENOTSUP);
+       (*dev->dev_ops->stats_get)(dev, stats);
+       return 0;
+}
+
+void __rte_experimental
+rte_compressdev_stats_reset(uint8_t dev_id)
+{
+       struct rte_compressdev *dev;
+
+       if (!rte_compressdev_is_valid_dev(dev_id)) {
+               COMPRESSDEV_LOG(ERR, "Invalid dev_id=%" PRIu8, dev_id);
+               return;
+       }
+
+       dev = &rte_comp_devices[dev_id];
+
+       RTE_FUNC_PTR_OR_RET(*dev->dev_ops->stats_reset);
+       (*dev->dev_ops->stats_reset)(dev);
+}
+
+
 void __rte_experimental
 rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info)
 {
index 30cf64c..5ad9269 100644 (file)
@@ -63,6 +63,19 @@ struct rte_compressdev_info {
         */
 };
 
+/** comp device statistics */
+struct rte_compressdev_stats {
+       uint64_t enqueued_count;
+       /**< Count of all operations enqueued */
+       uint64_t dequeued_count;
+       /**< Count of all operations dequeued */
+
+       uint64_t enqueue_err_count;
+       /**< Total error count on operations enqueued */
+       uint64_t dequeue_err_count;
+       /**< Total error count on operations dequeued */
+};
+
 /**
  * Get the compress device name given a device identifier.
  *
@@ -229,6 +242,32 @@ rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 uint16_t __rte_experimental
 rte_compressdev_queue_pair_count(uint8_t dev_id);
 
+
+/**
+ * Retrieve the general I/O statistics of a device.
+ *
+ * @param dev_id
+ *   The identifier of the device
+ * @param stats
+ *   A pointer to a structure of type
+ *   *rte_compressdev_stats* to be filled with the
+ *   values of device counters
+ * @return
+ *   - Zero if successful.
+ *   - Non-zero otherwise.
+ */
+int __rte_experimental
+rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats);
+
+/**
+ * Reset the general I/O statistics of a device.
+ *
+ * @param dev_id
+ *   The identifier of the device.
+ */
+void __rte_experimental
+rte_compressdev_stats_reset(uint8_t dev_id);
+
 /**
  * Retrieve the contextual information of a device.
  *
index c08a3ee..38e9ea0 100644 (file)
@@ -116,6 +116,27 @@ typedef void (*compressdev_stop_t)(struct rte_compressdev *dev);
 typedef int (*compressdev_close_t)(struct rte_compressdev *dev);
 
 
+/**
+ * Function used to get statistics of a device.
+ *
+ * @param dev
+ *   Compress device
+ * @param stats
+ *   Compress device stats to populate
+ */
+typedef void (*compressdev_stats_get_t)(struct rte_compressdev *dev,
+                               struct rte_compressdev_stats *stats);
+
+
+/**
+ * Function used to reset statistics of a device.
+ *
+ * @param dev
+ *   Compress device
+ */
+typedef void (*compressdev_stats_reset_t)(struct rte_compressdev *dev);
+
+
 /**
  * Function used to get specific information of a device.
  *
@@ -247,6 +268,11 @@ struct rte_compressdev_ops {
 
        compressdev_info_get_t dev_infos_get;   /**< Get device info. */
 
+       compressdev_stats_get_t stats_get;
+       /**< Get device statistics. */
+       compressdev_stats_reset_t stats_reset;
+       /**< Reset device statistics. */
+
        compressdev_queue_pair_setup_t queue_pair_setup;
        /**< Set up a device queue pair. */
        compressdev_queue_pair_release_t queue_pair_release;
index 5ed3080..8e40046 100644 (file)
@@ -25,6 +25,8 @@ EXPERIMENTAL {
        rte_compressdev_queue_pair_setup;
        rte_compressdev_socket_id;
        rte_compressdev_start;
+       rte_compressdev_stats_get;
+       rte_compressdev_stats_reset;
        rte_compressdev_stop;
        rte_compressdev_stream_create;
        rte_compressdev_stream_free;