fix total usable RBs when pucch rb=6
This commit is contained in:
@@ -876,9 +876,9 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) {
|
|||||||
AssertFatal (0,
|
AssertFatal (0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 2(N_RB_DL %d)!\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 2(N_RB_DL %d)!\n",
|
||||||
RC.config_file_name, i, prach_freq_offset,N_RB_DL);
|
RC.config_file_name, i, prach_freq_offset,N_RB_DL);
|
||||||
if (((N_RB_DL == 50) || (N_RB_DL == 100)) && (prach_freq_offset != 3))
|
if (((N_RB_DL == 50) || (N_RB_DL == 100)) && (prach_freq_offset < 3))
|
||||||
AssertFatal (0,
|
AssertFatal (0,
|
||||||
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 3(N_RB_DL %d)!\n",
|
"Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_freq_offset choice: 3,4(N_RB_DL %d)!\n",
|
||||||
RC.config_file_name, i, prach_freq_offset,N_RB_DL);
|
RC.config_file_name, i, prach_freq_offset,N_RB_DL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1710,6 +1710,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
|||||||
hi_dci0_req = &eNB->HI_DCI0_req[CC_id][subframeP].hi_dci0_request_body;
|
hi_dci0_req = &eNB->HI_DCI0_req[CC_id][subframeP].hi_dci0_request_body;
|
||||||
eNB->HI_DCI0_req[CC_id][subframeP].sfn_sf = (frameP<<4)+subframeP;
|
eNB->HI_DCI0_req[CC_id][subframeP].sfn_sf = (frameP<<4)+subframeP;
|
||||||
ul_req_tmp = &eNB->UL_req_tmp[CC_id][sched_subframeP].ul_config_request_body;
|
ul_req_tmp = &eNB->UL_req_tmp[CC_id][sched_subframeP].ul_config_request_body;
|
||||||
|
nfapi_ul_config_request_t *ul_req = &eNB->UL_req_tmp[CC_id][sched_subframeP];
|
||||||
|
|
||||||
ULSCH_first_end = 0;
|
ULSCH_first_end = 0;
|
||||||
cc = &eNB->common_channels[CC_id];
|
cc = &eNB->common_channels[CC_id];
|
||||||
@@ -1959,6 +1960,12 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
|||||||
#endif
|
#endif
|
||||||
ul_req_tmp->number_of_pdus++;
|
ul_req_tmp->number_of_pdus++;
|
||||||
eNB->ul_handle++;
|
eNB->ul_handle++;
|
||||||
|
ul_req->header.message_id = NFAPI_UL_CONFIG_REQUEST;
|
||||||
|
ul_req_tmp->tl.tag = NFAPI_UL_CONFIG_REQUEST_BODY_TAG;
|
||||||
|
uint16_t ul_sched_frame = sched_frame;
|
||||||
|
uint16_t ul_sched_subframeP = sched_subframeP;
|
||||||
|
add_subframe(&ul_sched_frame, &ul_sched_subframeP, 2);
|
||||||
|
ul_req->sfn_sf = ul_sched_frame<<4|ul_sched_subframeP;
|
||||||
|
|
||||||
add_ue_ulsch_info(module_idP,
|
add_ue_ulsch_info(module_idP,
|
||||||
CC_id,
|
CC_id,
|
||||||
@@ -2096,6 +2103,10 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
|||||||
#endif
|
#endif
|
||||||
ul_req_tmp->number_of_pdus++;
|
ul_req_tmp->number_of_pdus++;
|
||||||
eNB->ul_handle++;
|
eNB->ul_handle++;
|
||||||
|
ul_req->header.message_id = NFAPI_UL_CONFIG_REQUEST;
|
||||||
|
ul_req_tmp->tl.tag = NFAPI_UL_CONFIG_REQUEST_BODY_TAG;
|
||||||
|
ul_req->sfn_sf = sched_frame<<4|sched_subframeP;
|
||||||
|
|
||||||
LOG_D(MAC,"[eNB %d] CC_id %d Frame %d, subframeP %d: Generated ULSCH DCI for next UE_id %d, format 0(round >0)\n", module_idP,CC_id,frameP,subframeP,UE_id);
|
LOG_D(MAC,"[eNB %d] CC_id %d Frame %d, subframeP %d: Generated ULSCH DCI for next UE_id %d, format 0(round >0)\n", module_idP,CC_id,frameP,subframeP,UE_id);
|
||||||
|
|
||||||
// increment first rb for next UE allocation
|
// increment first rb for next UE allocation
|
||||||
|
|||||||
@@ -2700,6 +2700,7 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
|
|||||||
int16_t tx_power;
|
int16_t tx_power;
|
||||||
int UE_id;
|
int UE_id;
|
||||||
rnti_t rnti;
|
rnti_t rnti;
|
||||||
|
COMMON_channels_t *cc;
|
||||||
LOG_D(MAC,"In ulsch_preprocessor: ulsch ue select\n");
|
LOG_D(MAC,"In ulsch_preprocessor: ulsch ue select\n");
|
||||||
//ue select
|
//ue select
|
||||||
ulsch_scheduler_pre_ue_select(module_idP,frameP,subframeP,sched_subframeP,ulsch_ue_select);
|
ulsch_scheduler_pre_ue_select(module_idP,frameP,subframeP,sched_subframeP,ulsch_ue_select);
|
||||||
@@ -2730,22 +2731,51 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
|
|||||||
}
|
}
|
||||||
|
|
||||||
rnti = UE_RNTI(CC_id,UE_id);
|
rnti = UE_RNTI(CC_id,UE_id);
|
||||||
if(frame_parms->N_RB_UL == 25){
|
cc = &RC.mac[module_idP]->common_channels[CC_id];
|
||||||
if ( first_rb[CC_id] >= frame_parms->N_RB_UL-1 ){
|
if (cc->tdd_Config) {
|
||||||
|
if (frame_parms->N_RB_UL == 25) {
|
||||||
|
if (first_rb[CC_id] >= frame_parms->N_RB_UL-1 ) {
|
||||||
|
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
|
||||||
|
module_idP,frameP,subframeP,UE_id,rnti,CC_id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// calculate the average rb ( remain UE)
|
||||||
|
total_rbs = frame_parms->N_RB_UL-1-first_rb[CC_id];
|
||||||
|
} else if (frame_parms->N_RB_UL == 50) {
|
||||||
|
if (first_rb[CC_id] >= frame_parms->N_RB_UL-2 ) {
|
||||||
|
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
|
||||||
|
module_idP,frameP,subframeP,UE_id,rnti,CC_id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// calculate the average rb ( remain UE)
|
||||||
|
total_rbs = frame_parms->N_RB_UL-2-first_rb[CC_id];
|
||||||
|
} else {
|
||||||
|
if (first_rb[CC_id] >= frame_parms->N_RB_UL-3 ) {
|
||||||
|
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
|
||||||
|
module_idP,frameP,subframeP,UE_id,rnti,CC_id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// calculate the average rb ( remain UE)
|
||||||
|
total_rbs = frame_parms->N_RB_UL-3-first_rb[CC_id];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(frame_parms->N_RB_UL == 25){
|
||||||
|
if ( first_rb[CC_id] >= frame_parms->N_RB_UL-1 ){
|
||||||
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
|
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
|
||||||
module_idP,frameP,subframeP,UE_id,rnti,CC_id);
|
module_idP,frameP,subframeP,UE_id,rnti,CC_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// calculate the average rb ( remain UE)
|
// calculate the average rb ( remain UE)
|
||||||
total_rbs = frame_parms->N_RB_UL-1-first_rb[CC_id];
|
total_rbs = frame_parms->N_RB_UL-1-first_rb[CC_id];
|
||||||
}else{
|
}else{
|
||||||
if ( first_rb[CC_id] >= frame_parms->N_RB_UL-2 ){
|
if ( first_rb[CC_id] >= frame_parms->N_RB_UL-2 ){
|
||||||
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
|
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d: dropping, not enough RBs\n",
|
||||||
module_idP,frameP,subframeP,UE_id,rnti,CC_id);
|
module_idP,frameP,subframeP,UE_id,rnti,CC_id);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
// calculate the average rb ( remain UE)
|
||||||
|
total_rbs = frame_parms->N_RB_UL-2-first_rb[CC_id];
|
||||||
}
|
}
|
||||||
// calculate the average rb ( remain UE)
|
|
||||||
total_rbs = frame_parms->N_RB_UL-2-first_rb[CC_id];
|
|
||||||
}
|
}
|
||||||
average_rbs = (int)round((double)total_rbs/(double)ue_num_temp);
|
average_rbs = (int)round((double)total_rbs/(double)ue_num_temp);
|
||||||
if ( average_rbs < 3 ) {
|
if ( average_rbs < 3 ) {
|
||||||
|
|||||||
@@ -550,7 +550,7 @@ rlc_am_mac_status_indication (
|
|||||||
}
|
}
|
||||||
|
|
||||||
rlc->last_absolute_subframe_status_indication = PROTOCOL_CTXT_TIME_MILLI_SECONDS(ctxt_pP);
|
rlc->last_absolute_subframe_status_indication = PROTOCOL_CTXT_TIME_MILLI_SECONDS(ctxt_pP);
|
||||||
|
if (tb_sizeP > 0)
|
||||||
rlc->nb_bytes_requested_by_mac = tb_sizeP;
|
rlc->nb_bytes_requested_by_mac = tb_sizeP;
|
||||||
|
|
||||||
status_resp.buffer_occupancy_in_bytes = rlc_am_get_buffer_occupancy_in_bytes(ctxt_pP, rlc);
|
status_resp.buffer_occupancy_in_bytes = rlc_am_get_buffer_occupancy_in_bytes(ctxt_pP, rlc);
|
||||||
|
|||||||
Reference in New Issue
Block a user