Add zsda compressdev stats interface implementation.<br /> <br />Signed-off-by: Hanxiao Li <li.hanxiao@zte.com.cn> <br />---<br /> drivers/common/zsda/meson.build       |  1 +<br /> drivers/common/zsda/zsda_qp_common.c  | 68 +++++++++++++++++++++++++++<br /> drivers/common/zsda/zsda_qp_common.h  | 17 +++++++<br /> drivers/compress/zsda/zsda_comp_pmd.c | 24 +++++++++-<br /> 4 files changed, 108 insertions(+), 2 deletions(-)<br /> create mode 100644 drivers/common/zsda/zsda_qp_common.c<br /> <br />diff --git a/drivers/common/zsda/meson.build b/drivers/common/zsda/meson.build<br />index 6ee2a68f4b..6e6d5ab006 100644<br />--- a/drivers/common/zsda/meson.build<br />+++ b/drivers/common/zsda/meson.build<br />@@ -12,6 +12,7 @@ sources += files(<br />         'zsda_device.c',<br />         'zsda_logs.c',<br />         'zsda_qp.c',<br />+        'zsda_qp_common.c',<br />         )<br />  <br /> zsda_compress = true<br />diff --git a/drivers/common/zsda/zsda_qp_common.c b/drivers/common/zsda/zsda_qp_common.c<br />new file mode 100644<br />index 0000000000..9e61f96132<br />--- /dev/null<br />+++ b/drivers/common/zsda/zsda_qp_common.c<br />@@ -0,0 +1,68 @@<br />+/* SPDX-License-Identifier: BSD-3-Clause<br />+ * Copyright(c) 2024 ZTE Corporation<br />+ */<br />+<br />+#include "zsda_qp_common.h" <br />+<br />+void<br />+zsda_stats_get(void **queue_pairs, const uint32_t nb_queue_pairs,<br />+          struct zsda_qp_stat *stats)<br />+{<br />+    enum zsda_service_type type;<br />+    uint32_t i;<br />+    struct zsda_qp *qp;<br />+<br />+    if ((stats == NULL) || (queue_pairs == NULL)) {<br />+        ZSDA_LOG(ERR, "Failed! stats or queue_pairs is NULL");<br />+        return;<br />+    }<br />+<br />+    for (i = 0; i < nb_queue_pairs; i++) {<br />+        qp = queue_pairs[i];<br />+<br />+        if (qp == NULL) {<br />+            ZSDA_LOG(ERR, "Failed! queue_pairs[i] is NULL");<br />+            break;<br />+        }<br />+<br />+        for (type = 0; type < ZSDA_SERVICE_INVALID; type++) {<br />+            if (qp->srv[type].used) {<br />+                stats->enqueued_count +=<br />+                    qp->srv[type].stats.enqueued_count;<br />+                stats->dequeued_count +=<br />+                    qp->srv[type].stats.dequeued_count;<br />+                stats->enqueue_err_count +=<br />+                    qp->srv[type].stats.enqueue_err_count;<br />+                stats->dequeue_err_count +=<br />+                    qp->srv[type].stats.dequeue_err_count;<br />+            }<br />+        }<br />+    }<br />+}<br />+<br />+void<br />+zsda_stats_reset(void **queue_pairs, const uint32_t nb_queue_pairs)<br />+{<br />+    enum zsda_service_type type;<br />+    uint32_t i;<br />+    struct zsda_qp *qp;<br />+<br />+    if (queue_pairs == NULL) {<br />+        ZSDA_LOG(ERR, "Failed! queue_pairs is NULL");<br />+        return;<br />+    }<br />+<br />+    for (i = 0; i < nb_queue_pairs; i++) {<br />+        qp = queue_pairs[i];<br />+<br />+        if (qp == NULL) {<br />+            ZSDA_LOG(ERR, "Failed! queue_pairs[i] is NULL");<br />+            break;<br />+        }<br />+        for (type = 0; type < ZSDA_MAX_SERVICES; type++) {<br />+            if (qp->srv[type].used)<br />+                memset(&(qp->srv[type].stats), 0,<br />+                       sizeof(struct zsda_qp_stat));<br />+        }<br />+    }<br />+}<br />diff --git a/drivers/common/zsda/zsda_qp_common.h b/drivers/common/zsda/zsda_qp_common.h<br />index 550411dbc4..3108827764 100644<br />--- a/drivers/common/zsda/zsda_qp_common.h<br />+++ b/drivers/common/zsda/zsda_qp_common.h<br />@@ -80,10 +80,23 @@ struct zsda_queue {<br />     uint16_t sid;<br /> };<br />  <br />+struct zsda_qp_stat {<br />+    /**< Count of all operations enqueued */<br />+    uint64_t enqueued_count;<br />+    /**< Count of all operations dequeued */<br />+    uint64_t dequeued_count;<br />+<br />+    /**< Total error count on operations enqueued */<br />+    uint64_t enqueue_err_count;<br />+    /**< Total error count on operations dequeued */<br />+    uint64_t dequeue_err_count;<br />+};<br />+<br /> struct qp_srv {<br />     bool used;<br />     struct zsda_queue tx_q;<br />     struct zsda_queue rx_q;<br />+    struct zsda_qp_stat stats;<br />     struct rte_mempool *op_cookie_pool;<br />     void **op_cookies;<br />     uint16_t nb_descriptors;<br />@@ -93,4 +106,8 @@ struct zsda_qp {<br />     struct qp_srv srv[ZSDA_MAX_SERVICES];<br /> };<br />  <br />+void zsda_stats_get(void **queue_pairs, const uint32_t nb_queue_pairs,<br />+            struct zsda_qp_stat *stats);<br />+void zsda_stats_reset(void **queue_pairs, const uint32_t nb_queue_pairs);<br />+<br /> #endif /* _ZSDA_QP_COMMON_H_ */<br />diff --git a/drivers/compress/zsda/zsda_comp_pmd.c b/drivers/compress/zsda/zsda_comp_pmd.c<br />index 07c03a8d13..f1d20e245e 100644<br />--- a/drivers/compress/zsda/zsda_comp_pmd.c<br />+++ b/drivers/compress/zsda/zsda_comp_pmd.c<br />@@ -129,6 +129,26 @@ zsda_comp_dev_info_get(struct rte_compressdev *dev,<br />     }<br /> }<br />  <br />+static void<br />+zsda_comp_stats_get(struct rte_compressdev *dev,<br />+            struct rte_compressdev_stats *stats)<br />+{<br />+    struct zsda_qp_stat stats_info = {0};<br />+<br />+    zsda_stats_get(dev->data->queue_pairs, dev->data->nb_queue_pairs,<br />+               &stats_info);<br />+    stats->enqueued_count = stats_info.enqueued_count;<br />+    stats->dequeued_count = stats_info.dequeued_count;<br />+    stats->enqueue_err_count = stats_info.enqueue_err_count;<br />+    stats->dequeue_err_count = stats_info.dequeue_err_count;<br />+}<br />+<br />+static void<br />+zsda_comp_stats_reset(struct rte_compressdev *dev)<br />+{<br />+    zsda_stats_reset(dev->data->queue_pairs, dev->data->nb_queue_pairs);<br />+}<br />+<br /> static struct rte_compressdev_ops compress_zsda_ops = {<br />  <br />     .dev_configure = zsda_comp_dev_config,<br />@@ -137,8 +157,8 @@ static struct rte_compressdev_ops compress_zsda_ops = {<br />     .dev_close = zsda_comp_dev_close,<br />     .dev_infos_get = zsda_comp_dev_info_get,<br />  <br />-    .stats_get = NULL,<br />-    .stats_reset = NULL,<br />+    .stats_get = zsda_comp_stats_get,<br />+    .stats_reset = zsda_comp_stats_reset,<br />     .queue_pair_setup = NULL,<br />     .queue_pair_release = NULL,<br />  <br />--  <br />2.27.0<br />