Commit 9091b004 authored by Raymond Knopp's avatar Raymond Knopp

check for pdcch_order rballoc in eNB and allow special DCI instead of aborting.

parent b325d0a1
...@@ -882,6 +882,7 @@ int generate_eNB_dlsch_params_from_dci(int frame, ...@@ -882,6 +882,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
uint8_t rah=0; uint8_t rah=0;
uint8_t TPC=0; uint8_t TPC=0;
LTE_DL_eNB_HARQ_t *dlsch0_harq=NULL,*dlsch1_harq=NULL; LTE_DL_eNB_HARQ_t *dlsch0_harq=NULL,*dlsch1_harq=NULL;
int pdcch_order=0;
// printf("Generate eNB DCI, format %d, rnti %x (pdu %p)\n",dci_format,rnti,dci_pdu); // printf("Generate eNB DCI, format %d, rnti %x (pdu %p)\n",dci_format,rnti,dci_pdu);
...@@ -933,6 +934,7 @@ int generate_eNB_dlsch_params_from_dci(int frame, ...@@ -933,6 +934,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
dlsch0_harq->nb_rb = RIV2nb_rb_LUT6[rballoc];//NPRB; dlsch0_harq->nb_rb = RIV2nb_rb_LUT6[rballoc];//NPRB;
RIV_max = RIV_max6; RIV_max = RIV_max6;
pdcch_order=31;
break; break;
...@@ -970,6 +972,9 @@ int generate_eNB_dlsch_params_from_dci(int frame, ...@@ -970,6 +972,9 @@ int generate_eNB_dlsch_params_from_dci(int frame,
dlsch0_harq->vrb_type = vrb_type; dlsch0_harq->vrb_type = vrb_type;
dlsch0_harq->nb_rb = RIV2nb_rb_LUT25[rballoc];//NPRB; dlsch0_harq->nb_rb = RIV2nb_rb_LUT25[rballoc];//NPRB;
RIV_max = RIV_max25; RIV_max = RIV_max25;
pdcch_order=511;
break; break;
case 50: case 50:
...@@ -1006,6 +1011,9 @@ int generate_eNB_dlsch_params_from_dci(int frame, ...@@ -1006,6 +1011,9 @@ int generate_eNB_dlsch_params_from_dci(int frame,
dlsch0_harq->vrb_type = vrb_type; dlsch0_harq->vrb_type = vrb_type;
dlsch0_harq->nb_rb = RIV2nb_rb_LUT50[rballoc];//NPRB; dlsch0_harq->nb_rb = RIV2nb_rb_LUT50[rballoc];//NPRB;
RIV_max = RIV_max50; RIV_max = RIV_max50;
pdcch_order=2047;
break; break;
case 100: case 100:
...@@ -1045,6 +1053,9 @@ int generate_eNB_dlsch_params_from_dci(int frame, ...@@ -1045,6 +1053,9 @@ int generate_eNB_dlsch_params_from_dci(int frame,
dlsch0_harq->nb_rb = RIV2nb_rb_LUT100[rballoc];//NPRB; dlsch0_harq->nb_rb = RIV2nb_rb_LUT100[rballoc];//NPRB;
RIV_max = RIV_max100; RIV_max = RIV_max100;
pdcch_order=8191;
break; break;
default: default:
...@@ -1066,7 +1077,8 @@ int generate_eNB_dlsch_params_from_dci(int frame, ...@@ -1066,7 +1077,8 @@ int generate_eNB_dlsch_params_from_dci(int frame,
return(-1); return(-1);
} }
if (rballoc>RIV_max) { if ((rballoc>RIV_max)&&
(rballoc!=pdcch_order))
LOG_E(PHY,"ERROR: Format 1A: rb_alloc (%x) > RIV_max (%x)\n",rballoc,RIV_max); LOG_E(PHY,"ERROR: Format 1A: rb_alloc (%x) > RIV_max (%x)\n",rballoc,RIV_max);
return(-1); return(-1);
} }
......
...@@ -506,6 +506,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, ...@@ -506,6 +506,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
} }
} }
// Fill in the "e"-sequence from 36-212, V8.6 2009-03, p. 16-17 (for each "e") and concatenate the // Fill in the "e"-sequence from 36-212, V8.6 2009-03, p. 16-17 (for each "e") and concatenate the
// outputs for each code segment, see Section 5.1.5 p.20 // outputs for each code segment, see Section 5.1.5 p.20
...@@ -543,11 +544,11 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB, ...@@ -543,11 +544,11 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
} }
} }
// wait for worker to finish // wait for worker to finish
wait_on_busy_condition(&proc->mutex_te,&proc->cond_te,&proc->instance_cnt_te,"te thread"); wait_on_busy_condition(&proc->mutex_te,&proc->cond_te,&proc->instance_cnt_te,"te thread");
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_OUT); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_OUT);
return(0); return(0);
......
...@@ -1743,12 +1743,15 @@ void init_eNB_proc(int inst) { ...@@ -1743,12 +1743,15 @@ void init_eNB_proc(int inst) {
} }
else { else {
pthread_create(&proc->pthread_single, attr_single, eNB_thread_single, &eNB->proc); pthread_create(&proc->pthread_single, attr_single, eNB_thread_single, &eNB->proc);
init_fep_thread(eNB,attr_fep); /* init_fep_thread(eNB,attr_fep);
init_td_thread(eNB,attr_td); init_td_thread(eNB,attr_td);
init_te_thread(eNB,attr_te); init_te_thread(eNB,attr_te);*/
} }
pthread_create( &proc->pthread_prach, attr_prach, eNB_thread_prach, &eNB->proc ); pthread_create( &proc->pthread_prach, attr_prach, eNB_thread_prach, &eNB->proc );
if ((eNB->is_slave) &&
((eNB->node_function >= NGFI_RRU_IF5)))
pthread_create( &proc->pthread_synch, attr_synch, eNB_thread_synch, eNB); pthread_create( &proc->pthread_synch, attr_synch, eNB_thread_synch, eNB);
if ((eNB->node_timing == synch_to_other) || if ((eNB->node_timing == synch_to_other) ||
(eNB->node_function == NGFI_RRU_IF5) || (eNB->node_function == NGFI_RRU_IF5) ||
(eNB->node_function == NGFI_RRU_IF4p5)) (eNB->node_function == NGFI_RRU_IF4p5))
......
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