bbdev: split queue groups
authorKamil Chalupnik <kamilx.chalupnik@intel.com>
Wed, 9 May 2018 14:35:03 +0000 (16:35 +0200)
committerPablo de Lara <pablo.de.lara.guarch@intel.com>
Thu, 10 May 2018 16:46:20 +0000 (17:46 +0100)
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 <kamilx.chalupnik@intel.com>
Acked-by: Amr Mokhtar <amr.mokhtar@intel.com>
app/test-bbdev/test_bbdev.c
doc/guides/rel_notes/release_18_05.rst
drivers/baseband/null/bbdev_null.c
drivers/baseband/turbo_sw/bbdev_turbo_software.c
lib/librte_bbdev/rte_bbdev.c
lib/librte_bbdev/rte_bbdev.h

index 10579ea..5d325b6 100644 (file)
@@ -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),
index 3d01f39..c41fb47 100644 (file)
@@ -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
 -------------
index 6bc8491..e8e541f 100644 (file)
@@ -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;
index f9fa6dd..b816a7f 100644 (file)
@@ -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;
index 74ecc49..28434e0 100644 (file)
@@ -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;
                }
        }
index a227366..25ef409 100644 (file)
@@ -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 */