[Accel-config] [PATCH] accel-config: Add API to retrieve wq occupancy attribute

ramesh.thomas at intel.com Wed, 11 Aug 2021 16:22:16 -0400
Newsgroups dev.linux.lists.accel-config
Message-ID <[email protected]>
From: Ramesh Thomas <ramesh.thomas(a)intel.com>

Add API to get wq occupancy

Signed-off-by: Ramesh Thomas <ramesh.thomas(a)intel.com>
---
 accfg/lib/libaccel-config.sym |  5 +++++
 accfg/lib/libaccfg.c          | 12 ++++++++++++
 accfg/libaccel_config.h       |  1 +
 3 files changed, 18 insertions(+)

diff --git a/accfg/lib/libaccel-config.sym b/accfg/lib/libaccel-config.sym
index f44a3ca..7d6b396 100644
--- a/accfg/lib/libaccel-config.sym
+++ b/accfg/lib/libaccel-config.sym
@@ -161,3 +161,8 @@ global:
 	accfg_ctx_get_last_error_group;
 	accfg_ctx_get_last_error_engine;
 } LIBACCFG_9;
+
+LIBACCFG_11 {
+global:
+	accfg_wq_get_occupancy;
+} LIBACCFG_10;
diff --git a/accfg/lib/libaccfg.c b/accfg/lib/libaccfg.c
index 5b63b62..f4fc17e 100644
--- a/accfg/lib/libaccfg.c
+++ b/accfg/lib/libaccfg.c
@@ -2033,6 +2033,18 @@ ACCFG_EXPORT uint64_t accfg_wq_get_max_transfer_size(struct accfg_wq *wq)
 	return wq->max_transfer_size;
 }
 
+ACCFG_EXPORT int accfg_wq_get_occupancy(struct accfg_wq *wq)
+{
+	int dfd;
+	struct accfg_ctx *ctx = accfg_wq_get_ctx(wq);
+
+	dfd = open(wq->wq_path, O_PATH);
+	if (dfd < 0)
+		return -ENXIO;
+
+	return accfg_get_param_long(ctx, dfd, "occupancy");
+}
+
 ACCFG_EXPORT int accfg_wq_get_clients(struct accfg_wq *wq)
 {
 	struct accfg_ctx *ctx = accfg_wq_get_ctx(wq);
diff --git a/accfg/libaccel_config.h b/accfg/libaccel_config.h
index f8b9bf9..92b1da5 100644
--- a/accfg/libaccel_config.h
+++ b/accfg/libaccel_config.h
@@ -277,6 +277,7 @@ uint64_t accfg_wq_get_max_transfer_size(struct accfg_wq *wq);
 int accfg_wq_get_threshold(struct accfg_wq *wq);
 int accfg_wq_get_clients(struct accfg_wq *wq);
 int accfg_wq_get_ats_disable(struct accfg_wq *wq);
+int accfg_wq_get_occupancy(struct accfg_wq *wq);
 int accfg_wq_is_enabled(struct accfg_wq *wq);
 int accfg_wq_set_size(struct accfg_wq *wq, int val);
 int accfg_wq_set_priority(struct accfg_wq *wq, int val);
-- 
2.26.3