[v3,05/11] sched: improve error log messages
diff mbox series

Message ID 20190711102659.59001-6-jasvinder.singh@intel.com
State Superseded, archived
Headers show
Series
  • sched: feature enhancements
Related show

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation fail Compilation issues

Commit Message

Jasvinder Singh July 11, 2019, 10:26 a.m. UTC
Replace hard-coded numbers for reporting errors with
error messages.

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Signed-off-by: Abraham Tovar <abrahamx.tovar@intel.com>
Signed-off-by: Lukasz Krakowiak <lukaszx.krakowiak@intel.com>
---
 lib/librte_sched/rte_sched.c | 295 ++++++++++++++++++++++++++---------
 1 file changed, 221 insertions(+), 74 deletions(-)

Patch
diff mbox series

diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c
index 0eb25f517..04c6b3f6a 100644
--- a/lib/librte_sched/rte_sched.c
+++ b/lib/librte_sched/rte_sched.c
@@ -272,46 +272,70 @@  pipe_profile_check(struct rte_sched_pipe_params *params,
 	uint32_t i;
 
 	/* Pipe parameters */
-	if (params == NULL)
-		return -10;
+	if (params == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter params \n", __func__);
+		return -EINVAL;
+	}
 
 	/* TB rate: non-zero, not greater than port rate */
 	if (params->tb_rate == 0 ||
-		params->tb_rate > rate)
-		return -11;
+		params->tb_rate > rate) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tb rate \n", __func__);
+		return -EINVAL;
+	}
 
 	/* TB size: non-zero */
-	if (params->tb_size == 0)
-		return -12;
+	if (params->tb_size == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tb size \n", __func__);
+		return -EINVAL;
+	}
 
 	/* TC rate: non-zero, less than pipe rate */
 	for (i = 0; i < RTE_SCHED_TRAFFIC_CLASS_BE; i++) {
 		if ((qsize[i] == 0 && params->tc_rate[i] != 0) ||
 			(qsize[i] != 0 && (params->tc_rate[i] == 0 ||
-			params->tc_rate[i] > params->tb_rate)))
-			return -13;
-
+			params->tc_rate[i] > params->tb_rate))) {
+			RTE_LOG(ERR, SCHED,
+				"%s: Incorrect value for qsize or tc_rate \n", __func__);
+			return -EINVAL;
+		}
 	}
 
-	if (params->tc_rate[RTE_SCHED_TRAFFIC_CLASS_BE] == 0)
-		return -13;
+	if (params->tc_rate[RTE_SCHED_TRAFFIC_CLASS_BE] == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for be traffic class rate \n", __func__);
+		return -EINVAL;
+	}
 
 	/* TC period: non-zero */
-	if (params->tc_period == 0)
-		return -14;
+	if (params->tc_period == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tc period \n", __func__);
+		return -EINVAL;
+	}
 
 #ifdef RTE_SCHED_SUBPORT_TC_OV
 	/* TC3 oversubscription weight: non-zero */
-	if (params->tc_ov_weight == 0)
-		return -15;
+	if (params->tc_ov_weight == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tc ov weight \n", __func__);
+		return -EINVAL;
+	}
 #endif
 
 	/* Queue WRR weights: non-zero */
 	for (i = 0; i < RTE_SCHED_BE_QUEUES_PER_PIPE; i++) {
 		uint32_t qindex = RTE_SCHED_TRAFFIC_CLASS_BE + i;
 		if ((qsize[qindex] != 0 && params->wrr_weights[i] == 0) ||
-			(qsize[qindex] == 0 && params->wrr_weights[i] != 0))
-			return -16;
+			(qsize[qindex] == 0 && params->wrr_weights[i] != 0)) {
+				printf("qindex %u, qsize %u, wrr weights %u \n", qindex, qsize[qindex], params->wrr_weights[i]);
+			RTE_LOG(ERR, SCHED,
+				"%s: Incorrect value for qsize or wrr weight \n", __func__);
+			return -EINVAL;
+		}
 	}
 	return 0;
 }
@@ -321,55 +345,82 @@  rte_sched_port_check_params(struct rte_sched_port_params *params)
 {
 	uint32_t i;
 
-	if (params == NULL)
-		return -1;
+	if (params == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter params \n", __func__);
+		return -EINVAL;
+	}
 
 	/* socket */
-	if (params->socket < 0)
-		return -3;
+	if (params->socket < 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for socket id \n", __func__);
+		return -EINVAL;
+	}
 
 	/* rate */
-	if (params->rate == 0)
-		return -4;
+	if (params->rate == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for rate \n", __func__);
+		return -EINVAL;
+	}
 
 	/* mtu */
-	if (params->mtu == 0)
-		return -5;
+	if (params->mtu == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for mtu \n", __func__);
+		return -EINVAL;
+	}
 
 	/* n_subports_per_port: non-zero, limited to 16 bits, power of 2 */
 	if (params->n_subports_per_port == 0 ||
 	    params->n_subports_per_port > 1u << 16 ||
-	    !rte_is_power_of_2(params->n_subports_per_port))
-		return -6;
+	    !rte_is_power_of_2(params->n_subports_per_port)) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for number of subports \n", __func__);
+		return -EINVAL;
+	}
 
 	/* n_pipes_per_subport: non-zero, power of 2 */
 	if (params->n_pipes_per_subport == 0 ||
-	    !rte_is_power_of_2(params->n_pipes_per_subport))
-		return -7;
+	    !rte_is_power_of_2(params->n_pipes_per_subport)) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for pipes number \n", __func__);
+		return -EINVAL;
+	}
 
