[dpdk-dev] [PATCH v2 05/10] sched: update the pipe config api implementation

Savinay Dharmappa savinay.dharmappa at intel.com
Thu Sep 10 20:48:32 CEST 2020


Subport profile parameters are fetched from subport profile
table to calculate the subport best effort tc rate.

Signed-off-by: Savinay Dharmappa <savinay.dharmappa at intel.com>
Signed-off-by: Jasvinder Singh <jasvinder.singh at intel.com>
---
 lib/librte_sched/rte_sched.c | 40 +++++++++++++++++++++-------------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
index 8e66d08..9ff67e0 100644
--- a/lib/librte_sched/rte_sched.c
+++ b/lib/librte_sched/rte_sched.c
@@ -1403,6 +1403,7 @@ rte_sched_pipe_config(struct rte_sched_port *port,
 	int32_t pipe_profile)
 {
 	struct rte_sched_subport *s;
+	struct rte_sched_subport_profile *sp;
 	struct rte_sched_pipe *p;
 	struct rte_sched_pipe_profile *params;
 	uint32_t n_subports = subport_id + 1;
@@ -1443,14 +1444,15 @@ rte_sched_pipe_config(struct rte_sched_port *port,
 		return -EINVAL;
 	}
 
+	sp = port->subport_profiles + s->profile;
 	/* Handle the case when pipe already has a valid configuration */
 	p = s->pipe + pipe_id;
 	if (p->tb_time) {
 		params = s->pipe_profiles + p->profile;
 
 		double subport_tc_be_rate =
-			(double) s->tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE]
-			/ (double) s->tc_period;
+		(double)sp->tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE]
+			/ (double) sp->tc_period;
 		double pipe_tc_be_rate =
 			(double) params->tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE]
 			/ (double) params->tc_period;
@@ -1492,8 +1494,8 @@ rte_sched_pipe_config(struct rte_sched_port *port,
 	{
 		/* Subport best effort tc oversubscription */
 		double subport_tc_be_rate =
-			(double) s->tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE]
-			/ (double) s->tc_period;
+		(double)sp->tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE]
+			/ (double) sp->tc_period;
 		double pipe_tc_be_rate =
 			(double) params->tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE]
 			/ (double) params->tc_period;
@@ -2286,11 +2288,11 @@ grinder_credits_update(struct rte_sched_port *port,
 	uint32_t i;
 
 	/* Subport TB */
-	n_periods = (port->time - subport->tb_time) / sp_params->sp_tb_period;
-	subport->tb_credits += n_periods * sp_params->sp_tb_credits_per_period;
+	n_periods = (port->time - subport->tb_time) / sp_params->tb_period;
+	subport->tb_credits += n_periods * sp_params->tb_credits_per_period;
 	subport->tb_credits = RTE_MIN(subport->tb_credits,
-				sp_params->sp_tb_size);
-	subport->tb_time += n_periods * sp_params->sp_tb_period;
+				sp_params->tb_size);
+	subport->tb_time += n_periods * sp_params->tb_period;
 
 	/* Pipe TB */
 	n_periods = (port->time - pipe->tb_time) / params->tb_period;
@@ -2302,9 +2304,9 @@ grinder_credits_update(struct rte_sched_port *port,
 	if (unlikely(port->time >= subport->tc_time)) {
 		for (i = 0; i < RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE; i++)
 			subport->tc_credits[i] =
-					sp_params->sp_tc_credits_per_period[i];
+					sp_params->tc_credits_per_period[i];
 
-		subport->tc_time = port->time + sp_params->sp_tc_period;
+		subport->tc_time = port->time + sp_params->tc_period;
 	}
 
 	/* Pipe TCs */
@@ -2333,17 +2335,17 @@ grinder_tc_ov_credits_update(struct rte_sched_port *port,
 		return subport->tc_ov_wm_max;
 
 	for (i = 0; i < RTE_SCHED_TRAFFIC_CLASS_BE; i++) {
-		tc_ov_consumption[i] = sp_params->sp_tc_credits_per_period[i]
+		tc_ov_consumption[i] = sp_params->tc_credits_per_period[i]
 					-  subport->tc_credits[i];
 		tc_consumption += tc_ov_consumption[i];
 	}
 
 	tc_ov_consumption[RTE_SCHED_TRAFFIC_CLASS_BE] =
-	sp_params->sp_tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE] -
+	sp_params->tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE] -
 		subport->tc_credits[RTE_SCHED_TRAFFIC_CLASS_BE];
 
 	tc_ov_consumption_max =
-	sp_params->sp_tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE] -
+	sp_params->tc_credits_per_period[RTE_SCHED_TRAFFIC_CLASS_BE] -
 			tc_consumption;
 
 	if (tc_ov_consumption[RTE_SCHED_TRAFFIC_CLASS_BE] >
@@ -2374,11 +2376,11 @@ grinder_credits_update(struct rte_sched_port *port,
 	uint32_t i;
 
 	/* Subport TB */
-	n_periods = (port->time - subport->tb_time) / sp_params->sp_tb_period;
-	subport->tb_credits += n_periods * sp_params->sp_tb_credits_per_period;
+	n_periods = (port->time - subport->tb_time) / sp_params->tb_period;
+	subport->tb_credits += n_periods * sp_params->tb_credits_per_period;
 	subport->tb_credits = RTE_MIN(subport->tb_credits,
-				sp_params->sp_tb_size);
-	subport->tb_time += n_periods * sp_params->sp_tb_period;
+				sp_params->tb_size);
+	subport->tb_time += n_periods * sp_params->tb_period;
 
 	/* Pipe TB */
 	n_periods = (port->time - pipe->tb_time) / params->tb_period;
@@ -2393,9 +2395,9 @@ grinder_credits_update(struct rte_sched_port *port,
 
 		for (i = 0; i < RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE; i++)
 			subport->tc_credits[i] =
-				sp_params->sp_tc_credits_per_period[i];
+				sp_params->tc_credits_per_period[i];
 
-		subport->tc_time = port->time + sp_params->sp_tc_period;
+		subport->tc_time = port->time + sp_params->tc_period;
 		subport->tc_ov_period_id++;
 	}
 
-- 
2.7.4



More information about the dev mailing list