Remove mbsfn_flag from schedule_ue_spec(), simplify pre_processor interface
This commit is contained in:
@@ -421,7 +421,8 @@ set_ul_DAI(int module_idP,
|
||||
void
|
||||
schedule_dlsch(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP, int *mbsfn_flag) {
|
||||
for (int CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
|
||||
schedule_ue_spec(module_idP, CC_id, frameP, subframeP, mbsfn_flag);
|
||||
if (mbsfn_flag[CC_id] == 0)
|
||||
schedule_ue_spec(module_idP, CC_id, frameP, subframeP);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -447,8 +448,7 @@ void
|
||||
schedule_ue_spec(module_id_t module_idP,
|
||||
int CC_id,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP,
|
||||
int *mbsfn_flag)
|
||||
sub_frame_t subframeP)
|
||||
//------------------------------------------------------------------------------
|
||||
{
|
||||
int UE_id;
|
||||
@@ -569,13 +569,10 @@ schedule_ue_spec(module_id_t module_idP,
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR,
|
||||
VCD_FUNCTION_IN);
|
||||
start_meas(&eNB->schedule_dlsch_preprocessor);
|
||||
memset(eNB->slice_info.rballoc_sub, 0, sizeof(eNB->slice_info.rballoc_sub));
|
||||
dlsch_scheduler_pre_processor(module_idP,
|
||||
0, //slice_idxP,
|
||||
CC_id,
|
||||
frameP,
|
||||
subframeP,
|
||||
mbsfn_flag,
|
||||
eNB->slice_info.rballoc_sub);
|
||||
subframeP);
|
||||
stop_meas(&eNB->schedule_dlsch_preprocessor);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR,
|
||||
VCD_FUNCTION_OUT);
|
||||
@@ -597,9 +594,6 @@ schedule_ue_spec(module_id_t module_idP,
|
||||
CC_id);
|
||||
dl_req = &eNB->DL_req[CC_id].dl_config_request_body;
|
||||
|
||||
//if (mbsfn_flag[CC_id] > 0)
|
||||
// return;
|
||||
|
||||
for (UE_id = UE_list->head; UE_id >= 0; UE_id = UE_list->next[UE_id]) {
|
||||
LOG_D(MAC, "doing schedule_ue_spec for CC_id %d UE %d\n",
|
||||
CC_id,
|
||||
@@ -1627,8 +1621,7 @@ schedule_ue_spec(module_id_t module_idP,
|
||||
|
||||
fill_DLSCH_dci(module_idP,
|
||||
frameP,
|
||||
subframeP,
|
||||
mbsfn_flag);
|
||||
subframeP);
|
||||
stop_meas(&eNB->schedule_dlsch);
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_SCHEDULE_DLSCH,
|
||||
VCD_FUNCTION_OUT);
|
||||
@@ -2520,8 +2513,7 @@ schedule_ue_spec_br(module_id_t module_idP,
|
||||
void
|
||||
fill_DLSCH_dci(module_id_t module_idP,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP,
|
||||
int *mbsfn_flagP)
|
||||
sub_frame_t subframeP)
|
||||
//------------------------------------------------------------------------------
|
||||
{
|
||||
// loop over all allocated UEs and compute frequency allocations for PDSCH
|
||||
@@ -2550,9 +2542,6 @@ fill_DLSCH_dci(module_id_t module_idP,
|
||||
LOG_D(MAC, "Doing fill DCI for CC_id %d\n",
|
||||
CC_id);
|
||||
|
||||
if (mbsfn_flagP[CC_id] > 0)
|
||||
continue;
|
||||
|
||||
cc = &eNB->common_channels[CC_id];
|
||||
N_RBG = to_rbg(cc->mib->message.dl_Bandwidth);
|
||||
N_RB_DL = to_prb(cc->mib->message.dl_Bandwidth);
|
||||
|
||||
@@ -619,8 +619,7 @@ void dlsch_scheduler_pre_processor_fairRR (module_id_t Mod_id,
|
||||
min_rb_unit,
|
||||
(uint16_t (*)[MAX_MOBILES_PER_ENB])nb_rbs_required,
|
||||
rballoc_sub,
|
||||
MIMO_mode_indicator,
|
||||
mbsfn_flag);
|
||||
MIMO_mode_indicator);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -142,9 +142,8 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
|
||||
@param Mod_id Instance of eNB
|
||||
@param frame Frame index
|
||||
@param subframe Index of subframe
|
||||
@param mbsfn_flag Indicates that this subframe is for MCH/MCCH
|
||||
*/
|
||||
void fill_DLSCH_dci(module_id_t module_idP,frame_t frameP,sub_frame_t subframe,int *mbsfn_flag);
|
||||
void fill_DLSCH_dci(module_id_t module_idP,frame_t frameP,sub_frame_t subframe);
|
||||
|
||||
/** \brief UE specific DLSCH scheduling. Retrieves next ue to be schduled from round-robin scheduler and gets the appropriate harq_pid for the subframe from PHY. If the process is active and requires a retransmission, it schedules the retransmission with the same PRB count and MCS as the first transmission. Otherwise it consults RLC for DCCH/DTCH SDUs (status with maximum number of available PRBS), builds the MAC header (timing advance sent by default) and copies
|
||||
@param Mod_id Instance ID of eNB
|
||||
@@ -159,8 +158,7 @@ void schedule_dlsch(module_id_t module_idP, frame_t frameP,
|
||||
void schedule_ue_spec(module_id_t module_idP,
|
||||
int CC_id,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframe,
|
||||
int *mbsfn_flag);
|
||||
sub_frame_t subframe);
|
||||
void schedule_ue_spec_br(module_id_t module_idP,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP);
|
||||
@@ -234,21 +232,18 @@ void clear_nfapi_information(eNB_MAC_INST *eNB, int CC_idP,
|
||||
|
||||
|
||||
void dlsch_scheduler_pre_processor(module_id_t module_idP,
|
||||
int slice_idxP,
|
||||
int CC_id,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframe,
|
||||
int *mbsfn_flag,
|
||||
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX]);
|
||||
sub_frame_t subframe);
|
||||
|
||||
void dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
|
||||
int slice_idx,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP,
|
||||
int min_rb_unit[NFAPI_CC_MAX],
|
||||
uint16_t nb_rbs_required[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB],
|
||||
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX],
|
||||
uint8_t MIMO_mode_indicator[NFAPI_CC_MAX][N_RBG_MAX],
|
||||
int *mbsfn_flag);
|
||||
int slice_idx,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP,
|
||||
int min_rb_unit[NFAPI_CC_MAX],
|
||||
uint16_t nb_rbs_required[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB],
|
||||
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX],
|
||||
uint8_t MIMO_mode_indicator[NFAPI_CC_MAX][N_RBG_MAX]);
|
||||
|
||||
void dlsch_scheduler_pre_processor_partitioning(module_id_t Mod_id,
|
||||
int slice_idx,
|
||||
|
||||
@@ -879,15 +879,16 @@ void dlsch_scheduler_pre_processor_intraslice_sharing(module_id_t Mod_id,
|
||||
// This function assigns pre-available RBS to each UE in specified sub-bands before scheduling is done
|
||||
void
|
||||
dlsch_scheduler_pre_processor(module_id_t Mod_id,
|
||||
int slice_idx,
|
||||
int CC_id,
|
||||
frame_t frameP,
|
||||
sub_frame_t subframeP,
|
||||
int *mbsfn_flag,
|
||||
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX]) {
|
||||
sub_frame_t subframeP) {
|
||||
int UE_id;
|
||||
uint8_t CC_id;
|
||||
uint16_t i, j;
|
||||
int slice_idx = 0;
|
||||
int min_rb_unit[NFAPI_CC_MAX];
|
||||
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX];
|
||||
memset(rballoc_sub, 0, sizeof(rballoc_sub));
|
||||
|
||||
eNB_MAC_INST *eNB = RC.mac[Mod_id];
|
||||
slice_info_t *sli = &eNB->slice_info;
|
||||
uint16_t (*nb_rbs_required)[MAX_MOBILES_PER_ENB] = sli->pre_processor_results[slice_idx].nb_rbs_required;
|
||||
@@ -907,8 +908,7 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id,
|
||||
min_rb_unit,
|
||||
nb_rbs_required,
|
||||
rballoc_sub,
|
||||
MIMO_mode_indicator,
|
||||
mbsfn_flag); // FIXME: Not sure if useful
|
||||
MIMO_mode_indicator);
|
||||
// STATUS
|
||||
// Store the DLSCH buffer for each logical channel
|
||||
store_dlsch_buffer(Mod_id,
|
||||
@@ -1005,8 +1005,7 @@ dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
|
||||
int min_rb_unit[NFAPI_CC_MAX],
|
||||
uint16_t nb_rbs_required[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB],
|
||||
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX],
|
||||
uint8_t MIMO_mode_indicator[NFAPI_CC_MAX][N_RBG_MAX],
|
||||
int *mbsfn_flag) {
|
||||
uint8_t MIMO_mode_indicator[NFAPI_CC_MAX][N_RBG_MAX]) {
|
||||
int UE_id;
|
||||
uint8_t CC_id;
|
||||
int i, j;
|
||||
@@ -1025,9 +1024,6 @@ dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
|
||||
N_RBG[CC_id] = to_rbg(cc->mib->message.dl_Bandwidth);
|
||||
min_rb_unit[CC_id] = get_min_rb_unit(module_idP, CC_id);
|
||||
|
||||
if (mbsfn_flag[CC_id] > 0) // If this CC is allocated for MBSFN skip it here
|
||||
continue;
|
||||
|
||||
for (UE_id = 0; UE_id < MAX_MOBILES_PER_ENB; ++UE_id) {
|
||||
UE_list = &RC.mac[module_idP]->UE_list;
|
||||
ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
|
||||
|
||||
Reference in New Issue
Block a user