[dpdk-dev] [PATCH v2] baseband/turbo_sw: offload cost measurement test

2018-04-17 Thread KamilX Chalupnik
New test created to measure offload cost.
Changes were introduced in API, turbo software driver
and test application.

Signed-off-by: KamilX Chalupnik 

v2:
- logging macros reverted

---
 app/test-bbdev/test_bbdev_perf.c | 333 ++-
 drivers/baseband/turbo_sw/bbdev_turbo_software.c |  83 --
 lib/librte_bbdev/rte_bbdev.h |   4 +
 3 files changed, 329 insertions(+), 91 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 00f3b08..be2e20c 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -83,6 +83,28 @@ struct thread_params {
struct test_op_params *op_params;
 };
 
+/* Stores time statistics */
+struct test_time_stats {
+   /* Stores software enqueue total working time */
+   uint64_t enq_sw_tot_time;
+   /* Stores minimum value of software enqueue working time */
+   uint64_t enq_sw_min_time;
+   /* Stores maximum value of software enqueue working time */
+   uint64_t enq_sw_max_time;
+   /* Stores turbo enqueue total working time */
+   uint64_t enq_tur_tot_time;
+   /* Stores minimum value of turbo enqueue working time */
+   uint64_t enq_tur_min_time;
+   /* Stores maximum value of turbo enqueue working time */
+   uint64_t enq_tur_max_time;
+   /* Stores dequeue total working time */
+   uint64_t deq_tot_time;
+   /* Stores minimum value of dequeue working time */
+   uint64_t deq_min_time;
+   /* Stores maximum value of dequeue working time */
+   uint64_t deq_max_time;
+};
+
 typedef int (test_case_function)(struct active_device *ad,
struct test_op_params *op_params);
 
