Commit fd2e5fee authored by Robert Schmidt's avatar Robert Schmidt

Clean up schedule_dlsch()

parent 2f324487
This diff is collapsed.
...@@ -1627,7 +1627,7 @@ fill_nfapi_dlsch_config(eNB_MAC_INST *eNB, ...@@ -1627,7 +1627,7 @@ fill_nfapi_dlsch_config(eNB_MAC_INST *eNB,
uint8_t resource_allocation_type, uint8_t resource_allocation_type,
uint8_t uint8_t
virtual_resource_block_assignment_flag, virtual_resource_block_assignment_flag,
uint16_t resource_block_coding, uint32_t resource_block_coding,
uint8_t modulation, uint8_t modulation,
uint8_t redundancy_version, uint8_t redundancy_version,
uint8_t transport_blocks, uint8_t transport_blocks,
......
...@@ -137,14 +137,6 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP, ...@@ -137,14 +137,6 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
unsigned char sched_subframeP, unsigned char sched_subframeP,
int *emtc_active); int *emtc_active);
/** \brief Second stage of DLSCH scheduling, after schedule_SI, schedule_RA and schedule_dlsch have been called. This routine first allocates random frequency assignments for SI and RA SDUs using distributed VRB allocations and adds the corresponding DCI SDU to the DCI buffer for PHY. It then loops over the UE specific DCIs previously allocated and fills in the remaining DCI fields related to frequency allocation. It assumes localized allocation of type 0 (DCI.rah=0). The allocation is done for tranmission modes 1,2,4.
@param Mod_id Instance of eNB
@param CC_id the component carrier
@param frame Frame index
@param subframe Index of subframe
*/
void fill_DLSCH_dci(module_id_t module_idP, int CC_id, 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
@param frame Frame index @param frame Frame index
...@@ -1105,7 +1097,7 @@ void fill_nfapi_dlsch_config(eNB_MAC_INST *eNB, ...@@ -1105,7 +1097,7 @@ void fill_nfapi_dlsch_config(eNB_MAC_INST *eNB,
uint8_t resource_allocation_type, uint8_t resource_allocation_type,
uint8_t uint8_t
virtual_resource_block_assignment_flag, virtual_resource_block_assignment_flag,
uint16_t resource_block_coding, uint32_t resource_block_coding,
uint8_t modulation, uint8_t modulation,
uint8_t redundancy_version, uint8_t redundancy_version,
uint8_t transport_blocks, uint8_t transport_blocks,
......
...@@ -287,6 +287,7 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id, ...@@ -287,6 +287,7 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id,
int last_UE_id = -1; int last_UE_id = -1;
for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) { for (int UE_id = UE_info->list.head; UE_id >= 0; UE_id = UE_info->list.next[UE_id]) {
UE_sched_ctrl_t *ue_sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; UE_sched_ctrl_t *ue_sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
const UE_TEMPLATE *ue_template = &UE_info->UE_template[CC_id][UE_id];
/* initialize per-UE scheduling information */ /* initialize per-UE scheduling information */
ue_sched_ctrl->pre_nb_available_rbs[CC_id] = 0; ue_sched_ctrl->pre_nb_available_rbs[CC_id] = 0;
...@@ -302,6 +303,17 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id, ...@@ -302,6 +303,17 @@ dlsch_scheduler_pre_processor(module_id_t Mod_id,
LOG_E(MAC, "UE %d RNTI %x is NOT active!\n", UE_id, rnti); LOG_E(MAC, "UE %d RNTI %x is NOT active!\n", UE_id, rnti);
continue; continue;
} }
if (ue_template->rach_resource_type > 0) {
LOG_D(MAC,
"UE %d is RACH resource type %d\n",
UE_id,
ue_template->rach_resource_type);
continue;
}
if (mac_eNB_get_rrc_status(Mod_id, rnti) < RRC_CONNECTED) {
LOG_D(MAC, "UE %d is not in RRC_CONNECTED\n", UE_id);
continue;
}
/* define UEs to schedule */ /* define UEs to schedule */
if (first) { if (first) {
......
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