[dpdk-dev] [PATCH 4/7] rte_sched: don't clear statistics when read
Stephen Hemminger
stephen at networkplumber.org
Sun Feb 1 11:03:48 CET 2015
From: Stephen Hemminger <shemming at brocade.com>
Make rte_sched statistics API work like the ethernet statistics API.
Don't auto-clear statistics.
Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
lib/librte_sched/rte_sched.c | 30 ++++++++++++++++++++++++++++++
lib/librte_sched/rte_sched.h | 29 +++++++++++++++++++++++++++++
2 files changed, 59 insertions(+)
diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
index 8cb8bf1..d891e50 100644
--- a/lib/librte_sched/rte_sched.c
+++ b/lib/librte_sched/rte_sched.c
@@ -935,6 +935,21 @@ rte_sched_subport_read_stats(struct rte_sched_port *port,
}
int
+rte_sched_subport_stats_reset(struct rte_sched_port *port,
+ uint32_t subport_id)
+{
+ struct rte_sched_subport *s;
+
+ /* Check user parameters */
+ if (port == NULL || subport_id >= port->n_subports_per_port)
+ return -1;
+
+ s = port->subport + subport_id;
+ memset(&s->stats, 0, sizeof(struct rte_sched_subport_stats));
+ return 0;
+}
+
+int
rte_sched_queue_read_stats(struct rte_sched_port *port,
uint32_t queue_id,
struct rte_sched_queue_stats *stats,
@@ -963,6 +978,21 @@ rte_sched_queue_read_stats(struct rte_sched_port *port,
return 0;
}
+int
+rte_sched_queue_stats_reset(struct rte_sched_port *port,
+ uint32_t queue_id)
+{
+ struct rte_sched_queue_extra *qe;
+
+ /* Check user parameters */
+ if (port == NULL || queue_id >= rte_sched_port_queues_per_port(port))
+ return -1;
+
+ qe = port->queue_extra + queue_id;
+ memset(&qe->stats, 0, sizeof(struct rte_sched_queue_stats));
+ return 0;
+}
+
static inline uint32_t
rte_sched_port_qindex(struct rte_sched_port *port, uint32_t subport, uint32_t pipe, uint32_t traffic_class, uint32_t queue)
{
diff --git a/lib/librte_sched/rte_sched.h b/lib/librte_sched/rte_sched.h
index d5a1d5b..64b4dd6 100644
--- a/lib/librte_sched/rte_sched.h
+++ b/lib/librte_sched/rte_sched.h
@@ -316,6 +316,21 @@ rte_sched_subport_read_stats(struct rte_sched_port *port,
struct rte_sched_subport_stats *stats,
uint32_t *tc_ov);
+
+/**
+ * Hierarchical scheduler subport statistics reset
+ *
+ * @param port
+ * Handle to port scheduler instance
+ * @param subport_id
+ * Subport ID
+ * @return
+ * 0 upon success, error code otherwise
+ */
+int
+rte_sched_subport_stats_reset(struct rte_sched_port *port,
+ uint32_t subport_id);
+
/**
* Hierarchical scheduler queue statistics read
*
@@ -337,6 +352,20 @@ rte_sched_queue_read_stats(struct rte_sched_port *port,
struct rte_sched_queue_stats *stats,
uint16_t *qlen);
+/**
+ * Hierarchical scheduler queue statistics reset
+ *
+ * @param port
+ * Handle to port scheduler instance
+ * @param queue_id
+ * Queue ID within port scheduler
+ * @return
+ * 0 upon success, error code otherwise
+ */
+int
+rte_sched_queue_stats_reset(struct rte_sched_port *port,
+ uint32_t queue_id);
+
/*
* Run-time
*
--
2.1.4
More information about the dev
mailing list