modify threading option into config file
This commit is contained in:
@@ -57,6 +57,7 @@
|
||||
uint64_t runtime,
|
||||
uint64_t deadline,
|
||||
uint64_t period);*/
|
||||
extern uint8_t get_thread_worker_conf(void);
|
||||
|
||||
|
||||
void free_eNB_dlsch(LTE_eNB_DLSCH_t *dlsch)
|
||||
@@ -614,7 +615,7 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB,
|
||||
}
|
||||
}
|
||||
|
||||
if(get_thread_worker_stage())
|
||||
if(get_thread_worker_conf() == WORKER_ENABLE)
|
||||
{
|
||||
if(C >= 8)//one main three worker
|
||||
{
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
#include "targets/RT/USER/rt_wrapper.h"
|
||||
#include "transport_proto.h"
|
||||
|
||||
extern uint8_t get_thread_worker_stage(void);
|
||||
extern uint8_t get_thread_worker_conf(void);
|
||||
|
||||
void free_eNB_ulsch(LTE_eNB_ULSCH_t *ulsch)
|
||||
{
|
||||
@@ -723,7 +723,7 @@ int ulsch_decoding_data(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag)
|
||||
int ulsch_decoding_data_all(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag)
|
||||
{
|
||||
int ret = 0;
|
||||
/*if(get_thread_worker_stage())
|
||||
/*if(get_thread_worker_conf() == WORKER_ENABLE)
|
||||
{
|
||||
ret = ulsch_decoding_data_2thread(eNB,UE_id,harq_pid,llr8_flag);
|
||||
}
|
||||
|
||||
+13
-4
@@ -270,7 +270,6 @@ typedef enum {
|
||||
REMOTE_IF4p5 =3,
|
||||
REMOTE_IF1pp =4,
|
||||
MAX_RU_IF_TYPES =5
|
||||
//EMULATE_RF =6
|
||||
} RU_if_south_t;
|
||||
|
||||
typedef struct RU_t_s{
|
||||
@@ -888,10 +887,20 @@ typedef struct {
|
||||
int prach_I0;
|
||||
} PHY_MEASUREMENTS_eNB;
|
||||
|
||||
typedef enum {
|
||||
PARALLEL_SINGLE_THREAD =0,
|
||||
PARALLEL_RU_L1_SPLIT =1,
|
||||
PARALLEL_RU_L1_TRX_SPLIT =2
|
||||
}PARALLEL_CONF_t;
|
||||
|
||||
typedef enum {
|
||||
WORKER_DISABLE =0,
|
||||
WORKER_ENABLE =1
|
||||
}WORKER_CONF_t;
|
||||
|
||||
typedef struct THREAD_STRUCT_s {
|
||||
uint8_t paralle_stage;
|
||||
uint8_t worker_stage;
|
||||
int core_number;
|
||||
PARALLEL_CONF_t parallel_conf;
|
||||
WORKER_CONF_t worker_conf;
|
||||
} THREAD_STRUCT;
|
||||
|
||||
|
||||
|
||||
@@ -61,6 +61,8 @@
|
||||
#include "enb_paramdef.h"
|
||||
|
||||
extern uint16_t sf_ahead;
|
||||
extern void set_parallel_conf(int parallel_conf);
|
||||
extern void set_parallel_worker_conf(int worker_conf);
|
||||
|
||||
void RCconfig_flexran()
|
||||
{
|
||||
@@ -2484,6 +2486,26 @@ int RCconfig_X2(MessageDef *msg_p, uint32_t i)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int RCconfig_parallel(void)
|
||||
{
|
||||
char *parallel_conf;
|
||||
char *worker_conf;
|
||||
|
||||
paramdef_t ThreadParams[] = THREAD_CONF_DESC;
|
||||
paramlist_def_t THREADParamList = {THREAD_CONFIG_STRING_THREAD_STRUCT,NULL,0};
|
||||
|
||||
config_getlist( &THREADParamList,ThreadParams,sizeof(ThreadParams)/sizeof(paramdef_t),NULL);
|
||||
parallel_conf = strdup(*(THREADParamList.paramarray[0][THREAD_PARALLEL_IDX].strptr));
|
||||
worker_conf = strdup(*(THREADParamList.paramarray[0][THREAD_PARALLEL_IDX].strptr));
|
||||
|
||||
if(strcmp(parallel_conf,"PARALLEL_SINGLE_THREAD")==0) set_parallel_conf(0);
|
||||
else if(strcmp(parallel_conf,"PARALLEL_RU_L1_SPLIT")==0) set_parallel_conf(1);
|
||||
else if(strcmp(parallel_conf,"PARALLEL_RU_L1_TRX_SPLIT")==0) set_parallel_conf(2);
|
||||
if(strcmp(worker_conf,"WORKER_DISABLE")==0) set_parallel_worker_conf(0);
|
||||
else if(strcmp(worker_conf,"WORKER_ENABLE")==0) set_parallel_worker_conf(1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void RCConfig(void) {
|
||||
|
||||
paramlist_def_t MACRLCParamList = {CONFIG_STRING_MACRLC_LIST,NULL,0};
|
||||
@@ -2528,5 +2550,6 @@ void RCConfig(void) {
|
||||
config_getlist( &RUParamList,NULL,0, NULL);
|
||||
RC.nb_RU = RUParamList.numelt;
|
||||
|
||||
RCconfig_parallel();
|
||||
|
||||
}
|
||||
|
||||
@@ -879,3 +879,28 @@ typedef enum {
|
||||
#define MACRLC_SCHED_MODE_IDX 17
|
||||
#define MACRLC_PHY_TEST_IDX 18
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
/* thread configuration parameters section name */
|
||||
#define THREAD_CONFIG_STRING_THREAD_STRUCT "THREAD_STRUCT"
|
||||
|
||||
/* thread configuration parameters names */
|
||||
#define THREAD_CONFIG_STRING_PARALLEL "parallel_config"
|
||||
#define THREAD_CONFIG_STRING_WORKER "worker_config"
|
||||
|
||||
|
||||
#define THREAD_PARALLEL_IDX 0
|
||||
#define THREAD_WORKER_IDX 1
|
||||
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* thread configuration parameters */
|
||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
#define THREAD_CONF_DESC { \
|
||||
{THREAD_CONFIG_STRING_PARALLEL, CONFIG_HLP_PARALLEL, 0, strptr:NULL, defstrval:"PARALLEL_RU_L1_TRX_SPLIT", TYPE_STRING, 0}, \
|
||||
{THREAD_CONFIG_STRING_WORKER, CONFIG_HLP_WORKER, 0, strptr:NULL, defstrval:"WORKER_ENABLE", TYPE_STRING, 0} \
|
||||
}
|
||||
|
||||
|
||||
#define CONFIG_HLP_WORKER "coding and FEP worker thread WORKER_DISABLE or WORKER_ENABLE\n"
|
||||
#define CONFIG_HLP_PARALLEL "PARALLEL_SINGLE_THREAD, PARALLEL_RU_L1_SPLIT, or PARALLEL_RU_L1_TRX_SPLIT(RU_L1_TRX_SPLIT by defult)\n"
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
@@ -71,7 +71,7 @@ schedule_ue_spec_phy_test(
|
||||
uint16_t rnti = 0x1235;
|
||||
uint32_t rb_alloc = 0x1FFFFF;
|
||||
int32_t tpc = 1;
|
||||
int32_t mcs = 10;
|
||||
int32_t mcs = 28;
|
||||
int32_t cqi = 15;
|
||||
int32_t ndi = (frameP*10+subframeP)/8;
|
||||
int32_t dai = 0;
|
||||
|
||||
@@ -238,6 +238,15 @@ NETWORK_CONTROLLER :
|
||||
FLEXRAN_AWAIT_RECONF = "no";
|
||||
};
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
|
||||
@@ -151,8 +151,8 @@ void wakeup_prach_eNB(PHY_VARS_eNB *eNB,RU_t *ru,int frame,int subframe);
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
void wakeup_prach_eNB_br(PHY_VARS_eNB *eNB,RU_t *ru,int frame,int subframe);
|
||||
#endif
|
||||
extern uint8_t get_thread_paralle_stage(void);
|
||||
extern uint8_t get_thread_worker_stage(void);
|
||||
extern uint8_t get_thread_paralle_conf(void);
|
||||
extern uint8_t get_thread_worker_conf(void);
|
||||
|
||||
extern uint8_t nfapi_mode;
|
||||
extern void oai_subframe_ind(uint16_t sfn, uint16_t sf);
|
||||
@@ -224,7 +224,7 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
|
||||
}
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER , 1 );
|
||||
|
||||
if(get_thread_paralle_stage() == 2){
|
||||
if(get_thread_paralle_conf() == PARALLEL_RU_L1_TRX_SPLIT){
|
||||
if(wait_on_condition(&proc[1].mutex_rxtx,&proc[1].cond_rxtx,&proc[1].pipe_ready,"wakeup_tx")<0) {
|
||||
LOG_E(PHY,"Frame %d, subframe %d: TX1 not ready\n",proc[1].frame_rx,proc[1].subframe_rx);
|
||||
return(-1);
|
||||
@@ -246,7 +246,7 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
|
||||
/* CONFLICT RESOLUTION: BEGIN */
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER , 0 );
|
||||
if(oai_exit) return(-1);
|
||||
if(get_thread_paralle_stage() == 0){
|
||||
if(get_thread_paralle_conf() == PARALLEL_SINGLE_THREAD){
|
||||
#ifndef PHY_TX_THREAD
|
||||
phy_procedures_eNB_TX(eNB, proc, 1);
|
||||
#endif
|
||||
@@ -422,8 +422,8 @@ static void* eNB_thread_rxtx( void* param ) {
|
||||
}
|
||||
pthread_mutex_unlock( &proc->mutex_rxtx );
|
||||
if (nfapi_mode!=2){
|
||||
if(get_thread_paralle_stage() == 2) wakeup_tx(eNB,eNB->proc.ru_proc);
|
||||
else if(get_thread_paralle_stage() == 1)
|
||||
if(get_thread_paralle_conf() == PARALLEL_RU_L1_TRX_SPLIT) wakeup_tx(eNB,eNB->proc.ru_proc);
|
||||
else if(get_thread_paralle_conf() == PARALLEL_RU_L1_SPLIT)
|
||||
{
|
||||
phy_procedures_eNB_TX(eNB, proc, 1);
|
||||
wakeup_txfh(proc,eNB->proc.ru_proc);
|
||||
@@ -954,7 +954,7 @@ void init_eNB_proc(int inst) {
|
||||
// attr_te = &proc->attr_te;
|
||||
#endif
|
||||
|
||||
if(get_thread_worker_stage())
|
||||
if(get_thread_worker_conf() == WORKER_ENABLE)
|
||||
{
|
||||
init_te_thread(eNB);
|
||||
init_td_thread(eNB);
|
||||
@@ -963,7 +963,7 @@ void init_eNB_proc(int inst) {
|
||||
|
||||
LOG_I(PHY,"eNB->single_thread_flag:%d\n", eNB->single_thread_flag);
|
||||
|
||||
if (get_thread_paralle_stage()!=0 && nfapi_mode!=2) {
|
||||
if ((get_thread_paralle_conf() == PARALLEL_RU_L1_SPLIT || get_thread_paralle_conf() == PARALLEL_RU_L1_TRX_SPLIT) && nfapi_mode!=2) {
|
||||
pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, proc );
|
||||
pthread_create( &proc_rxtx[1].pthread_rxtx, attr1, tx_thread, proc);
|
||||
}
|
||||
@@ -1030,7 +1030,7 @@ void kill_eNB_proc(int inst) {
|
||||
proc = &eNB->proc;
|
||||
proc_rxtx = &proc->proc_rxtx[0];
|
||||
|
||||
if(get_nprocs() > 2 && codingw) {
|
||||
if(get_thread_worker_conf == WORKER_ENABLE) {
|
||||
kill_td_thread(eNB);
|
||||
kill_te_thread(eNB);
|
||||
}
|
||||
|
||||
+15
-16
@@ -121,9 +121,8 @@ extern int emulate_rf;
|
||||
extern int numerology;
|
||||
extern clock_source_t clock_source;
|
||||
|
||||
extern uint8_t get_thread_paralle_stage(void);
|
||||
extern uint8_t get_thread_worker_stage(void);
|
||||
extern int get_thread_core_number(void);
|
||||
extern uint8_t get_thread_paralle_conf(void);
|
||||
extern uint8_t get_thread_worker_conf(void);
|
||||
extern void phy_init_RU(RU_t*);
|
||||
extern void phy_free_RU(RU_t*);
|
||||
|
||||
@@ -1258,7 +1257,7 @@ void wakeup_eNBs(RU_t *ru) {
|
||||
LOG_D(PHY,"wakeup_eNBs (num %d) for RU %d ru->eNB_top:%p\n",ru->num_eNB,ru->idx, ru->eNB_top);
|
||||
|
||||
|
||||
if (ru->num_eNB==1 && ru->eNB_top!=0 && get_thread_paralle_stage() == 0) {
|
||||
if (ru->num_eNB==1 && ru->eNB_top!=0 && get_thread_paralle_conf() == PARALLEL_SINGLE_THREAD) {
|
||||
// call eNB function directly
|
||||
|
||||
char string[20];
|
||||
@@ -1783,7 +1782,7 @@ static void* ru_thread( void* param ) {
|
||||
if (ru->num_eNB>0) wakeup_eNBs(ru);
|
||||
|
||||
#ifndef PHY_TX_THREAD
|
||||
if(get_thread_paralle_stage() == 0 || ru->num_eNB==0){
|
||||
if(get_thread_paralle_conf() == PARALLEL_SINGLE_THREAD || ru->num_eNB==0){
|
||||
// do TX front-end processing if needed (precoding and/or IDFTs)
|
||||
if (ru->feptx_prec) ru->feptx_prec(ru);
|
||||
|
||||
@@ -2196,7 +2195,7 @@ void init_RU_proc(RU_t *ru) {
|
||||
if(emulate_rf)
|
||||
pthread_create( &proc->pthread_emulateRF, attr_emulateRF, emulatedRF_thread, (void*)proc );
|
||||
|
||||
if (get_thread_paralle_stage() != 0)
|
||||
if (get_thread_paralle_conf() == PARALLEL_RU_L1_SPLIT || get_thread_paralle_conf() == PARALLEL_RU_L1_TRX_SPLIT)
|
||||
pthread_create( &proc->pthread_FH1, attr_FH1, ru_thread_tx, (void*)ru );
|
||||
|
||||
if (ru->function == NGFI_RRU_IF4p5) {
|
||||
@@ -2223,7 +2222,7 @@ void init_RU_proc(RU_t *ru) {
|
||||
pthread_create( &proc->pthread_prach, attr_prach, ru_thread_prach, (void*)ru );
|
||||
}
|
||||
|
||||
if (get_thread_worker_stage()) {
|
||||
if (get_thread_worker_conf() == WORKER_ENABLE) {
|
||||
init_fep_thread(ru,NULL);
|
||||
init_feptx_thread(ru,NULL);
|
||||
}
|
||||
@@ -2261,7 +2260,7 @@ void kill_RU_proc(RU_t *ru)
|
||||
pthread_cond_destroy( &proc->cond_rf_tx);
|
||||
#endif
|
||||
|
||||
if (get_thread_worker_stage()) {
|
||||
if (get_thread_worker_conf() == WORKER_ENABLE) {
|
||||
LOG_D(PHY, "killing FEP thread\n");
|
||||
kill_fep_thread(ru);
|
||||
LOG_D(PHY, "killing FEP TX thread\n");
|
||||
@@ -2310,7 +2309,7 @@ void kill_RU_proc(RU_t *ru)
|
||||
|
||||
LOG_D(PHY, "Joining pthread_FH\n");
|
||||
pthread_join(proc->pthread_FH, NULL);
|
||||
if (!single_thread_flag && get_nprocs() > 4) {
|
||||
if (get_thread_paralle_conf() == PARALLEL_RU_L1_SPLIT || get_thread_paralle_conf() == PARALLEL_RU_L1_TRX_SPLIT) {
|
||||
LOG_D(PHY, "Joining pthread_FHTX\n");
|
||||
pthread_join(proc->pthread_FH1, NULL);
|
||||
}
|
||||
@@ -2584,8 +2583,8 @@ void set_function_spec_param(RU_t *ru)
|
||||
ru->fh_north_out = fh_if4p5_north_out; // send_IF4p5 on reception
|
||||
ru->fh_south_out = tx_rf; // send output to RF
|
||||
ru->fh_north_asynch_in = fh_if4p5_north_asynch_in; // TX packets come asynchronously
|
||||
ru->feprx = (!get_thread_worker_stage()) ? fep_full :ru_fep_full_2thread; // RX DFTs
|
||||
ru->feptx_ofdm = (!get_thread_worker_stage()) ? feptx_ofdm : feptx_ofdm_2thread; // this is fep with idft only (no precoding in RRU)
|
||||
ru->feprx = (get_thread_worker_conf() == WORKER_DISABLE) ? fep_full :ru_fep_full_2thread; // RX DFTs
|
||||
ru->feptx_ofdm = (get_thread_worker_conf() == WORKER_DISABLE) ? feptx_ofdm : feptx_ofdm_2thread; // this is fep with idft only (no precoding in RRU)
|
||||
ru->feptx_prec = NULL;
|
||||
ru->start_if = start_if; // need to start the if interface for if4p5
|
||||
ru->ifdevice.host_type = RRU_HOST;
|
||||
@@ -2606,8 +2605,8 @@ void set_function_spec_param(RU_t *ru)
|
||||
}
|
||||
else if (ru->function == eNodeB_3GPP) {
|
||||
ru->do_prach = 0; // no prach processing in RU
|
||||
ru->feprx = (!get_thread_worker_stage()) ? fep_full : ru_fep_full_2thread; // RX DFTs
|
||||
ru->feptx_ofdm = (!get_thread_worker_stage()) ? feptx_ofdm : feptx_ofdm_2thread; // this is fep with idft and precoding
|
||||
ru->feprx = (get_thread_worker_conf() == WORKER_DISABLE) ? fep_full : ru_fep_full_2thread; // RX DFTs
|
||||
ru->feptx_ofdm = (get_thread_worker_conf() == WORKER_DISABLE) ? feptx_ofdm : feptx_ofdm_2thread; // this is fep with idft and precoding
|
||||
ru->feptx_prec = feptx_prec; // this is fep with idft and precoding
|
||||
ru->fh_north_in = NULL; // no incoming fronthaul from north
|
||||
ru->fh_north_out = NULL; // no outgoing fronthaul to north
|
||||
@@ -2635,9 +2634,9 @@ void set_function_spec_param(RU_t *ru)
|
||||
|
||||
case REMOTE_IF5: // the remote unit is IF5 RRU
|
||||
ru->do_prach = 0;
|
||||
ru->feprx = (!get_thread_worker_stage()) ? fep_full : fep_full; // this is frequency-shift + DFTs
|
||||
ru->feprx = (get_thread_worker_conf() == WORKER_DISABLE) ? fep_full : fep_full; // this is frequency-shift + DFTs
|
||||
ru->feptx_prec = feptx_prec; // need to do transmit Precoding + IDFTs
|
||||
ru->feptx_ofdm = (!get_thread_worker_stage()) ? feptx_ofdm : feptx_ofdm_2thread; // need to do transmit Precoding + IDFTs
|
||||
ru->feptx_ofdm = (get_thread_worker_conf() == WORKER_DISABLE) ? feptx_ofdm : feptx_ofdm_2thread; // need to do transmit Precoding + IDFTs
|
||||
if (ru->if_timing == synch_to_other) {
|
||||
ru->fh_south_in = fh_slave_south_in; // synchronize to master
|
||||
ru->fh_south_out = fh_if5_mobipass_south_out; // use send_IF5 for mobipass
|
||||
@@ -2715,7 +2714,7 @@ void init_RU(char *rf_config_file) {
|
||||
// read in configuration file)
|
||||
printf("configuring RU from file\n");
|
||||
RCconfig_RU();
|
||||
LOG_I(PHY,"number of L1 instances %d, number of RU %d, number of CPU cores %d\n",RC.nb_L1_inst,RC.nb_RU,get_thread_core_number());
|
||||
LOG_I(PHY,"number of L1 instances %d, number of RU %d, number of CPU cores %d\n",RC.nb_L1_inst,RC.nb_RU,get_nprocs());
|
||||
|
||||
if (RC.nb_CC != 0)
|
||||
for (i=0;i<RC.nb_L1_inst;i++)
|
||||
|
||||
@@ -219,47 +219,23 @@ extern void init_eNB_afterRU(void);
|
||||
int transmission_mode=1;
|
||||
int emulate_rf = 0;
|
||||
int numerology = 0;
|
||||
int dis_worker = 1;
|
||||
|
||||
static THREAD_STRUCT thread_struct;
|
||||
void thread_structure_init(void)
|
||||
void set_parallel_conf(int parallel_conf)
|
||||
{
|
||||
thread_struct.core_number = get_nprocs();
|
||||
if(thread_struct.core_number>=8)
|
||||
{
|
||||
thread_struct.paralle_stage = 2;
|
||||
thread_struct.worker_stage = 1;
|
||||
}
|
||||
else if(thread_struct.core_number>=4)
|
||||
{
|
||||
thread_struct.paralle_stage = 1;
|
||||
thread_struct.worker_stage = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
thread_struct.paralle_stage = 0;
|
||||
thread_struct.worker_stage = 0;
|
||||
}
|
||||
if(single_thread_flag) thread_struct.paralle_stage = 0;
|
||||
if(dis_worker) thread_struct.worker_stage = 0;
|
||||
printf("single_thread_flag=%d, dis_worker=%d \n" ,single_thread_flag, dis_worker);
|
||||
printf("~~~~~~~~~~paralle_stage=%d, worker_stage=%d, core_number=%d ~~~~~~~~~~~~~~~~\n",
|
||||
thread_struct.paralle_stage,
|
||||
thread_struct.worker_stage,
|
||||
thread_struct.core_number);
|
||||
}
|
||||
|
||||
uint8_t get_thread_paralle_stage(void)
|
||||
{
|
||||
return thread_struct.paralle_stage;
|
||||
thread_struct.parallel_conf = (PARALLEL_CONF_t)parallel_conf;
|
||||
}
|
||||
uint8_t get_thread_worker_stage(void)
|
||||
void set_parallel_worker_conf(int worker_conf)
|
||||
{
|
||||
return thread_struct.worker_stage;
|
||||
thread_struct.worker_conf = (WORKER_CONF_t)worker_conf;
|
||||
}
|
||||
int get_thread_core_number(void)
|
||||
PARALLEL_CONF_t get_thread_paralle_conf(void)
|
||||
{
|
||||
return thread_struct.core_number;
|
||||
return thread_struct.parallel_conf;
|
||||
}
|
||||
WORKER_CONF_t get_thread_worker_conf(void)
|
||||
{
|
||||
return thread_struct.worker_conf;
|
||||
}
|
||||
|
||||
|
||||
@@ -1177,7 +1153,6 @@ int main( int argc, char **argv )
|
||||
|
||||
printf("wait_eNBs()\n");
|
||||
wait_eNBs();
|
||||
thread_structure_init();
|
||||
|
||||
printf("About to Init RU threads RC.nb_RU:%d\n", RC.nb_RU);
|
||||
if (RC.nb_RU >0) {
|
||||
|
||||
@@ -92,7 +92,6 @@
|
||||
#define CONFIG_HLP_TNOFORK "to ease debugging with gdb\n"
|
||||
|
||||
#define CONFIG_HLP_NUMEROLOGY "adding numerology for 5G\n"
|
||||
#define CONFIG_HLP_WORKER "coding and FEP worker thread disable(enable by defult)\n"
|
||||
#define CONFIG_HLP_EMULATE_RF "Emulated RF enabled(disable by defult)\n"
|
||||
|
||||
#define CONFIG_HLP_DISABLNBIOT "disable nb-iot, even if defined in config\n"
|
||||
@@ -185,7 +184,6 @@
|
||||
{"s" , CONFIG_HLP_SNR, 0, iptr:&snr_dB, defintval:25, TYPE_INT, 0}, \
|
||||
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \
|
||||
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \
|
||||
{"worker-disable" , CONFIG_HLP_WORKER, PARAMFLAG_BOOL, iptr:&dis_worker, defintval:0, TYPE_INT, 0}, \
|
||||
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT, 0} \
|
||||
}
|
||||
|
||||
@@ -278,9 +276,10 @@ PHY_VARS_UE* init_ue_vars(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
uint8_t abstraction_flag);
|
||||
void init_eNB_afterRU(void);
|
||||
void thread_structure_init(void);
|
||||
uint8_t get_thread_paralle_stage(void);
|
||||
uint8_t get_thread_worker_stage(void);
|
||||
int get_thread_core_number(void);
|
||||
PARALLEL_CONF_t get_thread_paralle_conf(void);
|
||||
WORKER_CONF_t get_thread_worker_conf(void);
|
||||
void set_parallel_conf(int parallel_conf);
|
||||
void set_parallel_worker_conf(int worker_conf);
|
||||
|
||||
extern int stop_L1L2(module_id_t enb_id);
|
||||
extern int restart_L1L2(module_id_t enb_id);
|
||||
|
||||
Reference in New Issue
Block a user