diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h index bcbcca9ab3bdd88ce137400b99ba540e69789fdf..c53303d7e1fd25274730be48683c15129e4f2b47 100644 --- a/openair1/PHY/defs.h +++ b/openair1/PHY/defs.h @@ -463,6 +463,7 @@ typedef struct RU_proc_t_s { /// pipeline ready state int ru_rx_ready; int ru_tx_ready; + int emulate_rf_busy; } RU_proc_t; /// Context data structure for eNB subframe processing diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c index e71ef56bfc1bbd828e54a8dad59b707b90084d41..884366374c01ee3a6355bd40735b13a7f96f56ad 100644 --- a/targets/RT/USER/lte-enb.c +++ b/targets/RT/USER/lte-enb.c @@ -644,6 +644,7 @@ int wakeup_rxtx(PHY_VARS_eNB *eNB,RU_t *ru) { } pthread_mutex_unlock( &proc_rxtx0->mutex_rxtx ); + ru_proc->emulate_rf_busy = 0; return(0); } diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index ffccb9774f0881038e8f67a3f57e16f1338b34fc..568a01b9b3559314ab50707231e9b6a661cbf85b 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -122,6 +122,7 @@ extern volatile int oai_exit; extern int emulate_rf; extern int numerology; extern int fepw; +extern int single_thread_flag; extern void phy_init_RU(RU_t*); @@ -703,6 +704,11 @@ static void* emulatedRF_thread(void* param) { wait_sync("emulatedRF_thread"); while(!oai_exit){ nanosleep(&req, (struct timespec *)NULL); + if(proc->emulate_rf_busy ) + { + LOG_E(PHY,"rf being delayed in emulated RF\n"); + } + proc->emulate_rf_busy = 1; pthread_mutex_lock(&proc->mutex_emulateRF); ++proc->instance_cnt_emulateRF; pthread_mutex_unlock(&proc->mutex_emulateRF); @@ -1652,7 +1658,7 @@ static void* ru_thread( void* param ) { // wakeup all eNB processes waiting for this RU if (ru->num_eNB>0) wakeup_eNBs(ru); - if(get_nprocs() <= 4){ + if(get_nprocs() <= 4 || single_thread_flag){ // do TX front-end processing if needed (precoding and/or IDFTs) if (ru->feptx_prec) ru->feptx_prec(ru); @@ -1664,6 +1670,7 @@ static void* ru_thread( void* param ) { if (ru->fh_north_out) ru->fh_north_out(ru); } + proc->emulate_rf_busy = 0; } } diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 90d68349f1bc658583c74db5c0797d68cded04dc..e5ce85a2ddf5a65358a013f141cb92763bab8fa2 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -218,7 +218,7 @@ extern void init_eNB_afterRU(void); int transmission_mode=1; int emulate_rf = 0; -int numerology = 0; +int numerology = 2; int codingw = 0; int fepw = 0;