compressdev: add device stats

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>
This commit is contained in:
Fiona Trahe 2018-04-27 14:24:04 +01:00 committed by Pablo de Lara
parent 8f1e111539
commit 75736aa393
4 changed files with 107 additions and 0 deletions

View 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)
{

View 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.
*

View 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;

View 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;