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

Signed-off-by: Savinay Dharmappa <savinay.dharma...@intel.com>
Signed-off-by: Jasvinder Singh <jasvinder.si...@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

Reply via email to