@@ -1104,7 +1126,6 @@ dequeue_event_callback(uint16_t dev_id,
double in_len;
 
struct thread_params *tp = cb_arg;
-
RTE_SET_USED(ret_param);
queue_id = tp->queue_id;
 
@@ -1649,20 +1670,21 @@ throughput_test(struct active_device *ad,
 }
 
 static int
-operation_latency_test_dec(struct rte_mempool *mempool,
+latency_test_dec(struct rte_mempool *mempool,
struct test_buffers *bufs, struct rte_bbdev_dec_op *ref_op,
int vector_mask, uint16_t dev_id, uint16_t queue_id,
const uint16_t num_to_process, uint16_t burst_sz,
-   uint64_t *total_time)
+   uint64_t *total_time, uint64_t *min_time, uint64_t *max_time)
 {
int ret = TEST_SUCCESS;
uint16_t i, j, dequeued;
struct rte_bbdev_dec_op *ops_enq[MAX_BURST], *ops_deq[MAX_BURST];
-   uint64_t start_time = 0;
+   uint64_t start_time = 0, last_time = 0;
 
for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
uint16_t enq = 0, deq = 0;
bool first_time = true;
+   last_time = 0;
 
if (unlikely(num_to_process - dequeued < burst_sz))
burst_sz = num_to_process - dequeued;
@@ -1692,11 +1714,15 @@ operation_latency_test_dec(struct rte_mempool *mempool,
deq += rte_bbdev_dequeue_dec_ops(dev_id, queue_id,
&ops_deq[deq], burst_sz - deq);
if (likely(first_time && (deq > 0))) {
-   *total_time += rte_rdtsc_precise() - start_time;
+   last_time = rte_rdtsc_precise() - start_time;
first_time = false;
}
} while (unlikely(burst_sz != deq));
 
+   *max_time = RTE_MAX(*max_time, last_time);
+   *min_time = RTE_MIN(*min_time, last_time);
+   *total_time += last_time;
+
if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
ret = validate_dec_op(ops_deq, burst_sz, ref_op,
vector_mask);
@@ -1711,20 +1737,21 @@ operation_latency_test_dec(struct rte_mempool *mempool,
 }
 
 static int
-operation_latency_test_enc(struct rte_mempool *mempool,
+latency_test_enc(struct rte_mempool *mempool,
struct test_buffers *bufs, struct rte_bbdev_enc_op *ref_op,
uint16_t dev_id, uint16_t queue_id,
const uint16_t num_to_process, uint16_t burst_sz,
-   uint64_t *total_time)
+   uint64_t *total_time, uint64_t *min_time, uint64_t *max_time)
 {
int ret = TEST_SUCCESS;
uint16_t i, j, dequeued;
struct rte_bbdev_enc_op *ops_enq[MAX_BURST], *ops_deq[MAX_BURST];
-   uint64_t start_time = 0;
+   uint64_t start_time = 0, last_time = 0;
 
for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
uint16_t enq = 0, deq = 0;
bool first_time = true;
+   last_time = 0;
 
if (unlikely(num_to_process - dequeued < burst_sz))
burst_sz = num_to_process - 

[dpdk-dev] [PATCH v2] baseband/turbo_sw: optimization of turbo software driver

2018-04-17 Thread KamilX Chalupnik
Optimization of Turbo Software driver:
- resource-hungry piece of code removed or optimized
- validation of decoder/encoder parameters put under debug flug

Signed-off-by: KamilX Chalupnik 

v2:
- logging macros fixed

---
 drivers/baseband/turbo_sw/bbdev_turbo_software.c | 170 ++-
 lib/librte_bbdev/rte_bbdev_op.h  |  18 ++-
 2 files changed, 122 insertions(+), 66 deletions(-)

diff --git a/drivers/baseband/turbo_sw/bbdev_turbo_software.c 
b/drivers/baseband/turbo_sw/bbdev_turbo_software.c
index 2a65d46..8c41ed5 100644
--- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c
+++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c
@@ -33,12 +33,6 @@ static int bbdev_turbo_sw_logtype;
rte_bbdev_log(DEBUG, RTE_STR(__LINE__) ":%s() " fmt, __func__, \
##__VA_ARGS__)
 
-/* Number of columns in sub-block interleaver (36.212, section 5.1.4.1.1) */
-#define C_SUBBLOCK (32)
-#define MAX_TB_SIZE (391656)
-#define MAX_CB_SIZE (6144)
-#define MAX_KW (18528)
-
 /* private data structure */
 struct bbdev_private {
unsigned int max_nb_queues;  /**< Max number of queues */
@@ -91,7 +85,7 @@ compute_idx(uint16_t k)
 {
int32_t result = 0;
 
-   if (k < 40 || k > MAX_CB_SIZE)
+   if (k < RTE_BBDEV_MIN_CB_SIZE || k > RTE_BBDEV_MAX_CB_SIZE)
return -1;
 
if (k > 2048) {
@@ -235,7 +229,8 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
return -ENAMETOOLONG;
}
q->enc_out = rte_zmalloc_socket(name,
-   ((MAX_TB_SIZE >> 3) + 3) * sizeof(*q->enc_out) * 3,
+   ((RTE_BBDEV_MAX_TB_SIZE >> 3) + 3) *
+   sizeof(*q->enc_out) * 3,
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q->enc_out == NULL) {
rte_bbdev_log(ERR,
@@ -254,7 +249,7 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
return -ENAMETOOLONG;
}
q->enc_in = rte_zmalloc_socket(name,
-   (MAX_CB_SIZE >> 3) * sizeof(*q->enc_in),
+   (RTE_BBDEV_MAX_CB_SIZE >> 3) * sizeof(*q->enc_in),
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q->enc_in == NULL) {
rte_bbdev_log(ERR,
@@ -272,7 +267,7 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
return -ENAMETOOLONG;
}
q->ag = rte_zmalloc_socket(name,
-   MAX_CB_SIZE * 10 * sizeof(*q->ag),
+   RTE_BBDEV_MAX_CB_SIZE * 10 * sizeof(*q->ag),
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q->ag == NULL) {
rte_bbdev_log(ERR,
@@ -309,7 +304,7 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
return -ENAMETOOLONG;
}
q->deint_input = rte_zmalloc_socket(name,
-   MAX_KW * sizeof(*q->deint_input),
+   RTE_BBDEV_MAX_KW * sizeof(*q->deint_input),
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q->deint_input == NULL) {
rte_bbdev_log(ERR,
@@ -328,7 +323,7 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
return -ENAMETOOLONG;
}
q->deint_output = rte_zmalloc_socket(NULL,
-   MAX_KW * sizeof(*q->deint_output),
+   RTE_BBDEV_MAX_KW * sizeof(*q->deint_output),
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q->deint_output == NULL) {
rte_bbdev_log(ERR,
@@ -347,7 +342,7 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
return -ENAMETOOLONG;
}
q->adapter_output = rte_zmalloc_socket(NULL,
-   MAX_CB_SIZE * 6 * sizeof(*q->adapter_output),
+   RTE_BBDEV_MAX_CB_SIZE * 6 * sizeof(*q->adapter_output),
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q->adapter_output == NULL) {
rte_bbdev_log(ERR,
@@ -396,6 +391,7 @@ static const struct rte_bbdev_ops pmd_ops = {
.queue_release = q_release
 };
 
+#ifdef RTE_LIBRTE_BBDEV_DEBUG
 /* Checks if the encoder input buffer is correct.
  * Returns 0 if it's valid, -1 otherwise.
  */
@@ -415,15 +411,17 @@ is_enc_input_valid(const uint16_t k, const int32_t k_idx,
return -1;
}
 
-   if (k > MAX_CB_SIZE) {
+   if (k > RTE_BBDEV_MAX_CB_SIZE) {
rte_bbdev_log(ERR, "CB size (%u) is too big, max: %d",
-   k, MAX_CB_SIZE);
+   k, RTE_BBDEV_MAX_CB_SIZE);
return -1;
}
 
return 0;
 }
+#endif
 
+#ifdef RTE_LIBRTE_BBDEV_DEBUG
 /* Checks if the decoder input buffer is correct.
  * Returns 0 if it's valid, -1 otherwise.
  */

[dpdk-dev] [PATCH v2] baseband/turbo_sw: splitting Queue Groups

2018-04-17 Thread KamilX Chalupnik
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

---
 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 =

[dpdk-dev] [PATCH v2] baseband/turbo_sw: update Turbo Software driver

2018-04-17 Thread KamilX Chalupnik
Update Turbo Software driver for Wireless Baseband Device:
- support for optional CRC overlap in decode processing implemented
- function scaling input LLR values to specific range [-16, 16] added
- sizes of the internal buffers used by decoding were increased due to
  problem with memory for large test vectors
- new test vectors to check device capabilities added

Signed-off-by: KamilX Chalupnik 

v2:
- logging macros fixed

---
 app/test-bbdev/Makefile|  2 +
 app/test-bbdev/test_bbdev_perf.c   | 44 ++-
 app/test-bbdev/test_bbdev_vector.c |  2 +
 .../test_vectors/turbo_enc_c1_k40_r0_e1190_rm.data | 36 
 .../test_vectors/turbo_enc_c1_k40_r0_e1194_rm.data | 36 
 .../test_vectors/turbo_enc_c1_k40_r0_e1196_rm.data | 36 
 .../test_vectors/turbo_enc_c1_k40_r0_e272_rm.data  | 33 +++
 drivers/baseband/turbo_sw/bbdev_turbo_software.c   | 64 +++---
 lib/librte_bbdev/rte_bbdev_op.h| 10 +++-
 9 files changed, 241 insertions(+), 22 deletions(-)
 create mode 100644 
app/test-bbdev/test_vectors/turbo_enc_c1_k40_r0_e1190_rm.data
 create mode 100644 
app/test-bbdev/test_vectors/turbo_enc_c1_k40_r0_e1194_rm.data
 create mode 100644 
app/test-bbdev/test_vectors/turbo_enc_c1_k40_r0_e1196_rm.data
 create mode 100644 app/test-bbdev/test_vectors/turbo_enc_c1_k40_r0_e272_rm.data

diff --git a/app/test-bbdev/Makefile b/app/test-bbdev/Makefile
index 9aedd77..6da0c8e 100644
--- a/app/test-bbdev/Makefile
+++ b/app/test-bbdev/Makefile
@@ -20,4 +20,6 @@ SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev.c
 SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_perf.c
 SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_vector.c
 
+LDLIBS += -lm
+
 include $(RTE_SDK)/mk/rte.app.mk
diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index be2e20c..812787c 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -4,6 +4,7 @@
 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -631,10 +632,32 @@ allocate_buffers_on_socket(struct rte_bbdev_op_data 
**buffers, const int len,
return (*buffers == NULL) ? TEST_FAILED : TEST_SUCCESS;
 }
 
+static void
+limit_input_llr_val_range(struct rte_bbdev_op_data *input_ops,
+   const uint16_t n, const int8_t max_llr_modulus)
+{
+   uint16_t i, byte_idx;
+
+   for (i = 0; i < n; ++i) {
+   struct rte_mbuf *m = input_ops[i].data;
+   while (m != NULL) {
+   int8_t *llr = rte_pktmbuf_mtod_offset(m, int8_t *,
+   input_ops[i].offset);
+   for (byte_idx = 0; byte_idx < input_ops[i].length;
+   ++byte_idx)
+   llr[byte_idx] = round((double)max_llr_modulus *
+   llr[byte_idx] / INT8_MAX);
+
+   m = m->next;
+   }
+   }
+}
+
 static int
 fill_queue_buffers(struct test_op_params *op_params,
struct rte_mempool *in_mp, struct rte_mempool *hard_out_mp,
struct rte_mempool *soft_out_mp, uint16_t queue_id,
+   const struct rte_bbdev_op_cap *capabilities,
uint16_t min_alignment, const int socket_id)
 {
int ret;
@@ -671,6 +694,10 @@ fill_queue_buffers(struct test_op_params *op_params,
"Couldn't init rte_bbdev_op_data structs");
}
 
+   if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC)
+   limit_input_llr_val_range(*queue_ops[DATA_INPUT], n,
+   capabilities->cap.turbo_dec.max_llr_modulus);
+
return 0;
 }
 
@@ -1017,6 +1044,7 @@ run_test_case_on_device(test_case_function 
*test_case_func, uint8_t dev_id,
struct active_device *ad;
unsigned int burst_sz = get_burst_sz();
enum rte_bbdev_op_type op_type = test_vector.op_type;
+   const struct rte_bbdev_op_cap *capabilities = NULL;
 
ad = &active_devs[dev_id];
 
@@ -1049,9 +1077,20 @@ run_test_case_on_device(test_case_function 
*test_case_func, uint8_t dev_id,
goto fail;
}
 
-   if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC)
+   if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC) {
+   /* Find Decoder capabilities */
+   const struct rte_bbdev_op_cap *cap = info.drv.capabilities;
+   while (cap->type != RTE_BBDEV_OP_NONE) {
+   if (cap->type == RTE_BBDEV_OP_TURBO_DEC) {
+   capabilities = cap;
+   break;
+   }
+   }
+   TEST_ASSERT_NOT_NULL(capabilities,
+   "Couldn't find Decoder capabilities");
+
create_reference_dec_op(op_param

[dpdk-dev] [PATCH v2] app/bbdev: remove improper WARNING printouts

2018-04-18 Thread KamilX Chalupnik
Improper WARNING printouts in BBDev Test Application removed

Signed-off-by: KamilX Chalupnik 

v2:
- apply patch failure fixed

---
 app/test-bbdev/test_bbdev_perf.c   |  2 +-
 app/test-bbdev/test_bbdev_vector.c | 12 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 00f3b08..84a5393 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -138,7 +138,7 @@ check_dev_cap(const struct rte_bbdev_info *dev_info)
!(cap->capability_flags &
RTE_BBDEV_TURBO_SOFT_OUTPUT)) {
printf(
-   "WARNING: Device \"%s\" does not 
support soft output - soft output flags will be ignored.\n",
+   "INFO: Device \"%s\" does not support 
soft output - soft output flags will be ignored.\n",
dev_info->dev_name);
clear_soft_out_cap(
&test_vector.turbo_dec.op_flags);
diff --git a/app/test-bbdev/test_bbdev_vector.c 
b/app/test-bbdev/test_bbdev_vector.c
index addef05..0f19912 100644
--- a/app/test-bbdev/test_bbdev_vector.c
+++ b/app/test-bbdev/test_bbdev_vector.c
@@ -642,7 +642,7 @@ check_decoder_llr_spec(struct test_bbdev_vector *vector)
!(turbo_dec->op_flags &
RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN)) {
printf(
-   "WARNING: input LLR sign formalism was not specified 
and will be set to negative LLR for '1' bit\n");
+   "INFO: input LLR sign formalism was not specified and 
will be set to negative LLR for '1' bit\n");
turbo_dec->op_flags |= RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN;
}
 
@@ -661,7 +661,7 @@ check_decoder_llr_spec(struct test_bbdev_vector *vector)
!(turbo_dec->op_flags &
RTE_BBDEV_TURBO_NEG_LLR_1_BIT_SOFT_OUT)) {
printf(
-   "WARNING: soft output LLR sign formalism was not 
specified and will be set to negative LLR for '1' bit\n");
+   "INFO: soft output LLR sign formalism was not specified 
and will be set to negative LLR for '1' bit\n");
turbo_dec->op_flags |=
RTE_BBDEV_TURBO_NEG_LLR_1_BIT_SOFT_OUT;
}
@@ -722,7 +722,7 @@ check_decoder(struct test_bbdev_vector *vector)
}
if (!(mask & TEST_BBDEV_VF_RV_INDEX))
printf(
-   "WARNING: rv_index was not specified in vector file and 
will be set to 0\n");
+   "INFO: rv_index was not specified in vector file and 
will be set to 0\n");
if (!(mask & TEST_BBDEV_VF_ITER_MIN))
printf(
"WARNING: iter_min was not specified in vector file and 
will be set to 0\n");
@@ -742,7 +742,7 @@ check_decoder(struct test_bbdev_vector *vector)
} else if (!(turbo_dec->op_flags & RTE_BBDEV_TURBO_MAP_DEC) &&
mask & TEST_BBDEV_VF_NUM_MAPS) {
printf(
-   "WARNING: RTE_BBDEV_TURBO_MAP_DEC was not set in vector 
file and num_maps will be set to 0\n");
+   "INFO: RTE_BBDEV_TURBO_MAP_DEC was not set in vector 
file and num_maps will be set to 0\n");
turbo_dec->num_maps = 0;
}
if (!(mask & TEST_BBDEV_VF_EXPECTED_STATUS))
@@ -827,10 +827,10 @@ check_encoder(struct test_bbdev_vector *vector)
}
if (!(mask & TEST_BBDEV_VF_RV_INDEX))
printf(
-   "WARNING: rv_index was not specified in vector file and 
will be set to 0\n");
+   "INFO: rv_index was not specified in vector file and 
will be set to 0\n");
if (!(mask & TEST_BBDEV_VF_OP_FLAGS))
printf(
-   "WARNING: op_flags was not specified in vector file and 
capabilities will not be validated\n");
+   "INFO: op_flags was not specified in vector file and 
capabilities will not be validated\n");
if (!(mask & TEST_BBDEV_VF_EXPECTED_STATUS))
printf(
"WARNING: expected_status was not specified in vector 
file and will be set to 0\n");
-- 
2.5.5

--
Intel Research and Development Ireland Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263


This e-mail and any attachments may contain confidential material for the sole
use of the intended recipient(s). Any review or distribution by others is
strictly prohibited. If you are not the intended recipient, please contact the
sender and delete all copies.



[dpdk-dev] [PATCH] baseband/turbo_sw: optimization of turbo software driver

2018-04-04 Thread KamilX Chalupnik
From: "Chalupnik, KamilX" 

Optimization of Turbo Software driver:
- resource-hungry piece of code removed or optimized
- validation of decoder/encoder parameters put under debug flag

Signed-off-by: KamilX Chalupnik 
---
 drivers/baseband/turbo_sw/bbdev_turbo_software.c | 264 +--
 lib/librte_bbdev/rte_bbdev_op.h  |  18 +-
 2 files changed, 172 insertions(+), 110 deletions(-)

diff --git a/drivers/baseband/turbo_sw/bbdev_turbo_software.c 
b/drivers/baseband/turbo_sw/bbdev_turbo_software.c
index 70691f3..0d3b00f 100644
--- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c
+++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c
@@ -21,12 +21,6 @@
 
 #define DRIVER_NAME turbo_sw
 
-/* Number of columns in sub-block interleaver (36.212, section 5.1.4.1.1) */
-#define C_SUBBLOCK (32)
-#define MAX_TB_SIZE (391656)
-#define MAX_CB_SIZE (6144)
-#define MAX_KW (18528)
-
 /* private data structure */
 struct bbdev_private {
unsigned int max_nb_queues;  /**< Max number of queues */
@@ -47,6 +41,13 @@ static const char * const turbo_sw_valid_params[] = {
TURBO_SW_SOCKET_ID_ARG
 };
 
+/* Turbo SW PMD logging ID */
+static int turbosw_pmd_logtype;
+
+/* Helper macro for logging */
+#define turbosw_pmd_log(level, fmt, ...) \
+   rte_log(RTE_LOG_ ## level, turbosw_pmd_logtype, fmt "\n", ##__VA_ARGS__)
+
 /* queue */
 struct turbo_sw_queue {
/* Ring for processed (encoded/decoded) operations which are ready to
@@ -79,7 +80,7 @@ compute_idx(uint16_t k)
 {
int32_t result = 0;
 
-   if (k < 40 || k > MAX_CB_SIZE)
+   if (k < RTE_BBDEV_MIN_CB_SIZE || k > RTE_BBDEV_MAX_CB_SIZE)
return -1;
 
if (k > 2048) {
@@ -169,7 +170,7 @@ info_get(struct rte_bbdev *dev, struct 
rte_bbdev_driver_info *dev_info)
dev_info->cpu_flag_reqs = &cpu_flag;
dev_info->min_alignment = 64;
 
-   rte_bbdev_log_debug("got device info from %u\n", dev->data->dev_id);
+   turbosw_pmd_log(DEBUG, "got device info from %u\n", dev->data->dev_id);
 }
 
 /* Release queue */
@@ -191,7 +192,7 @@ q_release(struct rte_bbdev *dev, uint16_t q_id)
dev->data->queues[q_id].queue_private = NULL;
}
 
-   rte_bbdev_log_debug("released device queue %u:%u",
+   turbosw_pmd_log(DEBUG, "released device queue %u:%u",
dev->data->dev_id, q_id);
return 0;
 }
@@ -209,7 +210,7 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
q = rte_zmalloc_socket(RTE_STR(DRIVER_NAME), sizeof(*q),
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q == NULL) {
-   rte_bbdev_log(ERR, "Failed to allocate queue memory");
+   turbosw_pmd_log(ERR, "Failed to allocate queue memory");
return -ENOMEM;
}
 
@@ -217,16 +218,17 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
ret = snprintf(name, RTE_RING_NAMESIZE, 
RTE_STR(DRIVER_NAME)"_enc_out%u:%u",
dev->data->dev_id, q_id);
if ((ret < 0) || (ret >= (int)RTE_RING_NAMESIZE)) {
-   rte_bbdev_log(ERR,
+   turbosw_pmd_log(ERR,
"Creating queue name for device %u queue %u 
failed",
dev->data->dev_id, q_id);
return -ENAMETOOLONG;
}
q->enc_out = rte_zmalloc_socket(name,
-   ((MAX_TB_SIZE >> 3) + 3) * sizeof(*q->enc_out) * 3,
+   ((RTE_BBDEV_MAX_TB_SIZE >> 3) + 3) *
+   sizeof(*q->enc_out) * 3,
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q->enc_out == NULL) {
-   rte_bbdev_log(ERR,
+   turbosw_pmd_log(ERR,
"Failed to allocate queue memory for %s", name);
goto free_q;
}
@@ -236,16 +238,16 @@ q_setup(struct rte_bbdev *dev, uint16_t q_id,
RTE_STR(DRIVER_NAME)"_enc_in%u:%u", dev->data->dev_id,
q_id);
if ((ret < 0) || (ret >= (int)RTE_RING_NAMESIZE)) {
-   rte_bbdev_log(ERR,
+   turbosw_pmd_log(ERR,
"Creating queue name for device %u queue %u 
failed",
dev->data->dev_id, q_id);
return -ENAMETOOLONG;
}
q->enc_in = rte_zmalloc_socket(name,
-   (MAX_CB_SIZE >> 3) * sizeof(*q->enc_in),
+   (RTE_BBDEV_MAX_CB_SIZE >> 3) * sizeof(*q->enc_in),
RTE_CACHE_LINE_SIZE, queue_conf->socket);
if (q->enc_in == NULL) {
-   rte_bbdev_log(ERR,
+   tur

[dpdk-dev] [PATCH] baseband/turbo_sw: offload cost measurement test

2018-04-04 Thread KamilX Chalupnik
From: "Chalupnik, KamilX" 

New test created to measure offload cost.
Changes were introduced in API, turbo software driver
and test application

Signed-off-by: KamilX Chalupnik 
---
 app/test-bbdev/test_bbdev_perf.c | 333 ++-
 drivers/baseband/turbo_sw/bbdev_turbo_software.c | 102 ---
 lib/librte_bbdev/rte_bbdev.h |   4 +
 3 files changed, 333 insertions(+), 106 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 00f3b08..be2e20c 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -83,6 +83,28 @@ struct thread_params {
struct test_op_params *op_params;
 };
 
+/* Stores time statistics */
+struct test_time_stats {
+   /* Stores software enqueue total working time */
+   uint64_t enq_sw_tot_time;
+   /* Stores minimum value of software enqueue working time */
+   uint64_t enq_sw_min_time;
+   /* Stores maximum value of software enqueue working time */
+   uint64_t enq_sw_max_time;
+   /* Stores turbo enqueue total working time */
+   uint64_t enq_tur_tot_time;
+   /* Stores minimum value of turbo enqueue working time */
+   uint64_t enq_tur_min_time;
+   /* Stores maximum value of turbo enqueue working time */
+   uint64_t enq_tur_max_time;
+   /* Stores dequeue total working time */
+   uint64_t deq_tot_time;
+   /* Stores minimum value of dequeue working time */
+   uint64_t deq_min_time;
+   /* Stores maximum value of dequeue working time */
+   uint64_t deq_max_time;
+};
+
 typedef int (test_case_function)(struct active_device *ad,
struct test_op_params *op_params);
 
@@ -1104,7 +1126,6 @@ dequeue_event_callback(uint16_t dev_id,
double in_len;
 
struct thread_params *tp = cb_arg;
-
RTE_SET_USED(ret_param);
queue_id = tp->queue_id;
 
@@ -1649,20 +1670,21 @@ throughput_test(struct active_device *ad,
 }
 
 static int
-operation_latency_test_dec(struct rte_mempool *mempool,
+latency_test_dec(struct rte_mempool *mempool,
struct test_buffers *bufs, struct rte_bbdev_dec_op *ref_op,
int vector_mask, uint16_t dev_id, uint16_t queue_id,
const uint16_t num_to_process, uint16_t burst_sz,
-   uint64_t *total_time)
+   uint64_t *total_time, uint64_t *min_time, uint64_t *max_time)
 {
int ret = TEST_SUCCESS;
uint16_t i, j, dequeued;
struct rte_bbdev_dec_op *ops_enq[MAX_BURST], *ops_deq[MAX_BURST];
-   uint64_t start_time = 0;
+   uint64_t start_time = 0, last_time = 0;
 
for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
uint16_t enq = 0, deq = 0;
bool first_time = true;
+   last_time = 0;
 
if (unlikely(num_to_process - dequeued < burst_sz))
burst_sz = num_to_process - dequeued;
@@ -1692,11 +1714,15 @@ operation_latency_test_dec(struct rte_mempool *mempool,
deq += rte_bbdev_dequeue_dec_ops(dev_id, queue_id,
&ops_deq[deq], burst_sz - deq);
if (likely(first_time && (deq > 0))) {
-   *total_time += rte_rdtsc_precise() - start_time;
+   last_time = rte_rdtsc_precise() - start_time;
first_time = false;
}
} while (unlikely(burst_sz != deq));
 
+   *max_time = RTE_MAX(*max_time, last_time);
+   *min_time = RTE_MIN(*min_time, last_time);
+   *total_time += last_time;
+
if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
ret = validate_dec_op(ops_deq, burst_sz, ref_op,
vector_mask);
@@ -1711,20 +1737,21 @@ operation_latency_test_dec(struct rte_mempool *mempool,
 }
 
 static int
-operation_latency_test_enc(struct rte_mempool *mempool,
+latency_test_enc(struct rte_mempool *mempool,
struct test_buffers *bufs, struct rte_bbdev_enc_op *ref_op,
uint16_t dev_id, uint16_t queue_id,
const uint16_t num_to_process, uint16_t burst_sz,
-   uint64_t *total_time)
+   uint64_t *total_time, uint64_t *min_time, uint64_t *max_time)
 {
int ret = TEST_SUCCESS;
uint16_t i, j, dequeued;
struct rte_bbdev_enc_op *ops_enq[MAX_BURST], *ops_deq[MAX_BURST];
-   uint64_t start_time = 0;
+   uint64_t start_time = 0, last_time = 0;
 
for (i = 0, dequeued = 0; dequeued < num_to_process; ++i) {
uint16_t enq = 0, deq = 0;
bool first_time = true;
+   last_time = 0;
 
if (unlikely(num_to_process - dequeued < burst_sz))
burst_sz = num_to_

[dpdk-dev] [PATCH] baseband/turbo_sw: splitting Queue Groups

2018-04-04 Thread KamilX Chalupnik
From: "Chalupnik, KamilX" 

Splitting Queue Groups into UL/DL Groups in Turbo Software
Driver. The are independent for Decode/Encode

Signed-off-by: KamilX Chalupnik 
---
 app/test-bbdev/test_bbdev.c  | 29 
 drivers/baseband/null/bbdev_null.c   | 35 +++-
 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, 44 insertions(+), 42 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(even

[dpdk-dev] [PATCH] baseband/turbo_sw: update Turbo Software driver

2018-04-04 Thread KamilX Chalupnik
From: "Chalupnik, KamilX" 

Update Turbo Software driver for Wireless Baseband Device:
- support for optional CRC overlap in decode processing implemented
- function scaling input LLR values to specific range [-16, 16] added
- sizes of the internal buffers used by decoding were increased due to
  problem with memory for large test vectors
- new test vectors to check device capabilities added

Signed-off-by: KamilX Chalupnik 
---
 app/test-bbdev/Makefile|   2 +
 app/test-bbdev/test_bbdev_perf.c   |  44 +-
 app/test-bbdev/test_bbdev_vector.c |   2 +
 .../test_vectors/turbo_enc_c1_k40_r0_e1190_rm.data |  36 +
 .../test_vectors/turbo_enc_c1_k40_r0_e1194_rm.data |  36 +
 .../test_vectors/turbo_enc_c1_k40_r0_e1196_rm.data |  36 +
 .../test_vectors/turbo_enc_c1_k40_r0_e272_rm.data  |  33 
 drivers/baseband/turbo_sw/bbdev_turbo_software.c   | 171 -
 lib/librte_bbdev/rte_bbdev_op.h|  10 +-
 9 files changed, 297 insertions(+), 73 deletions(-)
 create mode 100644 
app/test-bbdev/test_vectors/turbo_enc_c1_k40_r0_e1190_rm.data
 create mode 100644 
app/test-bbdev/test_vectors/turbo_enc_c1_k40_r0_e1194_rm.data
 create mode 100644 
app/test-bbdev/test_vectors/turbo_enc_c1_k40_r0_e1196_rm.data
 create mode 100644 app/test-bbdev/test_vectors/turbo_enc_c1_k40_r0_e272_rm.data

diff --git a/app/test-bbdev/Makefile b/app/test-bbdev/Makefile
index 9aedd77..6da0c8e 100644
--- a/app/test-bbdev/Makefile
+++ b/app/test-bbdev/Makefile
@@ -20,4 +20,6 @@ SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev.c
 SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_perf.c
 SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_vector.c
 
+LDLIBS += -lm
+
 include $(RTE_SDK)/mk/rte.app.mk
diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index be2e20c..812787c 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -4,6 +4,7 @@
 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -631,10 +632,32 @@ allocate_buffers_on_socket(struct rte_bbdev_op_data 
**buffers, const int len,
return (*buffers == NULL) ? TEST_FAILED : TEST_SUCCESS;
 }
 
+static void
+limit_input_llr_val_range(struct rte_bbdev_op_data *input_ops,
+   const uint16_t n, const int8_t max_llr_modulus)
+{
+   uint16_t i, byte_idx;
+
+   for (i = 0; i < n; ++i) {
+   struct rte_mbuf *m = input_ops[i].data;
+   while (m != NULL) {
+   int8_t *llr = rte_pktmbuf_mtod_offset(m, int8_t *,
+   input_ops[i].offset);
+   for (byte_idx = 0; byte_idx < input_ops[i].length;
+   ++byte_idx)
+   llr[byte_idx] = round((double)max_llr_modulus *
+   llr[byte_idx] / INT8_MAX);
+
+   m = m->next;
+   }
+   }
+}
+
 static int
 fill_queue_buffers(struct test_op_params *op_params,
struct rte_mempool *in_mp, struct rte_mempool *hard_out_mp,
struct rte_mempool *soft_out_mp, uint16_t queue_id,
+   const struct rte_bbdev_op_cap *capabilities,
uint16_t min_alignment, const int socket_id)
 {
int ret;
@@ -671,6 +694,10 @@ fill_queue_buffers(struct test_op_params *op_params,
"Couldn't init rte_bbdev_op_data structs");
}
 
+   if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC)
+   limit_input_llr_val_range(*queue_ops[DATA_INPUT], n,
+   capabilities->cap.turbo_dec.max_llr_modulus);
+
return 0;
 }
 
@@ -1017,6 +1044,7 @@ run_test_case_on_device(test_case_function 
*test_case_func, uint8_t dev_id,
struct active_device *ad;
unsigned int burst_sz = get_burst_sz();
enum rte_bbdev_op_type op_type = test_vector.op_type;
+   const struct rte_bbdev_op_cap *capabilities = NULL;
 
ad = &active_devs[dev_id];
 
@@ -1049,9 +1077,20 @@ run_test_case_on_device(test_case_function 
*test_case_func, uint8_t dev_id,
goto fail;
}
 
-   if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC)
+   if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC) {
+   /* Find Decoder capabilities */
+   const struct rte_bbdev_op_cap *cap = info.drv.capabilities;
+   while (cap->type != RTE_BBDEV_OP_NONE) {
+   if (cap->type == RTE_BBDEV_OP_TURBO_DEC) {
+   capabilities = cap;
+   break;
+   }
+   }
+   TEST_ASSERT_NOT_NULL(capabilities,
+   "Couldn't find Decoder capabilities");
+
create_reference_dec_op(op_params->ref_dec_op);
-   else if 

[dpdk-dev] [PATCH] app/bbdev: remove improper WARNING printouts

2018-04-04 Thread KamilX Chalupnik
From: "Chalupnik, KamilX" 

Improper WARNING printouts in BBDev Test Application removed

Signed-off-by: KamilX Chalupnik 
---
 app/test-bbdev/test_bbdev_perf.c   |  3 ++-
 app/test-bbdev/test_bbdev_vector.c | 12 ++--
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 812787c..c48d60e 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -161,7 +161,7 @@ check_dev_cap(const struct rte_bbdev_info *dev_info)
!(cap->capability_flags &
RTE_BBDEV_TURBO_SOFT_OUTPUT)) {
printf(
-   "WARNING: Device \"%s\" does not 
support soft output - soft output flags will be ignored.\n",
+   "INFO: Device \"%s\" does not support 
soft output - soft output flags will be ignored.\n",
dev_info->dev_name);
clear_soft_out_cap(
&test_vector.turbo_dec.op_flags);
@@ -1166,6 +1166,7 @@ dequeue_event_callback(uint16_t dev_id,
double in_len;
 
struct thread_params *tp = cb_arg;
+
RTE_SET_USED(ret_param);
queue_id = tp->queue_id;
 
diff --git a/app/test-bbdev/test_bbdev_vector.c 
b/app/test-bbdev/test_bbdev_vector.c
index a37e35f..324f2c4 100644
--- a/app/test-bbdev/test_bbdev_vector.c
+++ b/app/test-bbdev/test_bbdev_vector.c
@@ -644,7 +644,7 @@ check_decoder_llr_spec(struct test_bbdev_vector *vector)
!(turbo_dec->op_flags &
RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN)) {
printf(
-   "WARNING: input LLR sign formalism was not specified 
and will be set to negative LLR for '1' bit\n");
+   "INFO: input LLR sign formalism was not specified and 
will be set to negative LLR for '1' bit\n");
turbo_dec->op_flags |= RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN;
}
 
@@ -663,7 +663,7 @@ check_decoder_llr_spec(struct test_bbdev_vector *vector)
!(turbo_dec->op_flags &
RTE_BBDEV_TURBO_NEG_LLR_1_BIT_SOFT_OUT)) {
printf(
-   "WARNING: soft output LLR sign formalism was not 
specified and will be set to negative LLR for '1' bit\n");
+   "INFO: soft output LLR sign formalism was not specified 
and will be set to negative LLR for '1' bit\n");
turbo_dec->op_flags |=
RTE_BBDEV_TURBO_NEG_LLR_1_BIT_SOFT_OUT;
}
@@ -724,7 +724,7 @@ check_decoder(struct test_bbdev_vector *vector)
}
if (!(mask & TEST_BBDEV_VF_RV_INDEX))
printf(
-   "WARNING: rv_index was not specified in vector file and 
will be set to 0\n");
+   "INFO: rv_index was not specified in vector file and 
will be set to 0\n");
if (!(mask & TEST_BBDEV_VF_ITER_MIN))
printf(
"WARNING: iter_min was not specified in vector file and 
will be set to 0\n");
@@ -744,7 +744,7 @@ check_decoder(struct test_bbdev_vector *vector)
} else if (!(turbo_dec->op_flags & RTE_BBDEV_TURBO_MAP_DEC) &&
mask & TEST_BBDEV_VF_NUM_MAPS) {
printf(
-   "WARNING: RTE_BBDEV_TURBO_MAP_DEC was not set in vector 
file and num_maps will be set to 0\n");
+   "INFO: RTE_BBDEV_TURBO_MAP_DEC was not set in vector 
file and num_maps will be set to 0\n");
turbo_dec->num_maps = 0;
}
if (!(mask & TEST_BBDEV_VF_EXPECTED_STATUS))
@@ -829,10 +829,10 @@ check_encoder(struct test_bbdev_vector *vector)
}
if (!(mask & TEST_BBDEV_VF_RV_INDEX))
printf(
-   "WARNING: rv_index was not specified in vector file and 
will be set to 0\n");
+   "INFO: rv_index was not specified in vector file and 
will be set to 0\n");
if (!(mask & TEST_BBDEV_VF_OP_FLAGS))
printf(
-   "WARNING: op_flags was not specified in vector file and 
capabilities will not be validated\n");
+   "INFO: op_flags was not specified in vector file and 
capabilities will not be validated\n");
if (!(mask & TEST_BBDEV_VF_EXPECTED_STATUS))
printf(
"WARNING: expected_status was not specified in vector 
file and will be set to 0\n");
-- 
2.5.5

-

[dpdk-dev] [PATCH] app/bbdev: dynamic lib support

2018-04-04 Thread KamilX Chalupnik
From: "Chalupnik, KamilX" 

Support for linking with dynamic library added in
Baseband Device test application

Signed-off-by: KamilX Chalupnik 
---
 app/test-bbdev/Makefile| 4 
 doc/guides/tools/testbbdev.rst | 7 +++
 2 files changed, 11 insertions(+)

diff --git a/app/test-bbdev/Makefile b/app/test-bbdev/Makefile
index 6da0c8e..26c9a4b 100644
--- a/app/test-bbdev/Makefile
+++ b/app/test-bbdev/Makefile
@@ -22,4 +22,8 @@ SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_vector.c
 
 LDLIBS += -lm
 
+ifeq ($(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW),y)
+LDLIBS += -lrte_pmd_bbdev_turbo_sw
+endif
+
 include $(RTE_SDK)/mk/rte.app.mk
diff --git a/doc/guides/tools/testbbdev.rst b/doc/guides/tools/testbbdev.rst
index 2ccc646..8a13cbd 100644
--- a/doc/guides/tools/testbbdev.rst
+++ b/doc/guides/tools/testbbdev.rst
@@ -36,6 +36,13 @@ The user must have all libraries, modules, updates and 
compilers installed
 in the system prior to this, as described in the earlier chapters in this
 Getting Started Guide.
 
+Compiling the Application with DPDK built as shared library
+~~~
+
+Setting flag in config/common_base file:
+
+   ``CONFIG_RTE_BUILD_SHARED_LIB=y``
+
 Running the Application
 ---
 
-- 
2.5.5

--
Intel Research and Development Ireland Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263


This e-mail and any attachments may contain confidential material for the sole
use of the intended recipient(s). Any review or distribution by others is
strictly prohibited. If you are not the intended recipient, please contact the
sender and delete all copies.