edit scheduler for emtc UE
This commit is contained in:
@@ -537,6 +537,18 @@ schedule_ue_spec_br(
|
|||||||
if (mbsfn_flag[CC_id] > 0)
|
if (mbsfn_flag[CC_id] > 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
unsigned int rmax;
|
||||||
|
unsigned int narrowBandindex_index;
|
||||||
|
unsigned int first_rb, rep, reps;
|
||||||
|
|
||||||
|
// rmax from RRC connection setup
|
||||||
|
getRepetition(&UE_list->UE_template[CC_id][UE_id], &rmax, &narrowBandindex_index);
|
||||||
|
|
||||||
|
first_rb = narrowband_to_first_rb(cc,narrowBandindex_index);
|
||||||
|
|
||||||
|
if (vrb_map[first_rb] == 1) // skip scheduling emtc UEs if first RB is taken
|
||||||
|
continue ;
|
||||||
|
|
||||||
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])
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -549,14 +561,7 @@ schedule_ue_spec_br(
|
|||||||
// at the end of the scheduler make sure the right subbands coresponding to these RBs are allocated the UE in UE_template directely
|
// at the end of the scheduler make sure the right subbands coresponding to these RBs are allocated the UE in UE_template directely
|
||||||
// also check on the fill_DCI function
|
// also check on the fill_DCI function
|
||||||
|
|
||||||
unsigned int rmax;
|
|
||||||
unsigned int narrowBandindex_index;
|
|
||||||
unsigned int first_rb, rep, reps;
|
|
||||||
|
|
||||||
// rmax from RRC connection setup
|
|
||||||
getRepetition(&UE_list->UE_template[CC_id][UE_id], &rmax, &narrowBandindex_index);
|
|
||||||
|
|
||||||
first_rb = narrowband_to_first_rb(cc,narrowBandindex_index);
|
|
||||||
|
|
||||||
vrb_map[first_rb] = 1;
|
vrb_map[first_rb] = 1;
|
||||||
vrb_map[first_rb + 1] = 1;
|
vrb_map[first_rb + 1] = 1;
|
||||||
|
|||||||
@@ -999,6 +999,9 @@ abort();
|
|||||||
rb_table_index--;
|
rb_table_index--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//********************************* [khalid] here will make the modification for emtc
|
||||||
|
|
||||||
|
|
||||||
TBS = get_TBS_UL(mcs,rb_table[rb_table_index]);
|
TBS = get_TBS_UL(mcs,rb_table[rb_table_index]);
|
||||||
UE_list->eNB_UE_stats[CC_id][UE_id].total_rbs_used_rx+=rb_table[rb_table_index];
|
UE_list->eNB_UE_stats[CC_id][UE_id].total_rbs_used_rx+=rb_table[rb_table_index];
|
||||||
UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_TBS=TBS;
|
UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_TBS=TBS;
|
||||||
@@ -1016,10 +1019,10 @@ abort();
|
|||||||
|
|
||||||
// bad indices : 20 (40 PRB), 21 (45 PRB), 22 (48 PRB)
|
// bad indices : 20 (40 PRB), 21 (45 PRB), 22 (48 PRB)
|
||||||
// increment for next UE allocation
|
// increment for next UE allocation
|
||||||
first_rb[CC_id]+=rb_table[rb_table_index];
|
first_rb[CC_id]+=rb_table[rb_table_index]; // khalid just shifting the first rb for next ue to schedule
|
||||||
//store for possible retransmission
|
//store for possible retransmission
|
||||||
UE_template->nb_rb_ul[harq_pid] = rb_table[rb_table_index];
|
UE_template->nb_rb_ul[harq_pid] = rb_table[rb_table_index];
|
||||||
UE_template->first_rb_ul[harq_pid] = first_rb[CC_id];
|
UE_template->first_rb_ul[harq_pid] = first_rb[CC_id]; // khalid? should store the firsy
|
||||||
|
|
||||||
UE_sched_ctrl->ul_scheduled |= (1<<harq_pid);
|
UE_sched_ctrl->ul_scheduled |= (1<<harq_pid);
|
||||||
if (UE_id == UE_list->head)
|
if (UE_id == UE_list->head)
|
||||||
@@ -1039,7 +1042,7 @@ abort();
|
|||||||
hi_dci0_pdu = &hi_dci0_req->hi_dci0_pdu_list[eNB->HI_DCI0_req[CC_id].hi_dci0_request_body.number_of_dci+eNB->HI_DCI0_req[CC_id].hi_dci0_request_body.number_of_hi];
|
hi_dci0_pdu = &hi_dci0_req->hi_dci0_pdu_list[eNB->HI_DCI0_req[CC_id].hi_dci0_request_body.number_of_dci+eNB->HI_DCI0_req[CC_id].hi_dci0_request_body.number_of_hi];
|
||||||
memset((void*)hi_dci0_pdu,0,sizeof(nfapi_hi_dci0_request_pdu_t));
|
memset((void*)hi_dci0_pdu,0,sizeof(nfapi_hi_dci0_request_pdu_t));
|
||||||
hi_dci0_pdu->pdu_type = NFAPI_HI_DCI0_DCI_PDU_TYPE;
|
hi_dci0_pdu->pdu_type = NFAPI_HI_DCI0_DCI_PDU_TYPE;
|
||||||
hi_dci0_pdu->pdu_size = 2+sizeof(nfapi_hi_dci0_dci_pdu);
|
hi_dci0_pdu->pdu_size = 2+sizeof(nfapi_hi_dci0_dci_pdu); // khalid these items in nFapi in
|
||||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.dci_format = NFAPI_UL_DCI_FORMAT_0;
|
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.dci_format = NFAPI_UL_DCI_FORMAT_0;
|
||||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.aggregation_level = aggregation;
|
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.aggregation_level = aggregation;
|
||||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.rnti = rnti;
|
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.rnti = rnti;
|
||||||
@@ -1052,7 +1055,7 @@ abort();
|
|||||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.new_data_indication_1 = ndi;
|
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.new_data_indication_1 = ndi;
|
||||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.tpc = tpc;
|
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.tpc = tpc;
|
||||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.cqi_csi_request = cqi_req;
|
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.cqi_csi_request = cqi_req;
|
||||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.dl_assignment_index = UE_template->DAI_ul[sched_subframe];
|
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.dl_assignment_index = UE_template->DAI_ul[sched_subframe]; // khalid valid for TDD only
|
||||||
|
|
||||||
if (!CCE_allocation_infeasible(module_idP,CC_id,2,subframeP,
|
if (!CCE_allocation_infeasible(module_idP,CC_id,2,subframeP,
|
||||||
aggregation,
|
aggregation,
|
||||||
|
|||||||
@@ -162,9 +162,14 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
|
|||||||
wakeup_prach_eNB_br(eNB,NULL,proc->frame_rx,proc->subframe_rx);
|
wakeup_prach_eNB_br(eNB,NULL,proc->frame_rx,proc->subframe_rx);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// khalid begin chain of every thread
|
||||||
|
|
||||||
// UE-specific RX processing for subframe n
|
// UE-specific RX processing for subframe n
|
||||||
phy_procedures_eNB_uespec_RX(eNB, proc, no_relay );
|
phy_procedures_eNB_uespec_RX(eNB, proc, no_relay );
|
||||||
|
|
||||||
|
/* khalid : detection of MSG3 is simple but seems there is another entity that fill the buffers to this phy_rx chain */
|
||||||
|
|
||||||
pthread_mutex_lock(&eNB->UL_INFO_mutex);
|
pthread_mutex_lock(&eNB->UL_INFO_mutex);
|
||||||
eNB->UL_INFO.frame = proc->frame_rx;
|
eNB->UL_INFO.frame = proc->frame_rx;
|
||||||
eNB->UL_INFO.subframe = proc->subframe_rx;
|
eNB->UL_INFO.subframe = proc->subframe_rx;
|
||||||
|
|||||||
Reference in New Issue
Block a user