stats display with 5G flag
This commit is contained in:
@@ -241,10 +241,6 @@ void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch) {
|
||||
}
|
||||
}
|
||||
|
||||
void *te_thread(void *param) {
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
static void TPencode(void * arg) {
|
||||
turboEncode_t * rdata=(turboEncode_t *) arg;
|
||||
unsigned char harq_pid = rdata->harq_pid;
|
||||
|
||||
@@ -248,6 +248,7 @@ void processULSegment(void * arg) {
|
||||
if(ulsch_harq->repetition_number == 1) {
|
||||
memset(ulsch_harq->pusch_rep_buffer[r],0,(sizeof(int32_t)*3*(6144+64))) ; // reset the buffer every new repetitions
|
||||
}
|
||||
|
||||
if(ulsch_harq->total_number_of_repetitions > 1) {
|
||||
if (ulsch_harq->rvidx==1) {
|
||||
LOG_E(PHY,"Adding HARQ data for segment: %d\n", r);
|
||||
@@ -267,28 +268,21 @@ void processULSegment(void * arg) {
|
||||
soft_bits+96,
|
||||
ulsch_harq->w[r]);
|
||||
stop_meas(&eNB->ulsch_deinterleaving_stats);
|
||||
rdata->decodeIterations = rdata->function( soft_bits+96,
|
||||
NULL,
|
||||
rdata->decoded_bytes,
|
||||
NULL,
|
||||
rdata->Kr,
|
||||
rdata->maxIterations,
|
||||
rdata->nbSegments == 1 ? CRC24_A: CRC24_B,
|
||||
rdata->Fbits,
|
||||
&eNB->ulsch_tc_init_stats,
|
||||
&eNB->ulsch_tc_alpha_stats,
|
||||
&eNB->ulsch_tc_beta_stats,
|
||||
&eNB->ulsch_tc_gamma_stats,
|
||||
&eNB->ulsch_tc_ext_stats,
|
||||
&eNB->ulsch_tc_intl1_stats,
|
||||
&eNB->ulsch_tc_intl2_stats);
|
||||
stop_meas(&eNB->ulsch_turbo_decoding_stats);
|
||||
|
||||
}
|
||||
|
||||
void *td_thread(void *param) {
|
||||
|
||||
return(NULL);
|
||||
rdata->decodeIterations = rdata->function(soft_bits + 96,
|
||||
NULL,
|
||||
rdata->decoded_bytes,
|
||||
NULL,
|
||||
rdata->Kr,
|
||||
rdata->maxIterations,
|
||||
rdata->nbSegments == 1 ? CRC24_A : CRC24_B,
|
||||
rdata->Fbits,
|
||||
&eNB->ulsch_tc_init_stats,
|
||||
&eNB->ulsch_tc_alpha_stats,
|
||||
&eNB->ulsch_tc_beta_stats,
|
||||
&eNB->ulsch_tc_gamma_stats,
|
||||
&eNB->ulsch_tc_ext_stats,
|
||||
&eNB->ulsch_tc_intl1_stats,
|
||||
&eNB->ulsch_tc_intl2_stats);
|
||||
}
|
||||
|
||||
int ulsch_decoding_data(PHY_VARS_eNB *eNB, L1_rxtx_proc_t *proc,
|
||||
@@ -1097,6 +1091,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,
|
||||
|
||||
LOG_D(PHY,"frame %d subframe %d O_ACK:%d o_ACK[]=%d:%d:%d:%d\n",frame,subframe,ulsch_harq->O_ACK,ulsch_harq->o_ACK[0],ulsch_harq->o_ACK[1],ulsch_harq->o_ACK[2],ulsch_harq->o_ACK[3]);
|
||||
// Do ULSCH Decoding for data portion
|
||||
start_meas(&eNB->ulsch_turbo_decoding_stats);
|
||||
ret = ulsch_decoding_data(eNB, proc, UE_id, harq_pid, llr8_flag);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@@ -1447,23 +1447,23 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
|
||||
rx_ulsch(eNB,proc, i);
|
||||
stop_meas(&eNB->ulsch_demodulation_stats);
|
||||
start_meas(&eNB->ulsch_decoding_stats);
|
||||
ulsch_decoding(eNB,proc,
|
||||
i,
|
||||
0, // control_only_flag
|
||||
ulsch_harq->V_UL_DAI,
|
||||
ulsch_harq->nb_rb>20 ? 1 : 0);
|
||||
stop_meas(&eNB->ulsch_decoding_stats);
|
||||
/*
|
||||
int ulsch_id=-1;
|
||||
for (ulsch_id=0;ulsch_id<NUMBER_OF_ULSCH_MAX;ulsch_id++)
|
||||
if (ulsch->rnti == eNB->ulsch_stats[ulsch_id].rnti) break;
|
||||
AssertFatal(ulsch_id>=0,"no ulsch_id found\n");
|
||||
ulsch_decoding(eNB,
|
||||
proc,
|
||||
i,
|
||||
0, // control_only_flag
|
||||
ulsch_harq->V_UL_DAI,
|
||||
ulsch_harq->nb_rb > 20 ? 1 : 0);
|
||||
/*
|
||||
int ulsch_id=-1;
|
||||
for (ulsch_id=0;ulsch_id<NUMBER_OF_ULSCH_MAX;ulsch_id++)
|
||||
if (ulsch->rnti == eNB->ulsch_stats[ulsch_id].rnti) break;
|
||||
AssertFatal(ulsch_id>=0,"no ulsch_id found\n");
|
||||
|
||||
if (eNB->ulsch_stats[ulsch_id].round_trials[0]>100) {
|
||||
dump_ulsch(eNB,frame,subframe,i,ulsch_harq->round);
|
||||
AssertFatal(1==0,"exiting\n");
|
||||
}
|
||||
*/
|
||||
if (eNB->ulsch_stats[ulsch_id].round_trials[0]>100) {
|
||||
dump_ulsch(eNB,frame,subframe,i,ulsch_harq->round);
|
||||
AssertFatal(1==0,"exiting\n");
|
||||
}
|
||||
*/
|
||||
}
|
||||
else if ((ulsch) &&
|
||||
(ulsch->rnti>0) &&
|
||||
@@ -1478,7 +1478,8 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
|
||||
LOG_W (PHY, "Removing stale ULSCH config for UE %x harq_pid %d (harq_mask is now 0x%2.2x)\n", ulsch->rnti, harq_pid, ulsch->harq_mask);
|
||||
}
|
||||
} // for (i=0; i<NUMBER_OF_ULSCH_MAX; i++)
|
||||
|
||||
|
||||
const bool decode = proc->nbDecode;
|
||||
while (proc->nbDecode > 0) {
|
||||
notifiedFIFO_elt_t *req=pullTpool(proc->respDecode, proc->threadPool);
|
||||
if (req == NULL)
|
||||
@@ -1486,62 +1487,13 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
|
||||
postDecode(proc, req);
|
||||
delNotifiedFIFO_elt(req);
|
||||
}
|
||||
}
|
||||
|
||||
extern int oai_exit;
|
||||
|
||||
extern void *td_thread (void *);
|
||||
|
||||
void init_td_thread(PHY_VARS_eNB *eNB) {
|
||||
/*
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
proc->tdp.eNB = eNB;
|
||||
proc->instance_cnt_td = -1;
|
||||
threadCreate(&proc->pthread_td, td_thread, (void *)&proc->tdp, "TD", -1, OAI_PRIORITY_RT);
|
||||
*/
|
||||
}
|
||||
|
||||
void kill_td_thread(PHY_VARS_eNB *eNB) {
|
||||
/*
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
proc->instance_cnt_td = 0;
|
||||
pthread_cond_signal(&proc->cond_td);
|
||||
pthread_join(proc->pthread_td, NULL);
|
||||
pthread_mutex_destroy( &proc->mutex_td );
|
||||
pthread_cond_destroy( &proc->cond_td );
|
||||
*/
|
||||
}
|
||||
|
||||
extern void *te_thread (void *);
|
||||
|
||||
void init_te_thread(PHY_VARS_eNB *eNB) {
|
||||
/*
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
|
||||
for(int i=0; i<3 ; i++) {
|
||||
proc->tep[i].eNB = eNB;
|
||||
proc->tep[i].instance_cnt_te = -1;
|
||||
LOG_I(PHY,"Creating te_thread %d\n",i);
|
||||
char txt[128];
|
||||
sprintf(txt,"TE_%d", i);
|
||||
threadCreate(&proc->tep[i].pthread_te, te_thread, (void *)&proc->tep[i], txt, -1, OAI_PRIORITY_RT);
|
||||
if (decode) {
|
||||
stop_meas(&eNB->ulsch_decoding_stats);
|
||||
stop_meas(&eNB->ulsch_turbo_decoding_stats);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void kill_te_thread(PHY_VARS_eNB *eNB) {
|
||||
/*
|
||||
L1_proc_t *proc = &eNB->proc;
|
||||
|
||||
for(int i=0; i<3 ; i++) {
|
||||
proc->tep[i].instance_cnt_te = 0;
|
||||
pthread_cond_signal(&proc->tep[i].cond_te);
|
||||
pthread_join(proc->tep[i].pthread_te, NULL);
|
||||
pthread_mutex_destroy( &proc->tep[i].mutex_te);
|
||||
pthread_cond_destroy( &proc->tep[i].cond_te);
|
||||
}
|
||||
*/
|
||||
}
|
||||
extern int oai_exit;
|
||||
|
||||
void fill_rx_indication(PHY_VARS_eNB *eNB,
|
||||
int ULSCH_id,
|
||||
|
||||
@@ -990,13 +990,6 @@ int main(int argc, char **argv) {
|
||||
|
||||
eNB->mac_enabled=1;
|
||||
|
||||
if(get_thread_worker_conf() == WORKER_ENABLE) {
|
||||
extern void init_td_thread(PHY_VARS_eNB *);
|
||||
extern void init_te_thread(PHY_VARS_eNB *);
|
||||
init_td_thread(eNB);
|
||||
init_te_thread(eNB);
|
||||
}
|
||||
|
||||
// callback functions required for phy_procedures_tx
|
||||
// eNB_id_i = UE->n_connected_eNB;
|
||||
printf("Setting mcs1 = %d\n",mcs1);
|
||||
|
||||
@@ -1109,14 +1109,6 @@ int main(int argc, char **argv) {
|
||||
eNB->frame_parms.Nid_cell_mbsfn=0;
|
||||
#endif
|
||||
|
||||
|
||||
if(get_thread_worker_conf() == WORKER_ENABLE) {
|
||||
extern void init_td_thread(PHY_VARS_eNB *);
|
||||
extern void init_te_thread(PHY_VARS_eNB *);
|
||||
init_td_thread(eNB);
|
||||
init_te_thread(eNB);
|
||||
}
|
||||
|
||||
// callback functions required for phy_procedures_tx
|
||||
// eNB_id_i = UE->n_connected_eNB;
|
||||
printf("Setting mcs1 = %d\n",mcs1);
|
||||
|
||||
@@ -744,9 +744,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
if(get_thread_worker_conf() == WORKER_ENABLE) {
|
||||
extern void init_fep_thread(RU_t *, pthread_attr_t *);
|
||||
extern void init_td_thread(PHY_VARS_eNB *);
|
||||
init_fep_thread(ru,NULL);
|
||||
init_td_thread(eNB);
|
||||
init_fep_thread(ru, NULL);
|
||||
}
|
||||
|
||||
// Create transport channel structures for 2 transport blocks (MIMO)
|
||||
@@ -1379,13 +1377,12 @@ int main(int argc, char **argv) {
|
||||
printStatIndent2(&eNB->ulsch_deinterleaving_stats,"sub-block interleaving" );
|
||||
printStatIndent2(&eNB->ulsch_demultiplexing_stats,"sub-block demultiplexing" );
|
||||
printStatIndent2(&eNB->ulsch_rate_unmatching_stats,"sub-block rate-matching" );
|
||||
printf(" |__ turbo_decoder(%d bits), avg iterations: %.1f %.2f us (%d cycles, %d trials)\n",
|
||||
eNB->ulsch[0]->harq_processes[harq_pid]->Cminus ?
|
||||
eNB->ulsch[0]->harq_processes[harq_pid]->Kminus :
|
||||
eNB->ulsch[0]->harq_processes[harq_pid]->Kplus,
|
||||
eNB->ulsch_tc_intl1_stats.trials/(double)eNB->ulsch_tc_init_stats.trials,
|
||||
(double)eNB->ulsch_turbo_decoding_stats.diff/eNB->ulsch_turbo_decoding_stats.trials*timeBase,
|
||||
(int)((double)eNB->ulsch_turbo_decoding_stats.diff/eNB->ulsch_turbo_decoding_stats.trials),
|
||||
printf(" |__ harqID: %d turbo_decoder(%d bits), avg iterations: %.1f %.2f us (%d cycles, %d trials)\n",
|
||||
harq_pid,
|
||||
eNB->ulsch[0]->harq_processes[harq_pid]->Cminus ? eNB->ulsch[0]->harq_processes[harq_pid]->Kminus : eNB->ulsch[0]->harq_processes[harq_pid]->Kplus,
|
||||
eNB->ulsch_tc_intl1_stats.trials / (double)eNB->ulsch_tc_init_stats.trials,
|
||||
(double)eNB->ulsch_turbo_decoding_stats.diff / eNB->ulsch_turbo_decoding_stats.trials * timeBase,
|
||||
(int)((double)eNB->ulsch_turbo_decoding_stats.diff / eNB->ulsch_turbo_decoding_stats.trials),
|
||||
eNB->ulsch_turbo_decoding_stats.trials);
|
||||
printStatIndent3(&eNB->ulsch_tc_init_stats,"init");
|
||||
printStatIndent3(&eNB->ulsch_tc_alpha_stats,"alpha");
|
||||
|
||||
Reference in New Issue
Block a user