-	/* qsize: non-zero, power of 2,
+	/* qsize: if non-zero, power of 2,
 	 * no bigger than 32K (due to 16-bit read/write pointers)
 	 */
 	for (i = 0; i < RTE_SCHED_QUEUES_PER_PIPE; i++) {
 		uint16_t qsize = params->qsize[i];
 		if ((qsize != 0 && !rte_is_power_of_2(qsize)) ||
-			((i == RTE_SCHED_TRAFFIC_CLASS_BE) && (qsize == 0)))
-			return -8;
+			((i == RTE_SCHED_TRAFFIC_CLASS_BE) && (qsize == 0))) {
+			RTE_LOG(ERR, SCHED,
+				"%s: Incorrect value for tc rate \n", __func__);
+			return -EINVAL;
+		}
 	}
 
 	/* pipe_profiles and n_pipe_profiles */
 	if (params->pipe_profiles == NULL ||
 	    params->n_pipe_profiles == 0 ||
-	    params->n_pipe_profiles > params->n_max_pipe_profiles)
-		return -9;
+		 params->n_pipe_profiles > params->n_max_pipe_profiles) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for number of pipe profiles \n", __func__);
+		return -EINVAL;
+	}
 
 	for (i = 0; i < params->n_pipe_profiles; i++) {
 		struct rte_sched_pipe_params *p = params->pipe_profiles + i;
 		int status;
 
 		status = pipe_profile_check(p, params->rate, &params->qsize[0]);
-		if (status != 0)
-			return status;
+		if (status != 0) {
+			RTE_LOG(ERR, SCHED,
+				"%s: Pipe profile check failed(%d) \n", __func__, status);
+			return -EINVAL;
+		}
 	}
 
 	return 0;
@@ -823,16 +874,35 @@  rte_sched_subport_config(struct rte_sched_port *port,
 	uint32_t i, j;
 
 	/* Check user parameters */
-	if (port == NULL ||
-	    subport_id >= port->n_subports_per_port ||
-	    params == NULL)
-		return -1;
+	if (port == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter port \n", __func__);
+		return -EINVAL;
+	}
+
+	if (subport_id >= port->n_subports_per_port) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for subport id \n", __func__);
+		return -EINVAL;
+	}
 
-	if (params->tb_rate == 0 || params->tb_rate > port->rate)
-		return -2;
+	if (params == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter params \n", __func__);
+		return -EINVAL;
+	}
+
+	if (params->tb_rate == 0 || params->tb_rate > port->rate) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tb rate \n", __func__);
+		return -EINVAL;
+	}
 
-	if (params->tb_size == 0)
-		return -3;
+	if (params->tb_size == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tb size \n", __func__);
+		return -EINVAL;
+	}
 
 	for (i = 0, j = 0; i < RTE_SCHED_QUEUES_PER_PIPE; i++) {
 		uint32_t tc_rate = params->tc_rate[j];
@@ -841,19 +911,27 @@  rte_sched_subport_config(struct rte_sched_port *port,
 		if (((qsize == 0) &&
 			((tc_rate != 0) && (j != RTE_SCHED_TRAFFIC_CLASS_BE))) ||
 			((qsize != 0) && (tc_rate == 0)) ||
-			(tc_rate > params->tb_rate))
-			return -3;
-
+			(tc_rate > params->tb_rate)) {
+			RTE_LOG(ERR, SCHED,
+				"%s: Incorrect value for tc rate \n", __func__);
+			return -EINVAL;
+		}
 		if (j < RTE_SCHED_TRAFFIC_CLASS_BE)
 			j++;
 	}
 
 	if (port->qsize[RTE_SCHED_TRAFFIC_CLASS_BE] == 0 ||
-		params->tc_rate[RTE_SCHED_TRAFFIC_CLASS_BE] == 0)
-		return -3;
+		params->tc_rate[RTE_SCHED_TRAFFIC_CLASS_BE] == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tc rate(best effort) \n", __func__);
+		return -EINVAL;
+	}
 
