From: Kamil Chalupnik Date: Wed, 9 May 2018 14:35:03 +0000 (+0200) Subject: bbdev: split queue groups X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=58a695c6ec1c803ef1e4bd9fccfa08040a2ca4d0;p=dpdk.git bbdev: split queue groups Splitting Queue Groups into UL/DL Groups in Turbo Software Driver. They are independent for Decode/Encode. Release note updated accordingly. Signed-off-by: Kamil Chalupnik Acked-by: Amr Mokhtar --- diff --git a/app/test-bbdev/test_bbdev.c b/app/test-bbdev/test_bbdev.c index 10579ea001..5d325b6482 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), diff --git a/doc/guides/rel_notes/release_18_05.rst b/doc/guides/rel_notes/release_18_05.rst index 3d01f39b6b..c41fb479f1 100644 --- a/doc/guides/rel_notes/release_18_05.rst +++ b/doc/guides/rel_notes/release_18_05.rst @@ -400,6 +400,12 @@ ABI Changes ``rte_bbdev_op_cap_turbo_dec`` structure to specify maximal LLR (likelihood ratio) absolute value. +* **BBdev Queue Groups split into UL/DL Groups** + + Queue Groups have been split into UL/DL Groups in Turbo Software Driver. + They are independent for Decode/Encode. ``rte_bbdev_driver_info`` reflects + introduced changes. + Removed Items ------------- diff --git a/drivers/baseband/null/bbdev_null.c b/drivers/baseband/null/bbdev_null.c index 6bc84917a4..e8e541f89e 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 f9fa6dda82..b816a7f5cd 100644 --- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c +++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c @@ -175,7 +175,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 74ecc490a0..28434e0848 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 a227366c60..25ef409f75 100644 --- a/lib/librte_bbdev/rte_bbdev.h +++ b/lib/librte_bbdev/rte_bbdev.h @@ -281,8 +281,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 */