From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id CEFE3B440 for ; Thu, 5 Feb 2015 13:43:34 +0100 (CET) Received: from hmsreliant.think-freely.org ([2001:470:8:a08:7aac:c0ff:fec2:933b] helo=localhost) by smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63) (envelope-from ) id 1YJLmN-0005ie-0J; Thu, 05 Feb 2015 07:43:33 -0500 Date: Thu, 5 Feb 2015 07:43:30 -0500 From: Neil Horman To: Stephen Hemminger Message-ID: <20150205124330.GB28355@hmsreliant.think-freely.org> References: <1423116841-19799-4-git-send-email-stephen@networkplumber.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1423116841-19799-4-git-send-email-stephen@networkplumber.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Score: -2.9 (--) X-Spam-Status: No Cc: dev@dpdk.org, Stephen Hemminger Subject: Re: [dpdk-dev] [PATCH v2 4/7] rte_sched: don't clear statistics when read X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Feb 2015 12:43:35 -0000 On Wed, Feb 04, 2015 at 10:13:58PM -0800, Stephen Hemminger wrote: > From: Stephen Hemminger > > Make rte_sched statistics API work like the ethernet statistics API. > Don't auto-clear statistics. > > Signed-off-by: Stephen Hemminger > --- > 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 e9bf18a..3d007e4 100644 > --- a/lib/librte_sched/rte_sched.h > +++ b/lib/librte_sched/rte_sched.h > @@ -317,6 +317,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 > * > @@ -338,6 +353,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); > + Both need to be added to the version map to expose them properly. Neil