diff --git a/common/utils/ocp_itti/intertask_interface.cpp b/common/utils/ocp_itti/intertask_interface.cpp index fd617888cb835b641cc721f8be3cf9c0075edc58..c57526f0b30c7d66c239d2bf93fff166b77373b5 100644 --- a/common/utils/ocp_itti/intertask_interface.cpp +++ b/common/utils/ocp_itti/intertask_interface.cpp @@ -48,7 +48,7 @@ extern "C" { // AssertFatal(leP!=NULL,""); if (leP != NULL) { free(leP); - LOG_I(TMR, "intertask_interface free_mem_block is called, after free leP is %p\n", leP); + LOG_D(TMR, "intertask_interface free_mem_block is called, after free leP is %p\n", leP); leP = NULL; //prevent double free } else { LOG_I(TMR, "intertask_interface free_mem_block is called, but before free leP is NULL\n"); diff --git a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c index 6e5f974837df009f8ac89dcd11b0de6a76ec638b..b86edeaaa8219b8b3a371be7e526433cc35d2740 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c @@ -111,6 +111,8 @@ void pre_scd_nb_rbs_required( module_id_t module_idP, mac_rlc_status_resp_t rlc_status; uint16_t step_size=2; N_RB_DL = to_prb(RC.mac[module_idP]->common_channels[CC_id].mib->message.dl_Bandwidth); + int header_length_last; + int header_length_total; if(N_RB_DL==50) step_size=3; @@ -123,6 +125,7 @@ void pre_scd_nb_rbs_required( module_id_t module_idP, if (pre_scd_activeUE[UE_id] != TRUE) continue; + header_length_total = 0; // store dlsch buffer // clear logical channel interface variables UE_template.dl_buffer_total = 0; @@ -137,8 +140,18 @@ void pre_scd_nb_rbs_required( module_id_t module_idP, #endif ); UE_template.dl_buffer_total += rlc_status.bytes_in_buffer; //storing the total dlsch buffer + if(rlc_status.bytes_in_buffer > 0){ + header_length_last = 1 + 1 + (rlc_status.bytes_in_buffer >= 128); + header_length_total += header_length_last; + } } + if (header_length_total) { + header_length_total -= header_length_last; + header_length_total++; + } + UE_template.dl_buffer_total += header_length_total; + // end of store dlsch buffer // assgin rbs required // Calculate the number of RBs required by each UE on the basis of logical channel's buffer @@ -1834,7 +1847,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP, } } else { /* This is a potentially new SDU opportunity */ // 1st TB - + first_TB_pdu_create_flg = 0; ue_sched_ctl->swap_flag[CC_id][harq_pid] = 0; rlc_status.bytes_in_buffer = 0; @@ -2360,6 +2373,11 @@ schedule_ue_spec_fairRR(module_id_t module_idP, first_TB_pdu_create_flg = 1; }//1st TB end + else{ + LOG_D(MAC,"[eNB %d][DLSCH] Frame %d Subframe %d UE_id %x/%d sdu_length_total %d header_len_dcch %d header_len_dtch %d TBS %d\n", + module_idP, frameP, subframeP, rnti, UE_id, + sdu_length_total , header_len_dcch , header_len_dtch , TBS ); + } // printf("dl sfn=%d, sf=%d, buffer=%d, TBS=%d\n", frameP, subframeP, UE_list->UE_template[CC_id][UE_id].dl_buffer_total, UE_list->eNB_UE_stats[CC_id][UE_id].TBS[select_tb]); diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c index cd753827cd8b9fb8d1d5a798755d7771f3e4d87b..095c8c3a68cdc66ac2108d54571ac3d993f223f5 100644 --- a/targets/RT/USER/lte-ru.c +++ b/targets/RT/USER/lte-ru.c @@ -1935,7 +1935,6 @@ void *pre_scd_thread( void *param ) { int CC_id; int Mod_id; RU_t *ru = (RU_t *)param; - int ret; // L2-emulator can work only one eNB if( NFAPI_MODE==NFAPI_MODE_VNF) @@ -1945,20 +1944,15 @@ void *pre_scd_thread( void *param ) { frame = 0; subframe = 4; - thread_top_init("pre_scd_thread",0,870000,1000000,1000000); + thread_top_init("pre_scd_thread",1,870000,1000000,1000000); while (!oai_exit) { + if (wait_on_condition(&ru->proc.mutex_pre_scd,&ru->proc.cond_pre_scd,&ru->proc.instance_pre_scd,"pre_scd_thread") < 0) break; + if(oai_exit) { break; } - AssertFatal((ret=pthread_mutex_lock(&ru->proc.mutex_pre_scd ))==0,"mutex_lock returns %d\n",ret); - - if (ru->proc.instance_pre_scd < 0) { - pthread_cond_wait(&ru->proc.cond_pre_scd, &ru->proc.mutex_pre_scd); - } - - AssertFatal((ret=pthread_mutex_unlock(&ru->proc.mutex_pre_scd))==0,"mutex_unlock returns %d\n",ret); PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, Mod_id, ENB_FLAG_YES, NOT_A_RNTI, frame, subframe,Mod_id); pdcp_run(&ctxt); @@ -1978,9 +1972,7 @@ void *pre_scd_thread( void *param ) { subframe++; } - AssertFatal((ret=pthread_mutex_lock(&ru->proc.mutex_pre_scd ))==0,"mutex_lock returns %d\n",ret); - ru->proc.instance_pre_scd--; - AssertFatal((ret=pthread_mutex_unlock(&ru->proc.mutex_pre_scd))==0,"mutex_unlock returns %d\n",ret); + if (release_thread(&ru->proc.mutex_pre_scd,&ru->proc.instance_pre_scd,"pre_scd_thread") < 0) break; } eNB_pre_scd_status = 0;