From patchwork Thu Jul 11 10:26:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jasvinder Singh X-Patchwork-Id: 56328 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 37B1E1B970; Thu, 11 Jul 2019 12:26:57 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id B6BDB7CBC for ; Thu, 11 Jul 2019 12:26:52 +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:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,478,1557212400"; d="scan'208";a="317641372" 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:50 -0700 From: Jasvinder Singh To: dev@dpdk.org Cc: cristian.dumitrescu@intel.com, Abraham Tovar , Lukasz Krakowiak Date: Thu, 11 Jul 2019 11:26:51 +0100 Message-Id: <20190711102659.59001-4-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 Subject: [dpdk-dev] [PATCH v3 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 34f96a46c..537ef2cbb 100644 --- a/lib/librte_sched/rte_sched.c +++ b/lib/librte_sched/rte_sched.c @@ -180,6 +180,7 @@ struct rte_sched_port { uint32_t frame_overhead; uint16_t qsize[RTE_SCHED_QUEUES_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]; @@ -359,7 +360,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++) { @@ -388,7 +389,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; @@ -656,6 +657,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++) { @@ -1017,7 +1019,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 ae4dfb311..9cccdda41 100644 --- a/lib/librte_sched/rte_sched.h +++ b/lib/librte_sched/rte_sched.h @@ -211,6 +211,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