From patchwork Tue Apr 17 14:39:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kamil Chalupnik X-Patchwork-Id: 38330 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com 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 256D38E62; Tue, 17 Apr 2018 16:41:38 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id D288C6D3B for ; Tue, 17 Apr 2018 16:41:36 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Apr 2018 07:41:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,463,1517904000"; d="scan'208";a="48587921" Received: from kchalupx-mobl.ger.corp.intel.com ([10.103.104.151]) by orsmga001.jf.intel.com with ESMTP; 17 Apr 2018 07:41:22 -0700 From: KamilX Chalupnik To: dev@dpdk.org Cc: amr.mokhtar@intel.com, KamilX Chalupnik Date: Tue, 17 Apr 2018 16:39:53 +0200 Message-Id: <20180417143953.22356-1-kamilx.chalupnik@intel.com> X-Mailer: git-send-email 2.9.0.windows.1 In-Reply-To: <20180404140602.9344-4-kamilx.chalupnik@intel.com> References: <20180404140602.9344-4-kamilx.chalupnik@intel.com> Subject: [dpdk-dev] [PATCH v2] baseband/turbo_sw: splitting Queue Groups 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" Splitting Queue Groups into UL/DL Groups in Turbo Software Driver. The are independent for Decode/Encode Signed-off-by: KamilX Chalupnik v2: - logging macros fixed Acked-by: Amr Mokhtar --- app/test-bbdev/test_bbdev.c | 29 +++++++++--------------- drivers/baseband/null/bbdev_null.c | 3 ++- drivers/baseband/turbo_sw/bbdev_turbo_software.c | 3 ++- lib/librte_bbdev/rte_bbdev.c | 13 +++++++++-- lib/librte_bbdev/rte_bbdev.h | 6 +++-- 5 files changed, 30 insertions(+), 24 deletions(-) diff --git a/app/test-bbdev/test_bbdev.c b/app/test-bbdev/test_bbdev.c index 10579ea..a914817 100644 --- a/app/test-bbdev/test_bbdev.c +++ b/app/test-bbdev/test_bbdev.c @@ -273,7 +273,7 @@ test_bbdev_configure_stop_queue(void) /* Valid queue configuration */ ts_params->qconf.queue_size = info.drv.queue_size_lim; - ts_params->qconf.priority = info.drv.max_queue_priority; + ts_params->qconf.priority = info.drv.max_ul_queue_priority; /* Device - started; queue - started */ rte_bbdev_start(dev_id); @@ -413,14 +413,7 @@ test_bbdev_configure_invalid_queue_configure(void) ts_params->qconf.queue_size); ts_params->qconf.queue_size = info.drv.queue_size_lim; - ts_params->qconf.priority = info.drv.max_queue_priority + 1; - TEST_ASSERT_FAIL(rte_bbdev_queue_configure(dev_id, queue_id, - &ts_params->qconf), - "Failed test for rte_bbdev_queue_configure: " - "invalid value qconf.queue_size: %u", - ts_params->qconf.queue_size); - - ts_params->qconf.priority = info.drv.max_queue_priority; + ts_params->qconf.priority = info.drv.max_ul_queue_priority; queue_id = info.num_queues; TEST_ASSERT_FAIL(rte_bbdev_queue_configure(dev_id, queue_id, &ts_params->qconf), @@ -902,12 +895,12 @@ test_bbdev_callback(void) "Failed to callback rgstr for RTE_BBDEV_EVENT_UNKNOWN"); rte_bbdev_pmd_callback_process(dev1, RTE_BBDEV_EVENT_UNKNOWN, NULL); - TEST_ASSERT(event_status == 0, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_UNKNOWN, "Failed test for rte_bbdev_pmd_callback_process " "for RTE_BBDEV_EVENT_UNKNOWN "); rte_bbdev_pmd_callback_process(dev1, RTE_BBDEV_EVENT_ERROR, NULL); - TEST_ASSERT(event_status == 0, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_UNKNOWN, "Failed test for rte_bbdev_pmd_callback_process: " "event RTE_BBDEV_EVENT_ERROR was not registered "); @@ -926,12 +919,12 @@ test_bbdev_callback(void) event_status = -1; rte_bbdev_pmd_callback_process(dev1, RTE_BBDEV_EVENT_UNKNOWN, NULL); - TEST_ASSERT(event_status == 0, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_UNKNOWN, "Failed test for rte_bbdev_pmd_callback_process " "for RTE_BBDEV_EVENT_UNKNOWN "); rte_bbdev_pmd_callback_process(dev1, RTE_BBDEV_EVENT_ERROR, NULL); - TEST_ASSERT(event_status == 1, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_ERROR, "Failed test for rte_bbdev_pmd_callback_process " "for RTE_BBDEV_EVENT_ERROR "); @@ -945,12 +938,12 @@ test_bbdev_callback(void) event_status = -1; rte_bbdev_pmd_callback_process(dev1, RTE_BBDEV_EVENT_UNKNOWN, NULL); - TEST_ASSERT(event_status == 0, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_UNKNOWN, "Failed test for rte_bbdev_pmd_callback_process " "for RTE_BBDEV_EVENT_UNKNOWN "); rte_bbdev_pmd_callback_process(dev1, RTE_BBDEV_EVENT_ERROR, NULL); - TEST_ASSERT(event_status == 0, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_UNKNOWN, "Failed test for rte_bbdev_pmd_callback_process: " "event RTE_BBDEV_EVENT_ERROR was unregistered "); @@ -999,7 +992,7 @@ test_bbdev_callback(void) "for RTE_BBDEV_EVENT_ERROR "); rte_bbdev_pmd_callback_process(dev2, RTE_BBDEV_EVENT_ERROR, NULL); - TEST_ASSERT(event_status == 1, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_ERROR, "Failed test for rte_bbdev_pmd_callback_process in dev2 " "for RTE_BBDEV_EVENT_ERROR "); @@ -1013,7 +1006,7 @@ test_bbdev_callback(void) "in dev 2 "); rte_bbdev_pmd_callback_process(dev2, RTE_BBDEV_EVENT_UNKNOWN, NULL); - TEST_ASSERT(event_status == 0, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_UNKNOWN, "Failed test for rte_bbdev_pmd_callback_process in dev2" " for RTE_BBDEV_EVENT_UNKNOWN "); @@ -1033,7 +1026,7 @@ test_bbdev_callback(void) " for RTE_BBDEV_EVENT_UNKNOWN "); rte_bbdev_pmd_callback_process(dev1, RTE_BBDEV_EVENT_UNKNOWN, NULL); - TEST_ASSERT(event_status == 0, + TEST_ASSERT(event_status == (int) RTE_BBDEV_EVENT_UNKNOWN, "Failed test for rte_bbdev_pmd_callback_process in dev2 " "for RTE_BBDEV_EVENT_UNKNOWN "); diff --git a/drivers/baseband/null/bbdev_null.c b/drivers/baseband/null/bbdev_null.c index 6bc8491..e8e541f 100644 --- a/drivers/baseband/null/bbdev_null.c +++ b/drivers/baseband/null/bbdev_null.c @@ -71,7 +71,8 @@ info_get(struct rte_bbdev *dev, struct rte_bbdev_driver_info *dev_info) dev_info->max_num_queues = internals->max_nb_queues; dev_info->queue_size_lim = RTE_BBDEV_QUEUE_SIZE_LIMIT; dev_info->hardware_accelerated = false; - dev_info->max_queue_priority = 0; + dev_info->max_dl_queue_priority = 0; + dev_info->max_ul_queue_priority = 0; dev_info->default_queue_conf = default_queue_conf; dev_info->capabilities = bbdev_capabilities; dev_info->cpu_flag_reqs = NULL; diff --git a/drivers/baseband/turbo_sw/bbdev_turbo_software.c b/drivers/baseband/turbo_sw/bbdev_turbo_software.c index 8c41ed5..de78e23 100644 --- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c +++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c @@ -169,7 +169,8 @@ info_get(struct rte_bbdev *dev, struct rte_bbdev_driver_info *dev_info) dev_info->max_num_queues = internals->max_nb_queues; dev_info->queue_size_lim = RTE_BBDEV_QUEUE_SIZE_LIMIT; dev_info->hardware_accelerated = false; - dev_info->max_queue_priority = 0; + dev_info->max_dl_queue_priority = 0; + dev_info->max_ul_queue_priority = 0; dev_info->default_queue_conf = default_queue_conf; dev_info->capabilities = bbdev_capabilities; dev_info->cpu_flag_reqs = &cpu_flag; diff --git a/lib/librte_bbdev/rte_bbdev.c b/lib/librte_bbdev/rte_bbdev.c index 74ecc49..28434e0 100644 --- a/lib/librte_bbdev/rte_bbdev.c +++ b/lib/librte_bbdev/rte_bbdev.c @@ -495,11 +495,20 @@ rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id, conf->queue_size, queue_id, dev_id); return -EINVAL; } - if (conf->priority > dev_info.max_queue_priority) { + if (conf->op_type == RTE_BBDEV_OP_TURBO_DEC && + conf->priority > dev_info.max_ul_queue_priority) { rte_bbdev_log(ERR, "Priority (%u) of queue %u of bdev %u must be <= %u", conf->priority, queue_id, dev_id, - dev_info.max_queue_priority); + dev_info.max_ul_queue_priority); + return -EINVAL; + } + if (conf->op_type == RTE_BBDEV_OP_TURBO_ENC && + conf->priority > dev_info.max_dl_queue_priority) { + rte_bbdev_log(ERR, + "Priority (%u) of queue %u of bdev %u must be <= %u", + conf->priority, queue_id, dev_id, + dev_info.max_dl_queue_priority); return -EINVAL; } } diff --git a/lib/librte_bbdev/rte_bbdev.h b/lib/librte_bbdev/rte_bbdev.h index 395acf6..dd3b0be 100644 --- a/lib/librte_bbdev/rte_bbdev.h +++ b/lib/librte_bbdev/rte_bbdev.h @@ -283,8 +283,10 @@ struct rte_bbdev_driver_info { uint32_t queue_size_lim; /** Set if device off-loads operation to hardware */ bool hardware_accelerated; - /** Max value supported by queue priority */ - uint8_t max_queue_priority; + /** Max value supported by queue priority for DL */ + uint8_t max_dl_queue_priority; + /** Max value supported by queue priority for UL */ + uint8_t max_ul_queue_priority; /** Set if device supports per-queue interrupts */ bool queue_intr_supported; /** Minimum alignment of buffers, in bytes */