All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] rte_sched: make RED optional at runtime
@ 2014-12-09 16:40 Stephen Hemminger
  2014-12-09 16:41 ` [PATCH 3/4] rte_sched: don't clear statistics when read Stephen Hemminger
  2014-12-09 16:42 ` [PATCH 4/4] rte_sched: don't put tabs in log messages Stephen Hemminger
  0 siblings, 2 replies; 3+ messages in thread
From: Stephen Hemminger @ 2014-12-09 16:40 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

We want to be able to build with RTE_SCHED_RED enabled but
allow disabling RED on a per-queue basis at runtime. This is
handled by allowing RED min/max to be zero to indicate that
RED is not being used.

Signed-off-by: Stephen Hemminger <stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>

--- a/lib/librte_sched/rte_sched.c	2014-12-08 09:28:20.782545529 -0800
+++ b/lib/librte_sched/rte_sched.c	2014-12-08 09:28:20.782545529 -0800
@@ -636,6 +636,12 @@ rte_sched_port_config(struct rte_sched_p
 		uint32_t j;
 
 		for (j = 0; j < e_RTE_METER_COLORS; j++) {
+			/* if min/max are both zero, then RED is disabled */
+			if ((params->red_params[i][j].min_th |
+			     params->red_params[i][j].max_th) == 0) {
+				continue;
+			}
+
 			if (rte_red_config_init(&port->red_config[i][j],
 				params->red_params[i][j].wq_log2,
 				params->red_params[i][j].min_th,
@@ -1069,6 +1075,9 @@ rte_sched_port_red_drop(struct rte_sched
 	color = rte_sched_port_pkt_read_color(pkt);
 	red_cfg = &port->red_config[tc_index][color];
 
+	if ( (red_cfg->min_th | red_cfg->max_th) == 0)
+		return 0;
+
 	qe = port->queue_extra + qindex;
 	red = &qe->red;
 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 3/4] rte_sched: don't clear statistics when read
  2014-12-09 16:40 [PATCH 1/4] rte_sched: make RED optional at runtime Stephen Hemminger
@ 2014-12-09 16:41 ` Stephen Hemminger
  2014-12-09 16:42 ` [PATCH 4/4] rte_sched: don't put tabs in log messages Stephen Hemminger
  1 sibling, 0 replies; 3+ messages in thread
From: Stephen Hemminger @ 2014-12-09 16:41 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

Make rte_sched statistics API work like the ethernet statistics API.
Don't auto-clear statistics when read.

Signed-off-by: Stephen Hemminger <stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>

--- a/lib/librte_sched/rte_sched.c	2014-12-08 09:29:49.014821607 -0800
+++ b/lib/librte_sched/rte_sched.c	2014-12-08 09:35:45.568568267 -0800
@@ -924,9 +924,8 @@ rte_sched_subport_read_stats(struct rte_
 	}
 	s = port->subport + subport_id;
 
-	/* Copy subport stats and clear */
-	memcpy(stats, &s->stats, sizeof(struct rte_sched_subport_stats));
-	memset(&s->stats, 0, sizeof(struct rte_sched_subport_stats));
+	/* Copy subport stats */
+	*stats = s->stats;
 
 	/* Subport TC ovesubscription status */
 	*tc_ov = s->tc_ov;
@@ -935,6 +934,21 @@ rte_sched_subport_read_stats(struct rte_
 }
 
 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,
@@ -953,9 +967,8 @@ rte_sched_queue_read_stats(struct rte_sc
 	q = port->queue + queue_id;
 	qe = port->queue_extra + queue_id;
 
-	/* Copy queue stats and clear */
-	memcpy(stats, &qe->stats, sizeof(struct rte_sched_queue_stats));
-	memset(&qe->stats, 0, sizeof(struct rte_sched_queue_stats));
+	/* Copy queue stats */
+	*stats = qe->stats;
 
 	/* Queue length */
 	*qlen = q->qw - q->qr;
@@ -963,6 +976,21 @@ rte_sched_queue_read_stats(struct rte_sc
 	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)
 {
--- a/lib/librte_sched/rte_sched.h	2014-12-08 09:29:49.014821607 -0800
+++ b/lib/librte_sched/rte_sched.h	2014-12-08 09:30:29.426977482 -0800
@@ -312,6 +312,21 @@ rte_sched_subport_read_stats(struct rte_
 	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
  *
@@ -333,6 +348,20 @@ rte_sched_queue_read_stats(struct rte_sc
 	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
  *

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 4/4] rte_sched: don't put tabs in log messages
  2014-12-09 16:40 [PATCH 1/4] rte_sched: make RED optional at runtime Stephen Hemminger
  2014-12-09 16:41 ` [PATCH 3/4] rte_sched: don't clear statistics when read Stephen Hemminger
@ 2014-12-09 16:42 ` Stephen Hemminger
  1 sibling, 0 replies; 3+ messages in thread
From: Stephen Hemminger @ 2014-12-09 16:42 UTC (permalink / raw)
  To: dev-VfR2kkLFssw

syslog does not like tabs in log messages; tab gets translated to #011

Signed-off-by: Stephen Hemminger <stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>


--- a/lib/librte_sched/rte_sched.c	2014-12-08 09:37:08.741006405 -0800
+++ b/lib/librte_sched/rte_sched.c	2014-12-08 09:37:56.641264631 -0800
@@ -495,10 +495,10 @@ rte_sched_port_log_pipe_profile(struct r
 	struct rte_sched_pipe_profile *p = port->pipe_profiles + i;
 
 	RTE_LOG(INFO, SCHED, "Low level config for pipe profile %u:\n"
-		"\tToken bucket: period = %u, credits per period = %u, size = %u\n"
-		"\tTraffic classes: period = %u, credits per period = [%u, %u, %u, %u]\n"
-		"\tTraffic class 3 oversubscription: weight = %hhu\n"
-		"\tWRR cost: [%hhu, %hhu, %hhu, %hhu], [%hhu, %hhu, %hhu, %hhu], [%hhu, %hhu, %hhu, %hhu], [%hhu, %hhu, %hhu, %hhu]\n",
+		"    Token bucket: period = %u, credits per period = %u, size = %u\n"
+		"    Traffic classes: period = %u, credits per period = [%u, %u, %u, %u]\n"
+		"    Traffic class 3 oversubscription: weight = %hhu\n"
+		"    WRR cost: [%hhu, %hhu, %hhu, %hhu], [%hhu, %hhu, %hhu, %hhu], [%hhu, %hhu, %hhu, %hhu], [%hhu, %hhu, %hhu, %hhu]\n",
 		i,
 
 		/* Token bucket */
@@ -716,9 +716,9 @@ rte_sched_port_log_subport_config(struct
 	struct rte_sched_subport *s = port->subport + i;
 
 	RTE_LOG(INFO, SCHED, "Low level config for subport %u:\n"
-		"\tToken bucket: period = %u, credits per period = %u, size = %u\n"
-		"\tTraffic classes: period = %u, credits per period = [%u, %u, %u, %u]\n"
-		"\tTraffic class 3 oversubscription: wm min = %u, wm max = %u\n",
+		"    Token bucket: period = %u, credits per period = %u, size = %u\n"
+		"    Traffic classes: period = %u, credits per period = [%u, %u, %u, %u]\n"
+		"    Traffic class 3 oversubscription: wm min = %u, wm max = %u\n",
 		i,
 
 		/* Token bucket */

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-12-09 16:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-09 16:40 [PATCH 1/4] rte_sched: make RED optional at runtime Stephen Hemminger
2014-12-09 16:41 ` [PATCH 3/4] rte_sched: don't clear statistics when read Stephen Hemminger
2014-12-09 16:42 ` [PATCH 4/4] rte_sched: don't put tabs in log messages Stephen Hemminger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.