On Mon, Feb 09, 2015 at 10:48:36PM +0000, Dumitrescu, Cristian wrote: > Hi Stephen, > > What is the reason not to clear statistics on read? Do you have a use-case / > justification for it? > > (BTW, I see you added the reset functions, but was it also your intention to > remove the memset to 0 from the stats read functions? :) ) > > Regards, > Cristian > Its the difference between a hardware and a software interface. Hardware stats are often read-clear, but software hides that, making stats continuous. Exposing it is atypical for a software stack. Neil
> -----Original Message----- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Stephen Hemminger > Sent: Thursday, February 5, 2015 6:14 AM > To: dev at dpdk.org > Cc: Stephen Hemminger > Subject: [dpdk-dev] [PATCH v2 4/7] rte_sched: don't clear statistics when read > > 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 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); > + > /* > * Run-time > * > -- > 2.1.4 > > -------------------------------------------------------------- > Intel Shannon Limited > Registered in Ireland > Registered Office: Collinstown Industrial Park, Leixlip, County Kildare > Registered Number: 308263 > Business address: Dromore House, East Park, Shannon, Co. Clare > > This e-mail and any attachments may contain confidential material for the > sole use of the intended recipient(s). Any review or distribution by others > is strictly prohibited. If you are not the intended recipient, please contact > the sender and delete all copies. > > >