summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <stephen@networkplumber.org>2015-07-16 14:34:32 -0700
committerThomas Monjalon <thomas.monjalon@6wind.com>2015-07-17 00:33:44 +0200
commit041f312da5c8aec4de13635b7677e5fa80fea46b (patch)
treec695b0e6b86877881c249361bd1319bc12994eb5
parent0198848a47f5216f3fe43782b90b2e2a4fb6bda4 (diff)
downloaddpdk-041f312da5c8aec4de13635b7677e5fa80fea46b.zip
dpdk-041f312da5c8aec4de13635b7677e5fa80fea46b.tar.gz
dpdk-041f312da5c8aec4de13635b7677e5fa80fea46b.tar.xz
sched: make RED optional at runtime
Want to be able to build with RTE_SCHED_RED enabled but allow disabling RED on a per-queue basis at runtime. RED is disabled unless min/max thresholds set. Signed-off-by: Stephen Hemmminger <stephen@networkplumber.org> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
-rw-r--r--lib/librte_sched/rte_sched.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
index 95dee27..3b5acd1 100644
--- a/lib/librte_sched/rte_sched.c
+++ b/lib/librte_sched/rte_sched.c
@@ -636,6 +636,12 @@ rte_sched_port_config(struct rte_sched_port_params *params)
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_port *port, struct rte_mbuf *pkt, uint3
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;