From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E2ADCA00E6 for ; Thu, 11 Jul 2019 12:27:37 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 93BD21B9B0; Thu, 11 Jul 2019 12:27:01 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 3F5D431FC for ; Thu, 11 Jul 2019 12:26:56 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jul 2019 03:26:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,478,1557212400"; d="scan'208";a="317641389" Received: from silpixa00381635.ir.intel.com (HELO silpixa00381635.ger.corp.intel.com) ([10.237.223.4]) by orsmga004.jf.intel.com with ESMTP; 11 Jul 2019 03:26:54 -0700 From: Jasvinder Singh To: dev@dpdk.org Cc: cristian.dumitrescu@intel.com, Abraham Tovar , Lukasz Krakowiak Date: Thu, 11 Jul 2019 11:26:53 +0100 Message-Id: <20190711102659.59001-6-jasvinder.singh@intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190711102659.59001-1-jasvinder.singh@intel.com> References: <20190625153217.24301-2-jasvinder.singh@intel.com> <20190711102659.59001-1-jasvinder.singh@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v3 05/11] sched: improve error log messages X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Replace hard-coded numbers for reporting errors with error messages. Signed-off-by: Jasvinder Singh Signed-off-by: Abraham Tovar Signed-off-by: Lukasz Krakowiak --- lib/librte_sched/rte_sched.c | 295 ++++++++++++++++++++++++++--------- 1 file changed, 221 insertions(+), 74 deletions(-) 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, ¶ms->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; -- 2.21.0