Commit f9a81c17 authored by Hongzhi's avatar Hongzhi

TBS bg1 for sib1/2

parent 0933c1c7
......@@ -65,7 +65,7 @@ int32_t nr_segmentation(unsigned char *input_buffer,
// Find K+
Bprime_by_C = Bprime/(*C);
if (Bprime <=192) {
/*if (Bprime <=192) {
Kb = 6;
} else if (Bprime <=560) {
Kb = 8;
......@@ -73,9 +73,9 @@ int32_t nr_segmentation(unsigned char *input_buffer,
Kb = 9;
} else if (Bprime <=3840) {
Kb = 10;;
} else {
} else {*/
Kb = 22;
}
//}
if ((Bprime_by_C%Kb) > 0)
......@@ -83,7 +83,7 @@ if ((Bprime_by_C%Kb) > 0)
else
Z = (Bprime_by_C/Kb);
//printf("nr segmetation B %d Bprime %d Bprime_by_C %d z %d \n", B, Bprime, Bprime_by_C, Z);
printf("nr segmetation B %d Bprime %d Bprime_by_C %d z %d \n", B, Bprime, Bprime_by_C, Z);
if (Z <= 2) {
*Kplus = 2;
......@@ -141,7 +141,7 @@ else
*F = ((*C)*(*Kplus) - (Bprime));
//printf("final nr seg output Z %d Kplus %d F %d \n", *Zout, *Kplus, *F);
printf("final nr seg output Z %d Kplus %d F %d \n", *Zout, *Kplus, *F);
#ifdef DEBUG_SEGMENTATION
printf("C %d, Kplus %d, Kminus %d, Bprime_bytes %d, Bprime %d, F %d\n",*C,*Kplus,*Kminus,Bprime>>3,Bprime,*F);
#endif
......
......@@ -352,7 +352,6 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
}
kb = harq_process->Kplus/harq_process->Z;
// p_decParams->Z = 128;
if ( kb==22){
p_decParams->BG = 1;
p_decParams->R = 13;
......@@ -364,7 +363,7 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
kc = 52;
}
p_decParams->numMaxIter = 5;
p_decParams->numMaxIter = 10;
Kr = p_decParams->Z*kb;
p_decParams->outMode= 0;
......@@ -627,16 +626,16 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
llrProcBuf,
p_procTime);
ret = no_iteration_ldpc;
// ret = no_iteration_ldpc;
nb_total_decod++;
if (no_iteration_ldpc > 5){
nb_error_decod++;
}
//if (!nb_total_decod%10000){
if (!nb_total_decod%10000){
printf("Error number of iteration LPDC %d %ld/%ld \n", no_iteration_ldpc, nb_error_decod,nb_total_decod);fflush(stdout);
//}
}
//else
//printf("OK number of iteration LPDC %d\n", no_iteration_ldpc);
......@@ -650,11 +649,11 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
#endif
//#ifdef DEBUG_DLSCH_DECODING
//#ifdef DEBUG_DLSCH_DECODING
printf("output decoder %d %d %d %d %d \n", harq_process->c[r][0], harq_process->c[r][1], harq_process->c[r][2],harq_process->c[r][3], harq_process->c[r][4]);
printf("no_iterations_ldpc %d\n",no_iteration_ldpc);
write_output("dec_output.m","dec0",harq_process->c[0],Kr_bytes,1,4);
//#endif
//write_output("dec_output.m","dec0",harq_process->c[0],Kr_bytes,1,4);
//#endif
#if UE_TIMING_TRACE
......@@ -945,7 +944,7 @@ uint32_t dlsch_decoding_mthread(PHY_VARS_UE *phy_vars_ue,
uint16_t iind;
// uint8_t dummy_channel_output[(3*8*block_length)+12];
short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)];
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0;
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0,Kr_int,kb,kc;
uint8_t crc_type;
//UE_rxtx_proc_t *proc = &phy_vars_ue->proc;
int32_t no_iteration_ldpc;
......@@ -1116,12 +1115,21 @@ uint32_t dlsch_decoding_mthread(PHY_VARS_UE *phy_vars_ue,
}
// p_decParams->Z = 128;
p_decParams->BG = 1;
p_decParams->R = 89;
p_decParams->numMaxIter = 5;
Kr = p_decParams->Z*22;
p_decParams->outMode= 0;
kb = harq_process->Kplus/harq_process->Z;
if ( kb==22){
p_decParams->BG = 1;
p_decParams->R = 13;
kc = 68;
}
else{
p_decParams->BG = 2;
p_decParams->R = 13;
kc = 52;
}
p_decParams->numMaxIter = 10;
Kr = p_decParams->Z*kb;
p_decParams->outMode= 0;
/*
else {
......@@ -1301,6 +1309,12 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
Kr_bytes = Kr>>3;
//workaround for nr ldpc using lte interleaving
if (dlsch->harq_processes[harq_pid]->C >= 2)
Kr_int = G/(3*dlsch->harq_processes[harq_pid]->C);
else
Kr_int = Kr;
if (Kr_bytes<=64)
iind = (Kr_bytes-5);
else if (Kr_bytes <=128)
......@@ -1310,8 +1324,8 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3);
else {
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
return(dlsch->max_turbo_iterations);
//printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//return(dlsch->max_turbo_iterations);
}
#ifdef DEBUG_DLSCH_DECODING
......@@ -1322,7 +1336,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
start_meas(dlsch_rate_unmatching_stats);
#endif
memset(&dummy_w[r][0],0,3*(8448+64)*sizeof(short));
harq_process->RTC[r] = generate_dummy_w(4+(Kr_bytes*8),
harq_process->RTC[r] = generate_dummy_w(Kr_int,
(uint8_t*) &dummy_w[r][0],
(r==0) ? harq_process->F : 0);
......@@ -1368,6 +1382,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
#endif
}
r_offset += E;
//printf("main thread r_offset %d\n",r_offset);
/*
printf("Subblock deinterleaving, d %p w %p\n",
......@@ -1482,7 +1497,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
llrProcBuf,
p_procTime);
if (no_iteration_ldpc > 2)
if (no_iteration_ldpc > 10)
printf("Error number of iteration LPDC %d\n", no_iteration_ldpc);
//else
//printf("OK number of iteration LPDC %d\n", no_iteration_ldpc);
......@@ -1850,7 +1865,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
uint16_t iind;
// uint8_t dummy_channel_output[(3*8*block_length)+12];
short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)];
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0;
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0,Kr_int;
uint8_t crc_type;
uint8_t C;
uint8_t Qm;
......@@ -1986,8 +2001,8 @@ uint32_t dlsch_decoding_2thread0(void *arg)
// p_decParams->Z = 128;
p_decParams->BG = 1;
p_decParams->R = 89;
p_decParams->numMaxIter = 5;
p_decParams->R = 13;
p_decParams->numMaxIter = 2;
Kr = p_decParams->Z*22;
p_decParams->outMode= 0;
......@@ -2045,6 +2060,8 @@ uint32_t dlsch_decoding_2thread0(void *arg)
r_offset = Nl*Qm * (Gp/C);
else
r_offset = Nl*Qm * ((GpmodC==0?0:1) + (Gp/C));
printf("thread0 r_offset %d\n",r_offset);
//for (r=(harq_process->C/2); r<harq_process->C; r++) {
r=1; //(harq_process->C/2);
......@@ -2061,6 +2078,12 @@ uint32_t dlsch_decoding_2thread0(void *arg)
Kr_bytes = Kr>>3;
//workaround for nr ldpc using lte interleaving
if (dlsch->harq_processes[harq_pid]->C >= 2)
Kr_int = G/(3*dlsch->harq_processes[harq_pid]->C);
else
Kr_int = Kr;
if (Kr_bytes<=64)
iind = (Kr_bytes-5);
else if (Kr_bytes <=128)
......@@ -2070,7 +2093,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3);
else {
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//return(dlsch->max_turbo_iterations);
}
......@@ -2082,7 +2105,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
start_meas(dlsch_rate_unmatching_stats);
#endif
memset(&dummy_w[r][0],0,3*(8448+64)*sizeof(short));
harq_process->RTC[r] = generate_dummy_w(4+(Kr_bytes*8),
harq_process->RTC[r] = generate_dummy_w(Kr_int,
(uint8_t*) &dummy_w[r][0],
(r==0) ? harq_process->F : 0);
......@@ -2603,8 +2626,8 @@ uint32_t dlsch_decoding_2thread1(void *arg)
uint32_t ret,offset;
uint16_t iind;
// uint8_t dummy_channel_output[(3*8*block_length)+12];
short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(6144+64)];
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0;
short dummy_w[MAX_NUM_DLSCH_SEGMENTS][3*(8448+64)];
uint32_t r,r_offset=0,Kr,Kr_bytes,err_flag=0,Kr_int;
uint8_t crc_type;
uint8_t C;
uint8_t Qm;
......@@ -2746,7 +2769,7 @@ uint32_t dlsch_decoding_2thread1(void *arg)
// p_decParams->Z = 128;
p_decParams->BG = 1;
p_decParams->R = 89;
p_decParams->numMaxIter = 5;
p_decParams->numMaxIter = 2;
Kr = p_decParams->Z*22;
p_decParams->outMode= 0;
/*
......@@ -2824,6 +2847,12 @@ uint32_t dlsch_decoding_2thread1(void *arg)
Kr_bytes = Kr>>3;
//workaround for nr ldpc using lte interleaving
if (dlsch->harq_processes[harq_pid]->C >= 2)
Kr_int = G/(3*dlsch->harq_processes[harq_pid]->C);
else
Kr_int = Kr;
if (Kr_bytes<=64)
iind = (Kr_bytes-5);
else if (Kr_bytes <=128)
......@@ -2833,7 +2862,7 @@ uint32_t dlsch_decoding_2thread1(void *arg)
else if (Kr_bytes <= 768)
iind = 123 + ((Kr_bytes-256)>>3);
else {
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//return(dlsch->max_turbo_iterations);
}
......@@ -2844,8 +2873,8 @@ uint32_t dlsch_decoding_2thread1(void *arg)
#if UE_TIMING_TRACE
start_meas(dlsch_rate_unmatching_stats);
#endif
memset(&dummy_w[r][0],0,3*(6144+64)*sizeof(short));
harq_process->RTC[r] = generate_dummy_w(4+(Kr_bytes*8),
memset(&dummy_w[r][0],0,3*(8448+64)*sizeof(short));
harq_process->RTC[r] = generate_dummy_w(Kr_int,
(uint8_t*) &dummy_w[r][0],
(r==0) ? harq_process->F : 0);
......
This diff is collapsed.
......@@ -73,8 +73,8 @@
#define openair_free(y,x) free((y))
#define PAGE_SIZE 4096
#define RX_NB_TH_MAX 2
#define RX_NB_TH 2
#define RX_NB_TH_MAX 3
#define RX_NB_TH 3
//#ifdef SHRLIBDEV
......
......@@ -37,8 +37,8 @@
#include "types.h"
//#include "defs.h"
#define RX_NB_TH_MAX 2
#define RX_NB_TH 2
#define RX_NB_TH_MAX 3
#define RX_NB_TH 3
#define LTE_SLOTS_PER_SUBFRAME 2
......
......@@ -3044,7 +3044,7 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
else{
if (ue->pbch_vars[eNB_id]->pdu_errors_conseq>=100) {
LOG_E(PHY,"More that 100 consecutive PBCH errors! Exiting!\n");
mac_xface->macphy_exit("More that 100 consecutive PBCH errors!");
//mac_xface->macphy_exit("More that 100 consecutive PBCH errors!");
}
}
}
......
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