-	if (params->tc_period == 0)
-		return -5;
+	if (params->tc_period == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tc period \n", __func__);
+		return -EINVAL;
+	}
 
 	s = port->subport + subport_id;
 
@@ -918,17 +996,37 @@  rte_sched_pipe_config(struct rte_sched_port *port,
 	profile = (uint32_t) pipe_profile;
 	deactivate = (pipe_profile < 0);
 
-	if (port == NULL ||
-	    subport_id >= port->n_subports_per_port ||
-	    pipe_id >= port->n_pipes_per_subport ||
-	    (!deactivate && profile >= port->n_pipe_profiles))
-		return -1;
+	if (port == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter port \n", __func__);
+		return -EINVAL;
+	}
+
+	if (subport_id >= port->n_subports_per_port) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter subport id \n", __func__);
+		return -EINVAL;
+	}
 
+	if (pipe_id >= port->n_pipes_per_subport) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter pipe id \n", __func__);
+		return -EINVAL;
+	}
+
+	if (!deactivate && profile >= port->n_pipe_profiles) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter pipe profile \n", __func__);
+		return -EINVAL;
+	}
 
 	/* Check that subport configuration is valid */
 	s = port->subport + subport_id;
-	if (s->tb_period == 0)
-		return -2;
+	if (s->tb_period == 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Subport configuration invalid \n", __func__);
+		return -EINVAL;
+	}
 
 	p = port->pipe + (subport_id * port->n_pipes_per_subport + pipe_id);
 
@@ -1015,25 +1113,37 @@  rte_sched_port_pipe_profile_add(struct rte_sched_port *port,
 	int status;
 
 	/* Port */
-	if (port == NULL)
-		return -1;
+	if (port == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter port \n", __func__);
+		return -EINVAL;
+	}
 
 	/* Pipe profiles not exceeds the max limit */
-	if (port->n_pipe_profiles >= port->n_max_pipe_profiles)
-		return -2;
+	if (port->n_pipe_profiles >= port->n_max_pipe_profiles) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Number of pipe profiles exceeds the max limit \n", __func__);
+		return -EINVAL;
+	}
 
 	/* Pipe params */
 	status = pipe_profile_check(params, port->rate, &port->qsize[0]);
-	if (status != 0)
-		return status;
+	if (status != 0) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Pipe profile check failed(%d) \n", __func__, status);
+		return -EINVAL;
+	}
 
 	pp = &port->pipe_profiles[port->n_pipe_profiles];
 	rte_sched_pipe_profile_convert(port, params, pp, port->rate);
 
 	/* Pipe profile not exists */
 	for (i = 0; i < port->n_pipe_profiles; i++)
-		if (memcmp(port->pipe_profiles + i, pp, sizeof(*pp)) == 0)
-			return -3;
+		if (memcmp(port->pipe_profiles + i, pp, sizeof(*pp)) == 0) {
+			RTE_LOG(ERR, SCHED,
+				"%s: Pipe profile doesn't exist \n", __func__);
+			return -EINVAL;
+		}
 
 	/* Pipe profile commit */
 	*pipe_profile_id = port->n_pipe_profiles;
@@ -1101,9 +1211,29 @@  rte_sched_subport_read_stats(struct rte_sched_port *port,
 	struct rte_sched_subport *s;
 
 	/* Check user parameters */
-	if (port == NULL || subport_id >= port->n_subports_per_port ||
-	    stats == NULL || tc_ov == NULL)
-		return -1;
+	if (port == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter port \n", __func__);
+		return -EINVAL;
+	}
+
+	if (subport_id >= port->n_subports_per_port) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for subport id \n", __func__);
+		return -EINVAL;
+	}
+
+	if (stats == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter stats \n", __func__);
+		return -EINVAL;
+	}
+
+	if (tc_ov == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for tc_ov \n", __func__);
+		return -EINVAL;
+	}
 
 	s = port->subport + subport_id;
 
@@ -1127,11 +1257,28 @@  rte_sched_queue_read_stats(struct rte_sched_port *port,
 	struct rte_sched_queue_extra *qe;
 
 	/* Check user parameters */
-	if ((port == NULL) ||
-	    (queue_id >= rte_sched_port_queues_per_port(port)) ||
-		(stats == NULL) ||
-		(qlen == NULL)) {
-		return -1;
+	if (port == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter port \n", __func__);
+		return -EINVAL;
+	}
+
+	if (queue_id >= rte_sched_port_queues_per_port(port)) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for queue id \n", __func__);
+		return -EINVAL;
+	}
+
+	if (stats == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter stats \n", __func__);
+		return -EINVAL;
+	}
+
+	if (qlen == NULL) {
+		RTE_LOG(ERR, SCHED,
+			"%s: Incorrect value for parameter qlen \n", __func__);
+		return -EINVAL;
 	}
 	q = port->queue + queue_id;
 	qe = port->queue_extra + queue_id;