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 15164A0471 for ; Fri, 19 Jul 2019 16:18:50 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3AB051B955; Fri, 19 Jul 2019 16:18:30 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 5E5BE374E for ; Fri, 19 Jul 2019 16:18:21 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Jul 2019 07:18:19 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,282,1559545200"; d="scan'208";a="162417177" Received: from silpixa00381635.ir.intel.com (HELO silpixa00381635.ger.corp.intel.com) ([10.237.223.4]) by orsmga008.jf.intel.com with ESMTP; 19 Jul 2019 07:18:19 -0700 From: Jasvinder Singh To: dev@dpdk.org Cc: cristian.dumitrescu@intel.com, Abraham Tovar , Lukasz Krakowiak Date: Fri, 19 Jul 2019 15:18:17 +0100 Message-Id: <20190719141825.101844-4-jasvinder.singh@intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190719141825.101844-1-jasvinder.singh@intel.com> References: <20190717144245.138876-2-jasvinder.singh@intel.com> <20190719141825.101844-1-jasvinder.singh@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v6 03/11] sched: add max pipe profiles config in run time 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" Allow setting the maximum number of pipe profiles in run time. Signed-off-by: Jasvinder Singh Signed-off-by: Abraham Tovar Signed-off-by: Lukasz Krakowiak --- lib/librte_sched/rte_sched.c | 8 +++++--- lib/librte_sched/rte_sched.h | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c index 17d7f833c..e8614ba4c 100644 --- a/lib/librte_sched/rte_sched.c +++ b/lib/librte_sched/rte_sched.c @@ -179,6 +179,7 @@ struct rte_sched_port { uint32_t frame_overhead; uint16_t qsize[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE]; uint32_t n_pipe_profiles; + uint32_t n_max_pipe_profiles; uint32_t pipe_tc3_rate_max; #ifdef RTE_SCHED_RED struct rte_red_config red_config[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE][RTE_COLORS]; @@ -380,7 +381,7 @@ rte_sched_port_check_params(struct rte_sched_port_params *params) /* pipe_profiles and n_pipe_profiles */ if (params->pipe_profiles == NULL || params->n_pipe_profiles == 0 || - params->n_pipe_profiles > RTE_SCHED_PIPE_PROFILES_PER_PORT) + params->n_pipe_profiles > params->n_max_pipe_profiles) return -9; for (i = 0; i < params->n_pipe_profiles; i++) { @@ -409,7 +410,7 @@ rte_sched_port_get_array_base(struct rte_sched_port_params *params, enum rte_sch uint32_t size_queue_extra = n_queues_per_port * sizeof(struct rte_sched_queue_extra); uint32_t size_pipe_profiles - = RTE_SCHED_PIPE_PROFILES_PER_PORT * sizeof(struct rte_sched_pipe_profile); + = params->n_max_pipe_profiles * sizeof(struct rte_sched_pipe_profile); uint32_t size_bmp_array = rte_bitmap_get_memory_footprint(n_queues_per_port); uint32_t size_per_pipe_queue_array, size_queue_array; @@ -686,6 +687,7 @@ rte_sched_port_config(struct rte_sched_port_params *params) port->frame_overhead = params->frame_overhead; memcpy(port->qsize, params->qsize, sizeof(params->qsize)); port->n_pipe_profiles = params->n_pipe_profiles; + port->n_max_pipe_profiles = params->n_max_pipe_profiles; #ifdef RTE_SCHED_RED for (i = 0; i < RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE; i++) { @@ -1037,7 +1039,7 @@ rte_sched_port_pipe_profile_add(struct rte_sched_port *port, return -1; /* Pipe profiles not exceeds the max limit */ - if (port->n_pipe_profiles >= RTE_SCHED_PIPE_PROFILES_PER_PORT) + if (port->n_pipe_profiles >= port->n_max_pipe_profiles) return -2; /* Pipe params */ diff --git a/lib/librte_sched/rte_sched.h b/lib/librte_sched/rte_sched.h index 2b65420d1..d7d4f1767 100644 --- a/lib/librte_sched/rte_sched.h +++ b/lib/librte_sched/rte_sched.h @@ -220,6 +220,8 @@ struct rte_sched_port_params { /**< Pipe profile table. * Every pipe is configured using one of the profiles from this table. */ uint32_t n_pipe_profiles; /**< Profiles in the pipe profile table */ + uint32_t n_max_pipe_profiles; + /**< Max profiles allowed in the pipe profile table */ #ifdef RTE_SCHED_RED struct rte_red_params red_params[RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE][RTE_COLORS]; /**< RED parameters */ #endif -- 2.21.0