Commit 65d8402b authored by Robert Schmidt's avatar Robert Schmidt

Remove mbsfn_flag from schedule_ue_spec(), simplify pre_processor interface

parent 64f2b566
...@@ -421,7 +421,8 @@ set_ul_DAI(int module_idP, ...@@ -421,7 +421,8 @@ set_ul_DAI(int module_idP,
void void
schedule_dlsch(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP, int *mbsfn_flag) { 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++) { 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 ...@@ -447,8 +448,7 @@ void
schedule_ue_spec(module_id_t module_idP, schedule_ue_spec(module_id_t module_idP,
int CC_id, int CC_id,
frame_t frameP, frame_t frameP,
sub_frame_t subframeP, sub_frame_t subframeP)
int *mbsfn_flag)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
{ {
int UE_id; int UE_id;
...@@ -569,13 +569,10 @@ schedule_ue_spec(module_id_t module_idP, ...@@ -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_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR,
VCD_FUNCTION_IN); VCD_FUNCTION_IN);
start_meas(&eNB->schedule_dlsch_preprocessor); 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, dlsch_scheduler_pre_processor(module_idP,
0, //slice_idxP, CC_id,
frameP, frameP,
subframeP, subframeP);
mbsfn_flag,
eNB->slice_info.rballoc_sub);
stop_meas(&eNB->schedule_dlsch_preprocessor); stop_meas(&eNB->schedule_dlsch_preprocessor);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR, VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR,
VCD_FUNCTION_OUT); VCD_FUNCTION_OUT);
...@@ -597,9 +594,6 @@ schedule_ue_spec(module_id_t module_idP, ...@@ -597,9 +594,6 @@ schedule_ue_spec(module_id_t module_idP,
CC_id); CC_id);
dl_req = &eNB->DL_req[CC_id].dl_config_request_body; 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]) { 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", LOG_D(MAC, "doing schedule_ue_spec for CC_id %d UE %d\n",
CC_id, CC_id,
...@@ -1627,8 +1621,7 @@ schedule_ue_spec(module_id_t module_idP, ...@@ -1627,8 +1621,7 @@ schedule_ue_spec(module_id_t module_idP,
fill_DLSCH_dci(module_idP, fill_DLSCH_dci(module_idP,
frameP, frameP,
subframeP, subframeP);
mbsfn_flag);
stop_meas(&eNB->schedule_dlsch); stop_meas(&eNB->schedule_dlsch);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_SCHEDULE_DLSCH, VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_SCHEDULE_DLSCH,
VCD_FUNCTION_OUT); VCD_FUNCTION_OUT);
...@@ -2520,8 +2513,7 @@ schedule_ue_spec_br(module_id_t module_idP, ...@@ -2520,8 +2513,7 @@ schedule_ue_spec_br(module_id_t module_idP,
void void
fill_DLSCH_dci(module_id_t module_idP, fill_DLSCH_dci(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t subframeP, sub_frame_t subframeP)
int *mbsfn_flagP)
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
{ {
// loop over all allocated UEs and compute frequency allocations for PDSCH // loop over all allocated UEs and compute frequency allocations for PDSCH
...@@ -2550,9 +2542,6 @@ fill_DLSCH_dci(module_id_t module_idP, ...@@ -2550,9 +2542,6 @@ fill_DLSCH_dci(module_id_t module_idP,
LOG_D(MAC, "Doing fill DCI for CC_id %d\n", LOG_D(MAC, "Doing fill DCI for CC_id %d\n",
CC_id); CC_id);
if (mbsfn_flagP[CC_id] > 0)
continue;
cc = &eNB->common_channels[CC_id]; cc = &eNB->common_channels[CC_id];
N_RBG = to_rbg(cc->mib->message.dl_Bandwidth); N_RBG = to_rbg(cc->mib->message.dl_Bandwidth);
N_RB_DL = to_prb(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, ...@@ -619,8 +619,7 @@ void dlsch_scheduler_pre_processor_fairRR (module_id_t Mod_id,
min_rb_unit, min_rb_unit,
(uint16_t (*)[MAX_MOBILES_PER_ENB])nb_rbs_required, (uint16_t (*)[MAX_MOBILES_PER_ENB])nb_rbs_required,
rballoc_sub, rballoc_sub,
MIMO_mode_indicator, MIMO_mode_indicator);
mbsfn_flag);
} }
} }
......
...@@ -142,9 +142,8 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP, ...@@ -142,9 +142,8 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
@param Mod_id Instance of eNB @param Mod_id Instance of eNB
@param frame Frame index @param frame Frame index
@param subframe Index of subframe @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 /** \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 @param Mod_id Instance ID of eNB
...@@ -159,8 +158,7 @@ void schedule_dlsch(module_id_t module_idP, frame_t frameP, ...@@ -159,8 +158,7 @@ void schedule_dlsch(module_id_t module_idP, frame_t frameP,
void schedule_ue_spec(module_id_t module_idP, void schedule_ue_spec(module_id_t module_idP,
int CC_id, int CC_id,
frame_t frameP, frame_t frameP,
sub_frame_t subframe, sub_frame_t subframe);
int *mbsfn_flag);
void schedule_ue_spec_br(module_id_t module_idP, void schedule_ue_spec_br(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t subframeP); sub_frame_t subframeP);
...@@ -234,11 +232,9 @@ void clear_nfapi_information(eNB_MAC_INST *eNB, int CC_idP, ...@@ -234,11 +232,9 @@ void clear_nfapi_information(eNB_MAC_INST *eNB, int CC_idP,
void dlsch_scheduler_pre_processor(module_id_t module_idP, void dlsch_scheduler_pre_processor(module_id_t module_idP,
int slice_idxP, int CC_id,
frame_t frameP, frame_t frameP,
sub_frame_t subframe, sub_frame_t subframe);
int *mbsfn_flag,
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX]);
void dlsch_scheduler_pre_processor_reset(module_id_t module_idP, void dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
int slice_idx, int slice_idx,
...@@ -247,8 +243,7 @@ void dlsch_scheduler_pre_processor_reset(module_id_t module_idP, ...@@ -247,8 +243,7 @@ void dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
int min_rb_unit[NFAPI_CC_MAX], int min_rb_unit[NFAPI_CC_MAX],
uint16_t nb_rbs_required[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB], uint16_t nb_rbs_required[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB],
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX], uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX],
uint8_t MIMO_mode_indicator[NFAPI_CC_MAX][N_RBG_MAX], uint8_t MIMO_mode_indicator[NFAPI_CC_MAX][N_RBG_MAX]);
int *mbsfn_flag);
void dlsch_scheduler_pre_processor_partitioning(module_id_t Mod_id, void dlsch_scheduler_pre_processor_partitioning(module_id_t Mod_id,
int slice_idx, int slice_idx,
......
...@@ -879,15 +879,16 @@ void dlsch_scheduler_pre_processor_intraslice_sharing(module_id_t Mod_id, ...@@ -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 // This function assigns pre-available RBS to each UE in specified sub-bands before scheduling is done
void void
dlsch_scheduler_pre_processor(module_id_t Mod_id, dlsch_scheduler_pre_processor(module_id_t Mod_id,
int slice_idx, int CC_id,
frame_t frameP, frame_t frameP,
sub_frame_t subframeP, sub_frame_t subframeP) {
int *mbsfn_flag,
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX]) {
int UE_id; int UE_id;
uint8_t CC_id;
uint16_t i, j; uint16_t i, j;
int slice_idx = 0;
int min_rb_unit[NFAPI_CC_MAX]; 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]; eNB_MAC_INST *eNB = RC.mac[Mod_id];
slice_info_t *sli = &eNB->slice_info; 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; 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, ...@@ -907,8 +908,7 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id,
min_rb_unit, min_rb_unit,
nb_rbs_required, nb_rbs_required,
rballoc_sub, rballoc_sub,
MIMO_mode_indicator, MIMO_mode_indicator);
mbsfn_flag); // FIXME: Not sure if useful
// STATUS // STATUS
// Store the DLSCH buffer for each logical channel // Store the DLSCH buffer for each logical channel
store_dlsch_buffer(Mod_id, store_dlsch_buffer(Mod_id,
...@@ -1005,8 +1005,7 @@ dlsch_scheduler_pre_processor_reset(module_id_t module_idP, ...@@ -1005,8 +1005,7 @@ dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
int min_rb_unit[NFAPI_CC_MAX], int min_rb_unit[NFAPI_CC_MAX],
uint16_t nb_rbs_required[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB], uint16_t nb_rbs_required[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB],
uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX], uint8_t rballoc_sub[NFAPI_CC_MAX][N_RBG_MAX],
uint8_t MIMO_mode_indicator[NFAPI_CC_MAX][N_RBG_MAX], uint8_t MIMO_mode_indicator[NFAPI_CC_MAX][N_RBG_MAX]) {
int *mbsfn_flag) {
int UE_id; int UE_id;
uint8_t CC_id; uint8_t CC_id;
int i, j; int i, j;
...@@ -1025,9 +1024,6 @@ dlsch_scheduler_pre_processor_reset(module_id_t module_idP, ...@@ -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); N_RBG[CC_id] = to_rbg(cc->mib->message.dl_Bandwidth);
min_rb_unit[CC_id] = get_min_rb_unit(module_idP, CC_id); 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) { for (UE_id = 0; UE_id < MAX_MOBILES_PER_ENB; ++UE_id) {
UE_list = &RC.mac[module_idP]->UE_list; UE_list = &RC.mac[module_idP]->UE_list;
ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id]; ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment