fix hundreds_of_ues issue(n1_PUCCH_AN DAI) for TDD cofnig1
This commit is contained in:
@@ -338,6 +338,7 @@ set_ul_DAI(int module_idP, int UE_idP, int CC_idP, int frameP,
|
||||
|
||||
case 1:
|
||||
switch (subframeP) {
|
||||
case 0:
|
||||
case 1:
|
||||
UE_list->UE_template[CC_idP][UE_idP].DAI_ul[7] = DAI;
|
||||
break;
|
||||
@@ -346,6 +347,7 @@ set_ul_DAI(int module_idP, int UE_idP, int CC_idP, int frameP,
|
||||
UE_list->UE_template[CC_idP][UE_idP].DAI_ul[8] = DAI;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case 6:
|
||||
UE_list->UE_template[CC_idP][UE_idP].DAI_ul[2] = DAI;
|
||||
break;
|
||||
|
||||
@@ -1097,10 +1097,25 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
|
||||
for (i=0; i<NB_RA_PROC_MAX; i++) {
|
||||
if ((cc->ra[i].state == WAITMSG3) &&(cc->ra[i].Msg3_subframe == sched_subframe)) {
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].ue_priority = SCH_UL_MSG3;
|
||||
if(frame_parms->N_RB_UL == 25){
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 1;
|
||||
}else{
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 2;
|
||||
if (cc->tdd_Config == NULL) {
|
||||
if(frame_parms->N_RB_UL == 25){
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 1;
|
||||
}else{
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 2;
|
||||
}
|
||||
} else {
|
||||
switch(frame_parms->N_RB_UL){
|
||||
case 25:
|
||||
default:
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 1;
|
||||
break;
|
||||
case 50:
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 2;
|
||||
break;
|
||||
case 100:
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].start_rb = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].nb_rb = 1;
|
||||
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].UE_id = -1;
|
||||
@@ -1696,25 +1711,62 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
||||
// This is the actual CC_id in the list
|
||||
N_RB_UL = to_prb(cc->mib->message.dl_Bandwidth);
|
||||
//leave out first RB for PUCCH
|
||||
if(N_RB_UL == 25){
|
||||
first_rb[CC_id] = 1;
|
||||
}else{
|
||||
first_rb[CC_id] = 2;
|
||||
if (cc->tdd_Config == NULL) {
|
||||
if(N_RB_UL == 25){
|
||||
first_rb[CC_id] = 1;
|
||||
}else{
|
||||
first_rb[CC_id] = 2;
|
||||
}
|
||||
}else {
|
||||
switch(N_RB_UL){
|
||||
case 25:
|
||||
default:
|
||||
first_rb[CC_id] = 1;
|
||||
break;
|
||||
case 50:
|
||||
first_rb[CC_id] = 2;
|
||||
break;
|
||||
case 100:
|
||||
first_rb[CC_id] = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for ( ulsch_ue_num = 0; ulsch_ue_num < ulsch_ue_select[CC_id].ue_num; ulsch_ue_num++ ) {
|
||||
UE_id = ulsch_ue_select[CC_id].list[ulsch_ue_num].UE_id;
|
||||
/* be sure that there are some free RBs */
|
||||
if(N_RB_UL == 25){
|
||||
if (first_rb[CC_id] >= 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;
|
||||
}
|
||||
}else{
|
||||
if (first_rb[CC_id] >= 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;
|
||||
if (cc->tdd_Config == NULL){
|
||||
if(N_RB_UL == 25){
|
||||
if (first_rb[CC_id] >= 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;
|
||||
}
|
||||
}else{
|
||||
if (first_rb[CC_id] >= 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;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(N_RB_UL == 25){
|
||||
if (first_rb[CC_id] >= N_RB_UL-1) {
|
||||
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d N_RB_UL %d first_rb %d: dropping, not enough RBs\n",
|
||||
module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb);
|
||||
break;
|
||||
}
|
||||
}else if(N_RB_UL == 50){
|
||||
if (first_rb[CC_id] >= N_RB_UL-2) {
|
||||
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d N_RB_UL %d first_rb %d: dropping, not enough RBs\n",
|
||||
module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb);
|
||||
break;
|
||||
}
|
||||
}else if(N_RB_UL == 100){
|
||||
if (first_rb[CC_id] >= N_RB_UL-3) {
|
||||
LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d N_RB_UL %d first_rb %d: dropping, not enough RBs\n",
|
||||
module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//MSG3
|
||||
@@ -1857,6 +1909,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
||||
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.dl_assignment_index = UE_template->DAI_ul[sched_subframeP];
|
||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.harq_pid = harq_pid;
|
||||
|
||||
hi_dci0_req->number_of_dci++;
|
||||
|
||||
@@ -1971,6 +2024,7 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
||||
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.dl_assignment_index = UE_template->DAI_ul[sched_subframeP];
|
||||
hi_dci0_pdu->dci_pdu.dci_pdu_rel8.harq_pid = harq_pid;
|
||||
|
||||
hi_dci0_req->number_of_dci++;
|
||||
// fill in NAK information
|
||||
|
||||
@@ -1267,6 +1267,10 @@ do_RRCConnectionSetup(
|
||||
|
||||
RRCConnectionSetup_t* rrcConnectionSetup = NULL;
|
||||
|
||||
#ifdef UE_EXPANSION
|
||||
LTE_DL_FRAME_PARMS *frame_parms = &RC.eNB[ctxt_pP->module_id][CC_id]->frame_parms;
|
||||
#endif
|
||||
|
||||
memset((void *)&dl_ccch_msg,0,sizeof(DL_CCCH_Message_t));
|
||||
dl_ccch_msg.message.present = DL_CCCH_MessageType_PR_c1;
|
||||
dl_ccch_msg.message.choice.c1.present = DL_CCCH_MessageType__c1_PR_rrcConnectionSetup;
|
||||
@@ -1533,7 +1537,28 @@ do_RRCConnectionSetup(
|
||||
|
||||
physicalConfigDedicated2->schedulingRequestConfig->present = SchedulingRequestConfig_PR_setup;
|
||||
#ifdef UE_EXPANSION
|
||||
physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = 31 - ue_context_pP->local_uid/10;//ue_context_pP->local_uid;
|
||||
if (carrier->sib1->tdd_Config == NULL) {
|
||||
physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = 31 - ue_context_pP->local_uid/10;//ue_context_pP->local_uid;
|
||||
} else {
|
||||
switch (carrier->sib1->tdd_Config->subframeAssignment) {
|
||||
case 1:
|
||||
switch(frame_parms->N_RB_UL){
|
||||
case 25:
|
||||
physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = 15 - ue_context_pP->local_uid/4;
|
||||
break;
|
||||
case 50:
|
||||
physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = 31 - ue_context_pP->local_uid/4;
|
||||
break;
|
||||
case 100:
|
||||
physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = 63 - ue_context_pP->local_uid/4;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = 71 - ue_context_pP->local_uid/10;//ue_context_pP->local_uid;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
physicalConfigDedicated2->schedulingRequestConfig->choice.setup.sr_PUCCH_ResourceIndex = 71 - ue_context_pP->local_uid/10;//ue_context_pP->local_uid;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user