The xstats functions can be used by all ioat devices so move them from the ioat_rawdev.c file to ioat_common.c, and add the function prototypes to the internal header file.
Signed-off-by: Bruce Richardson <bruce.richard...@intel.com> --- drivers/raw/ioat/ioat_common.c | 76 +++++++++++++++++++++++++++++++++ drivers/raw/ioat/ioat_private.h | 10 +++++ drivers/raw/ioat/ioat_rawdev.c | 75 -------------------------------- 3 files changed, 86 insertions(+), 75 deletions(-) diff --git a/drivers/raw/ioat/ioat_common.c b/drivers/raw/ioat/ioat_common.c index fe293aebf..5f366f009 100644 --- a/drivers/raw/ioat/ioat_common.c +++ b/drivers/raw/ioat/ioat_common.c @@ -4,9 +4,85 @@ #include <rte_rawdev_pmd.h> #include <rte_memzone.h> +#include <rte_string_fns.h> #include "ioat_private.h" +static const char * const xstat_names[] = { + "failed_enqueues", "successful_enqueues", + "copies_started", "copies_completed" +}; + +int +ioat_xstats_get(const struct rte_rawdev *dev, const unsigned int ids[], + uint64_t values[], unsigned int n) +{ + const struct rte_ioat_rawdev *ioat = dev->dev_private; + unsigned int i; + + for (i = 0; i < n; i++) { + switch (ids[i]) { + case 0: values[i] = ioat->xstats.enqueue_failed; break; + case 1: values[i] = ioat->xstats.enqueued; break; + case 2: values[i] = ioat->xstats.started; break; + case 3: values[i] = ioat->xstats.completed; break; + default: values[i] = 0; break; + } + } + return n; +} + +int +ioat_xstats_get_names(const struct rte_rawdev *dev, + struct rte_rawdev_xstats_name *names, + unsigned int size) +{ + unsigned int i; + + RTE_SET_USED(dev); + if (size < RTE_DIM(xstat_names)) + return RTE_DIM(xstat_names); + + for (i = 0; i < RTE_DIM(xstat_names); i++) + strlcpy(names[i].name, xstat_names[i], sizeof(names[i])); + + return RTE_DIM(xstat_names); +} + +int +ioat_xstats_reset(struct rte_rawdev *dev, const uint32_t *ids, uint32_t nb_ids) +{ + struct rte_ioat_rawdev *ioat = dev->dev_private; + unsigned int i; + + if (!ids) { + memset(&ioat->xstats, 0, sizeof(ioat->xstats)); + return 0; + } + + for (i = 0; i < nb_ids; i++) { + switch (ids[i]) { + case 0: + ioat->xstats.enqueue_failed = 0; + break; + case 1: + ioat->xstats.enqueued = 0; + break; + case 2: + ioat->xstats.started = 0; + break; + case 3: + ioat->xstats.completed = 0; + break; + default: + IOAT_PMD_WARN("Invalid xstat id - cannot reset value"); + break; + } + } + + return 0; +} + int idxd_dev_dump(struct rte_rawdev *dev, FILE *f) { diff --git a/drivers/raw/ioat/ioat_private.h b/drivers/raw/ioat/ioat_private.h index 35189b15f..46465e675 100644 --- a/drivers/raw/ioat/ioat_private.h +++ b/drivers/raw/ioat/ioat_private.h @@ -55,6 +55,16 @@ struct idxd_rawdev { } u; }; +int ioat_xstats_get(const struct rte_rawdev *dev, const unsigned int ids[], + uint64_t values[], unsigned int n); + +int ioat_xstats_get_names(const struct rte_rawdev *dev, + struct rte_rawdev_xstats_name *names, + unsigned int size); + +int ioat_xstats_reset(struct rte_rawdev *dev, const uint32_t *ids, + uint32_t nb_ids); + extern int idxd_rawdev_create(const char *name, struct rte_device *dev, const struct idxd_rawdev *idxd, const struct rte_rawdev_ops *ops); diff --git a/drivers/raw/ioat/ioat_rawdev.c b/drivers/raw/ioat/ioat_rawdev.c index e4d39a2ee..e3c98a825 100644 --- a/drivers/raw/ioat/ioat_rawdev.c +++ b/drivers/raw/ioat/ioat_rawdev.c @@ -121,81 +121,6 @@ ioat_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, return 0; } -static const char * const xstat_names[] = { - "failed_enqueues", "successful_enqueues", - "copies_started", "copies_completed" -}; - -static int -ioat_xstats_get(const struct rte_rawdev *dev, const unsigned int ids[], - uint64_t values[], unsigned int n) -{ - const struct rte_ioat_rawdev *ioat = dev->dev_private; - unsigned int i; - - for (i = 0; i < n; i++) { - switch (ids[i]) { - case 0: values[i] = ioat->xstats.enqueue_failed; break; - case 1: values[i] = ioat->xstats.enqueued; break; - case 2: values[i] = ioat->xstats.started; break; - case 3: values[i] = ioat->xstats.completed; break; - default: values[i] = 0; break; - } - } - return n; -} - -static int -ioat_xstats_get_names(const struct rte_rawdev *dev, - struct rte_rawdev_xstats_name *names, - unsigned int size) -{ - unsigned int i; - - RTE_SET_USED(dev); - if (size < RTE_DIM(xstat_names)) - return RTE_DIM(xstat_names); - - for (i = 0; i < RTE_DIM(xstat_names); i++) - strlcpy(names[i].name, xstat_names[i], sizeof(names[i])); - - return RTE_DIM(xstat_names); -} - -static int -ioat_xstats_reset(struct rte_rawdev *dev, const uint32_t *ids, uint32_t nb_ids) -{ - struct rte_ioat_rawdev *ioat = dev->dev_private; - unsigned int i; - - if (!ids) { - memset(&ioat->xstats, 0, sizeof(ioat->xstats)); - return 0; - } - - for (i = 0; i < nb_ids; i++) { - switch (ids[i]) { - case 0: - ioat->xstats.enqueue_failed = 0; - break; - case 1: - ioat->xstats.enqueued = 0; - break; - case 2: - ioat->xstats.started = 0; - break; - case 3: - ioat->xstats.completed = 0; - break; - default: - IOAT_PMD_WARN("Invalid xstat id - cannot reset value"); - break; - } - } - - return 0; -} - extern int ioat_rawdev_test(uint16_t dev_id); static int -- 2.25.1