Commit eab51f6a authored by Hongzhi Wang's avatar Hongzhi Wang

removing hardcoded parameters

parent f8e3d922
...@@ -148,8 +148,8 @@ uint8_t count_initdev =0; ...@@ -148,8 +148,8 @@ uint8_t count_initdev =0;
#define K0_3_1 56 /* K0 fraction numerator for rv 3 and BG 1 */ #define K0_3_1 56 /* K0 fraction numerator for rv 3 and BG 1 */
#define K0_3_2 43 /* K0 fraction numerator for rv 3 and BG 2 */ #define K0_3_2 43 /* K0 fraction numerator for rv 3 and BG 2 */
static struct test_bbdev_vector test_vector; struct test_bbdev_vector test_vector;
static struct test_bbdev_vector test_vector_dec; struct test_bbdev_vector test_vector_dec;
int8_t ldpc_output[22*384]; int8_t ldpc_output[22*384];
/* Switch between PMD and Interrupt for throughput TC */ /* Switch between PMD and Interrupt for throughput TC */
static bool intr_enabled; static bool intr_enabled;
...@@ -833,31 +833,32 @@ static int ...@@ -833,31 +833,32 @@ static int
read_test_vector(void) read_test_vector(void)
{ {
int ret; int ret;
memset(&test_vector, 0, sizeof(test_vector)); memset(&test_vector, 0, sizeof(struct test_bbdev_vector));
ret= init_entry(&test_vector, 0);
ret= init_entry(&test_vector, 2);
struct rte_bbdev_op_ldpc_dec *ldpc_dec = &test_vector.ldpc_dec; struct rte_bbdev_op_ldpc_dec *ldpc_dec = &test_vector.ldpc_dec;
struct rte_bbdev_op_ldpc_dec *ldpc_dec_ref = &test_vector_dec.ldpc_dec;
test_vector.op_type = RTE_BBDEV_OP_LDPC_DEC; //vector->op_type; test_vector.op_type = RTE_BBDEV_OP_LDPC_DEC; //vector->op_type;
test_vector.expected_status = 0; test_vector.expected_status = 0;
//printf("test vector expected status %d\n",test_vector.expected_status); //printf("test vector expected status %d\n",test_vector.expected_status);
//uint8_t *rv_index = &ldpc_dec_ref->rv_index;
ldpc_dec->cb_params.e = 2760; //ldpc_dec->cb_params.e; //rv_index = ldpc_dec_ref->rv_index;
ldpc_dec->iter_count = 3;
ldpc_dec->basegraph = 2; //ldpc_dec->basegraph; ldpc_dec->rv_index = 0; //*rv_index;
ldpc_dec->z_c = 72; //ldpc_dec->z_c; ldpc_dec->cb_params.e = ldpc_dec_ref->cb_params.e;
ldpc_dec->q_m = 2; //ldpc_dec->q_m; ldpc_dec->iter_count = 3;
ldpc_dec->n_filler = 176; //ldpc_dec->n_filler; ldpc_dec->basegraph = ldpc_dec_ref->basegraph;
ldpc_dec->n_cb = 3600; //ldpc_dec->n_cb; ldpc_dec->z_c = ldpc_dec_ref->z_c;
ldpc_dec->iter_max = 8; //ldpc_dec->iter_max; ldpc_dec->q_m = ldpc_dec_ref->q_m;
ldpc_dec->rv_index = 0; //ldpc_dec->rv_index; ldpc_dec->n_filler = ldpc_dec_ref->n_filler;
ldpc_dec->n_cb = ldpc_dec_ref->n_cb;
ldpc_dec->op_flags = RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE; //ldpc_dec->op_flags; ldpc_dec->iter_max = ldpc_dec_ref->iter_max;
ldpc_dec->code_block_mode = 1; //ldpc_dec->code_block_mode; // ldpc_dec->rv_index = ldpc_dec_ref->rv_index;
ldpc_dec->op_flags = RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
//printf("reference bg %d zc %d qm %d nfiller %d, n_cb %d iter max %d rv %d\n", ldpc_dec->basegraph, ldpc_dec->z_c, ldpc_dec->q_m,ldpc_dec->n_filler,ldpc_dec->n_cb,ldpc_dec->iter_max,ldpc_dec->rv_index); ldpc_dec->code_block_mode = 1;
ret= init_entry(&test_vector, 0, ldpc_dec->cb_params.e);
ret= init_entry(&test_vector, 2, ldpc_dec->cb_params.e);
//printf("read test reference bg %d zc %d qm %d nfiller %d, n_cb %d iter max %d rv %d\n", ldpc_dec_ref->basegraph, ldpc_dec_ref->z_c, ldpc_dec_ref->q_m,ldpc_dec_ref->n_filler,ldpc_dec_ref->n_cb,ldpc_dec_ref->iter_max,rv_index);
//printf("read test reference bg %d zc %d qm %d nfiller %d, n_cb %d iter max %d rv %d\n", ldpc_dec_ref->basegraph, ldpc_dec_ref->z_c, ldpc_dec->q_m,ldpc_dec->n_filler,ldpc_dec->n_cb,ldpc_dec->iter_max,ldpc_dec->rv_index);
struct op_data_entries *ref_entries = struct op_data_entries *ref_entries =
&test_vector.entries[0]; &test_vector.entries[0];
...@@ -869,13 +870,11 @@ struct op_data_buf *seg_dec = &ref_entries_dec->segments[0]; ...@@ -869,13 +870,11 @@ struct op_data_buf *seg_dec = &ref_entries_dec->segments[0];
//printf("before seg addr %p seg dec addr %p nb segments %d\n",seg->addr,seg_dec->addr,ref_entries->nb_segments); //printf("before seg addr %p seg dec addr %p nb segments %d\n",seg->addr,seg_dec->addr,ref_entries->nb_segments);
memcpy(seg->addr, seg_dec->addr, seg->length); memcpy(seg->addr, seg_dec->addr, seg->length);
//memcpy(ldpc_dec, ldpc_dec_ref, sizeof(struct rte_bbdev_op_ldpc_dec));
//printf("seg addr %p length %d seg dec addr %p \n",seg->addr,seg->length, seg_dec->addr); //printf("seg addr %p length %d seg dec addr %p \n",seg->addr,seg->length, seg_dec->addr);
//printf("seg addr %p seg dec addr %p llr %x llr dec %x\n",seg->addr,seg_dec->addr,*(seg->addr), *(seg_dec->addr)); //printf("seg addr %p seg dec addr %p llr %x llr dec %x\n",seg->addr,seg_dec->addr,*(seg->addr), *(seg_dec->addr));
TEST_ASSERT_SUCCESS(ret, "Failed to parse file %s\n",
get_vector_filename());
return TEST_SUCCESS; return TEST_SUCCESS;
} }
...@@ -1725,18 +1724,18 @@ copy_reference_ldpc_dec_op(struct rte_bbdev_dec_op **ops, unsigned int n, ...@@ -1725,18 +1724,18 @@ copy_reference_ldpc_dec_op(struct rte_bbdev_dec_op **ops, unsigned int n,
ldpc_dec->tb_params.r; ldpc_dec->tb_params.r;
printf("code block ea %d eb %d c %d cab %d r %d\n",ldpc_dec->tb_params.ea,ldpc_dec->tb_params.eb,ldpc_dec->tb_params.c, ldpc_dec->tb_params.cab, ldpc_dec->tb_params.r); printf("code block ea %d eb %d c %d cab %d r %d\n",ldpc_dec->tb_params.ea,ldpc_dec->tb_params.eb,ldpc_dec->tb_params.c, ldpc_dec->tb_params.cab, ldpc_dec->tb_params.r);
} else { } else {
ops[i]->ldpc_dec.cb_params.e = 2760; //ldpc_dec->cb_params.e; ops[i]->ldpc_dec.cb_params.e = ldpc_dec->cb_params.e;
} }
ops[i]->ldpc_dec.basegraph = 2; //ldpc_dec->basegraph; ops[i]->ldpc_dec.basegraph = ldpc_dec->basegraph;
ops[i]->ldpc_dec.z_c = 72; //ldpc_dec->z_c; ops[i]->ldpc_dec.z_c = ldpc_dec->z_c;
ops[i]->ldpc_dec.q_m = 2; //ldpc_dec->q_m; ops[i]->ldpc_dec.q_m = ldpc_dec->q_m;
ops[i]->ldpc_dec.n_filler = 176; //ldpc_dec->n_filler; ops[i]->ldpc_dec.n_filler = ldpc_dec->n_filler;
ops[i]->ldpc_dec.n_cb = 3600; //ldpc_dec->n_cb; ops[i]->ldpc_dec.n_cb = ldpc_dec->n_cb;
ops[i]->ldpc_dec.iter_max = 8; //ldpc_dec->iter_max; ops[i]->ldpc_dec.iter_max = ldpc_dec->iter_max;
ops[i]->ldpc_dec.rv_index = 0; //ldpc_dec->rv_index; ops[i]->ldpc_dec.rv_index = ldpc_dec->rv_index;
ops[i]->ldpc_dec.op_flags = RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE; //ldpc_dec->op_flags; ops[i]->ldpc_dec.op_flags = RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE; //ldpc_dec->op_flags;
ops[i]->ldpc_dec.code_block_mode = 1; //ldpc_dec->code_block_mode; ops[i]->ldpc_dec.code_block_mode = ldpc_dec->code_block_mode;
//printf("reference bg %d zc %d qm %d nfiller n_filler, n_cb %d iter max %d rv %d\n", ldpc_dec->basegraph, ldpc_dec->z_c, ldpc_dec->q_m,ldpc_dec->n_filler,ldpc_dec->n_cb,ldpc_dec->iter_max,ldpc_dec->rv_index); //printf("reference bg %d zc %d qm %d nfiller n_filler, n_cb %d iter max %d rv %d\n", ldpc_dec->basegraph, ldpc_dec->z_c, ldpc_dec->q_m,ldpc_dec->n_filler,ldpc_dec->n_cb,ldpc_dec->iter_max,ldpc_dec->rv_index);
/*char *data; /*char *data;
...@@ -5142,7 +5141,7 @@ REGISTER_TEST_COMMAND(throughput, bbdev_throughput_testsuite); ...@@ -5142,7 +5141,7 @@ REGISTER_TEST_COMMAND(throughput, bbdev_throughput_testsuite);
#define TEST_REPETITIONS 1000 #define TEST_REPETITIONS 1000
/* Switch between PMD and Interrupt for throughput TC */ /* Switch between PMD and Interrupt for throughput TC */
static bool intr_enabled; static bool intr_enabled;
static struct test_bbdev_vector test_vector; //static struct test_bbdev_vector test_vector;
/* LLR arithmetic representation for numerical conversion */ /* LLR arithmetic representation for numerical conversion */
static int ldpc_llr_decimals; static int ldpc_llr_decimals;
static int ldpc_llr_size; static int ldpc_llr_size;
...@@ -5464,7 +5463,7 @@ run_parsed_tests(struct test_params *tp) ...@@ -5464,7 +5463,7 @@ run_parsed_tests(struct test_params *tp)
} }
static int static int
init_input(uint32_t **data, uint32_t *data_length) init_input(uint32_t **data, uint32_t data_length)
{ {
uint32_t n_values = 0; uint32_t n_values = 0;
uint32_t data_size = 32; uint32_t data_size = 32;
...@@ -5479,11 +5478,10 @@ init_input(uint32_t **data, uint32_t *data_length) ...@@ -5479,11 +5478,10 @@ init_input(uint32_t **data, uint32_t *data_length)
values_resized = NULL; values_resized = NULL;
*data_length = 2760; n_values = data_length>>2;
n_values = 690;
//printf("data len %d n %d\n",*data_length,n_values); //printf("data len %d n %d\n",*data_length,n_values);
values_resized = (uint32_t *) rte_realloc(values, values_resized = (uint32_t *) rte_realloc(values,
sizeof(uint32_t) * (n_values), 0); sizeof(uint32_t) * (n_values+1), 0);
//printf("resized values addr %p\n",values_resized); //printf("resized values addr %p\n",values_resized);
if (values_resized == NULL) { if (values_resized == NULL) {
...@@ -5497,7 +5495,7 @@ n_values = 690; ...@@ -5497,7 +5495,7 @@ n_values = 690;
} }
static int static int
init_output(uint32_t **data, uint32_t *data_length) init_output(uint32_t **data, uint32_t data_length)
{ {
uint32_t n_values = 0; uint32_t n_values = 0;
uint32_t data_size = 32; uint32_t data_size = 32;
...@@ -5512,11 +5510,10 @@ init_output(uint32_t **data, uint32_t *data_length) ...@@ -5512,11 +5510,10 @@ init_output(uint32_t **data, uint32_t *data_length)
values_resized = NULL; values_resized = NULL;
*data_length = 2760; n_values = data_length>>2;
n_values = 690;
//printf("data len %d n %d\n",*data_length,n_values); //printf("data len %d n %d\n",*data_length,n_values);
values_resized = (uint32_t *) rte_realloc(values, values_resized = (uint32_t *) rte_realloc(values,
sizeof(uint32_t) * (n_values), 0); sizeof(uint32_t) * (n_values+1), 0);
//printf("resized values addr %p\n",values_resized); //printf("resized values addr %p\n",values_resized);
if (values_resized == NULL) { if (values_resized == NULL) {
...@@ -5530,10 +5527,9 @@ n_values = 690; ...@@ -5530,10 +5527,9 @@ n_values = 690;
} }
int int
init_entry(struct test_bbdev_vector *vector, enum op_data_type type) init_entry(struct test_bbdev_vector *vector, enum op_data_type type, uint32_t data_length)
{ {
int ret; int ret;
uint32_t data_length = 0;
uint32_t *data = NULL; uint32_t *data = NULL;
unsigned int id; unsigned int id;
struct op_data_buf *op_data; struct op_data_buf *op_data;
...@@ -5557,9 +5553,9 @@ init_entry(struct test_bbdev_vector *vector, enum op_data_type type) ...@@ -5557,9 +5553,9 @@ init_entry(struct test_bbdev_vector *vector, enum op_data_type type)
/* Clear new op data struct */ /* Clear new op data struct */
memset(op_data + *nb_ops, 0, sizeof(struct op_data_buf)); memset(op_data + *nb_ops, 0, sizeof(struct op_data_buf));
if (type == 0) if (type == 0)
ret = init_input(&data, &data_length); ret = init_input(&data, data_length);
else else
ret = init_output(&data, &data_length); ret = init_output(&data, data_length);
if (!ret) { if (!ret) {
op_data[*nb_ops].addr = data; op_data[*nb_ops].addr = data;
...@@ -5571,8 +5567,8 @@ else ...@@ -5571,8 +5567,8 @@ else
} }
int count_init = 0; int count_init = 0;
int32_t nrLDPC_decod_offload(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, t_nrLDPC_procBuf* p_procBuf, t_nrLDPC_time_stats* p_profiler) //int32_t nrLDPC_decod_offload(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, t_nrLDPC_procBuf* p_procBuf, t_nrLDPC_time_stats* p_profiler)
//int32_t nrLDPC_decod_offload(t_nrLDPC_dec_params* p_decParams, uint8_t C, uint8_t rv, uint32_t F, int8_t* w, int8_t* p_out) int32_t nrLDPC_decod_offload(t_nrLDPC_dec_params* p_decParams, uint8_t C, uint8_t rv, uint16_t F, uint32_t E, uint8_t Qm, int8_t* p_llr, int8_t* p_out)
{ {
uint32_t numIter = 0; uint32_t numIter = 0;
struct thread_params *t_params_tp; struct thread_params *t_params_tp;
...@@ -5629,6 +5625,28 @@ argv_re[2] = "../../../targets/ARCH/test-bbdev/test_vectors/ldpc_dec_v8480.data" ...@@ -5629,6 +5625,28 @@ argv_re[2] = "../../../targets/ARCH/test-bbdev/test_vectors/ldpc_dec_v8480.data"
return 1; return 1;
} }
*/ */
memset(&test_vector_dec, 0, sizeof(struct test_bbdev_vector));
struct rte_bbdev_op_ldpc_dec *ldpc_dec = &test_vector_dec.ldpc_dec;
test_vector.op_type = RTE_BBDEV_OP_LDPC_DEC; //vector->op_type;
test_vector.expected_status = 0;
//printf("test vector expected status %d\n",test_vector.expected_status);
ldpc_dec->cb_params.e = E;
ldpc_dec->iter_count = 3;
ldpc_dec->basegraph = p_decParams->BG;
ldpc_dec->z_c = p_decParams->Z;
ldpc_dec->q_m = Qm;
ldpc_dec->n_filler = F;
ldpc_dec->n_cb = (p_decParams->BG==1)?(66*p_decParams->Z):(50*p_decParams->Z);
ldpc_dec->iter_max = 8;
ldpc_dec->rv_index = rv;
ldpc_dec->op_flags = RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
ldpc_dec->code_block_mode = 1;
printf("reference bg %d zc %d qm %d nfiller %d, n_cb %d iter max %d rv %d\n", ldpc_dec->basegraph, ldpc_dec->z_c, ldpc_dec->q_m,ldpc_dec->n_filler,ldpc_dec->n_cb,ldpc_dec->iter_max,ldpc_dec->rv_index);
struct op_data_entries *ref_entries = struct op_data_entries *ref_entries =
&test_vector_dec.entries[0]; &test_vector_dec.entries[0];
ref_entries->segments[0].addr = (int32_t *)p_llr; ref_entries->segments[0].addr = (int32_t *)p_llr;
...@@ -5649,7 +5667,7 @@ test_params.num_lcores=1; ...@@ -5649,7 +5667,7 @@ test_params.num_lcores=1;
test_params.num_tests = 1; test_params.num_tests = 1;
run_all_tests(); run_all_tests();
char *data = ldpc_output; char *data = ldpc_output;
memcpy(&p_out[0], data, 2760); memcpy(&p_out[0], data, E);
//p_out = ldpc_output; //p_out = ldpc_output;
......
...@@ -56,7 +56,7 @@ typedef int(*nrLDPC_encoderfunc_t)(unsigned char **,unsigned char **,int,int,sho ...@@ -56,7 +56,7 @@ typedef int(*nrLDPC_encoderfunc_t)(unsigned char **,unsigned char **,int,int,sho
\param p_profiler LDPC profiler statistics \param p_profiler LDPC profiler statistics
*/ */
typedef int32_t(*nrLDPC_decoderfunc_t)(t_nrLDPC_dec_params* , int8_t*, int8_t* , t_nrLDPC_procBuf* , t_nrLDPC_time_stats* ); typedef int32_t(*nrLDPC_decoderfunc_t)(t_nrLDPC_dec_params* , int8_t*, int8_t* , t_nrLDPC_procBuf* , t_nrLDPC_time_stats* );
typedef int32_t(*nrLDPC_decoffloadfunc_t)(t_nrLDPC_dec_params* , int8_t*, int8_t* , t_nrLDPC_procBuf* , t_nrLDPC_time_stats* ); //typedef int32_t(*nrLDPC_decoffloadfunc_t)(t_nrLDPC_dec_params* , int8_t*, int8_t* , t_nrLDPC_procBuf* , t_nrLDPC_time_stats* );
//typedef int32_t(*nrLDPC_decoffloadfunc_t)(t_nrLDPC_dec_params* , uint8_t , uint8_t, uint32_t , int8_t*, int8_t* ); typedef int32_t(*nrLDPC_decoffloadfunc_t)(t_nrLDPC_dec_params* , uint8_t , uint8_t, uint16_t, uint32_t, uint8_t, int8_t*, int8_t* );
typedef int32_t(*nrLDPC_dectopfunc_t)(void); typedef int32_t(*nrLDPC_dectopfunc_t)(void);
#endif #endif
...@@ -450,15 +450,24 @@ printf("input addr p @ %p data %d\n", (pl_ol128), *(pl_ol128)); ...@@ -450,15 +450,24 @@ printf("input addr p @ %p data %d\n", (pl_ol128), *(pl_ol128));
////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////// pl =====> llrProcBuf ////////////////////////////////// ////////////////////////////////// pl =====> llrProcBuf //////////////////////////////////
/* no_iteration_ldpc = nrLDPC_decoder_offload(p_decoderParms,
no_iteration_ldpc = nrLDPC_decoder_offload(p_decoderParms,
(int8_t*)&pl_ol128[0], //pl_ol, (int8_t*)&pl_ol128[0], //pl_ol,
llrProcBuf, llrProcBuf,
ulsch_harq->p_nrLDPC_procBuf[r],// 3 ulsch_harq->p_nrLDPC_procBuf[r],// 3
p_procTime); p_procTime);
*/
no_iteration_ldpc = nrLDPC_decoder_offload(p_decoderParms,
ulsch_harq->C,
(uint8_t)rv_index,
ulsch_harq->F,
E,
Qm,
(int8_t*)&pl_ol128[0],
llrProcBuf);
/*
/*no_iteration_ldpc = nrLDPC_decoder(p_decoderParms, no_iteration_ldpc = nrLDPC_decoder(p_decoderParms,
(int8_t*)&pl[0], (int8_t*)&pl[0],
llrProcBuf, llrProcBuf,
ulsch_harq->p_nrLDPC_procBuf[r], ulsch_harq->p_nrLDPC_procBuf[r],
...@@ -480,12 +489,11 @@ printf("input addr p @ %p data %d\n", (pl_ol128), *(pl_ol128)); ...@@ -480,12 +489,11 @@ printf("input addr p @ %p data %d\n", (pl_ol128), *(pl_ol128));
ulsch_harq->c[r][m]= (uint8_t) llrProcBuf[m]; ulsch_harq->c[r][m]= (uint8_t) llrProcBuf[m];
} }
/*for (int k=0;k<16;k++) /*for (int k=0;k<16;k++)
{ {
printf("output decoder [%d] = 0x%02x \n", k, ulsch_harq->c[r][k]); printf("output decoder [%d] = 0x%02x \n", k, ulsch_harq->c[r][k]);
printf("llrprocbuf [%d] = %x adr %p\n", k, llrProcBuf[k+128], llrProcBuf+k+128); printf("llrprocbuf [%d] = %x adr %p\n", k, llrProcBuf[k], llrProcBuf+k);
} }
printf("no_iterations_ldpc %d \n",no_iteration_ldpc); printf("no_iterations_ldpc %d \n",no_iteration_ldpc);
}
*/ */
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment