Fix: eNB can not accept attach more than 257 times.
This commit is contained in:
@@ -1054,8 +1054,12 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci
|
|||||||
if ((rel8->rnti_type == 2 ) && (rel8->rnti != SI_RNTI) && (rel8->rnti != P_RNTI)) dci_alloc->ra_flag = 1;
|
if ((rel8->rnti_type == 2 ) && (rel8->rnti != SI_RNTI) && (rel8->rnti != P_RNTI)) dci_alloc->ra_flag = 1;
|
||||||
|
|
||||||
UE_id = find_dlsch(rel8->rnti,eNB,SEARCH_EXIST_OR_FREE);
|
UE_id = find_dlsch(rel8->rnti,eNB,SEARCH_EXIST_OR_FREE);
|
||||||
AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
|
if( (UE_id<0) || (UE_id>=NUMBER_OF_UE_MAX) ){
|
||||||
AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
|
LOG_E(PHY,"illegal UE_id found!!! rnti %04x UE_id %d\n",rel8->rnti,UE_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
|
||||||
|
//AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
|
||||||
dlsch0 = eNB->dlsch[UE_id][0];
|
dlsch0 = eNB->dlsch[UE_id][0];
|
||||||
dlsch1 = eNB->dlsch[UE_id][1];
|
dlsch1 = eNB->dlsch[UE_id][1];
|
||||||
|
|
||||||
@@ -2298,8 +2302,12 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,mDCI_ALLOC_t *d
|
|||||||
if (rel13->rnti_type == 2 ) dci_alloc->ra_flag = 1;
|
if (rel13->rnti_type == 2 ) dci_alloc->ra_flag = 1;
|
||||||
|
|
||||||
UE_id = find_dlsch(rel13->rnti,eNB,SEARCH_EXIST_OR_FREE);
|
UE_id = find_dlsch(rel13->rnti,eNB,SEARCH_EXIST_OR_FREE);
|
||||||
AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
|
if( (UE_id<0) || (UE_id>=NUMBER_OF_UE_MAX) ){
|
||||||
AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
|
LOG_E(PHY,"illegal UE_id found!!! rnti %04x UE_id %d\n",rel13->rnti,UE_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
|
||||||
|
//AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
|
||||||
dlsch0 = eNB->dlsch[UE_id][0];
|
dlsch0 = eNB->dlsch[UE_id][0];
|
||||||
dlsch0_harq = dlsch0->harq_processes[rel13->harq_process];
|
dlsch0_harq = dlsch0->harq_processes[rel13->harq_process];
|
||||||
|
|
||||||
|
|||||||
@@ -137,8 +137,12 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
|
|||||||
int harq_pid;
|
int harq_pid;
|
||||||
|
|
||||||
UE_id = find_dlsch(rel8->rnti,eNB,SEARCH_EXIST_OR_FREE);
|
UE_id = find_dlsch(rel8->rnti,eNB,SEARCH_EXIST_OR_FREE);
|
||||||
AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
|
if( (UE_id<0) || (UE_id>=NUMBER_OF_UE_MAX) ){
|
||||||
AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
|
LOG_E(PHY,"illegal UE_id found!!! rnti %04x UE_id %d\n",rel8->rnti,UE_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//AssertFatal(UE_id!=-1,"no free or exiting dlsch_context\n");
|
||||||
|
//AssertFatal(UE_id<NUMBER_OF_UE_MAX,"returned UE_id %d >= %d(NUMBER_OF_UE_MAX)\n",UE_id,NUMBER_OF_UE_MAX);
|
||||||
|
|
||||||
dlsch0 = eNB->dlsch[UE_id][0];
|
dlsch0 = eNB->dlsch[UE_id][0];
|
||||||
dlsch1 = eNB->dlsch[UE_id][1];
|
dlsch1 = eNB->dlsch[UE_id][1];
|
||||||
@@ -176,9 +180,14 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
|
|||||||
dlsch0_harq->pdsch_start = eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols;
|
dlsch0_harq->pdsch_start = eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols;
|
||||||
|
|
||||||
if (dlsch0_harq->round==0) { //get pointer to SDU if this a new SDU
|
if (dlsch0_harq->round==0) { //get pointer to SDU if this a new SDU
|
||||||
AssertFatal(sdu!=NULL,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d\n",
|
if(sdu == NULL) {
|
||||||
proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid,
|
LOG_E(PHY,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d\n",
|
||||||
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index);
|
proc->frame_tx, proc->subframe_tx, rel8->rnti, UE_id, harq_pid, dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//AssertFatal(sdu!=NULL,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d\n",
|
||||||
|
// proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid,
|
||||||
|
// dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index);
|
||||||
if (rel8->rnti != 0xFFFF) LOG_D(PHY,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d\n",
|
if (rel8->rnti != 0xFFFF) LOG_D(PHY,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d\n",
|
||||||
proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid);
|
proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid);
|
||||||
if (codeword_index == 0) dlsch0_harq->pdu = sdu;
|
if (codeword_index == 0) dlsch0_harq->pdu = sdu;
|
||||||
|
|||||||
@@ -1690,7 +1690,11 @@ void fill_ulsch_cqi_indication(PHY_VARS_eNB *eNB,uint16_t frame,uint8_t subframe
|
|||||||
void fill_ulsch_harq_indication(PHY_VARS_eNB *eNB,LTE_UL_eNB_HARQ_t *ulsch_harq,uint16_t rnti, int frame,int subframe,int bundling)
|
void fill_ulsch_harq_indication(PHY_VARS_eNB *eNB,LTE_UL_eNB_HARQ_t *ulsch_harq,uint16_t rnti, int frame,int subframe,int bundling)
|
||||||
{
|
{
|
||||||
int UE_id = find_dlsch(rnti,eNB,SEARCH_EXIST);
|
int UE_id = find_dlsch(rnti,eNB,SEARCH_EXIST);
|
||||||
AssertFatal(UE_id>=0,"UE_id doesn't exist\n");
|
if( (UE_id<0) || (UE_id>=NUMBER_OF_UE_MAX) ){
|
||||||
|
LOG_E(PHY,"illegal UE_id found!!! rnti %04x UE_id %d\n",rnti,UE_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//AssertFatal(UE_id>=0,"UE_id doesn't exist\n");
|
||||||
|
|
||||||
pthread_mutex_lock(&eNB->UL_INFO_mutex);
|
pthread_mutex_lock(&eNB->UL_INFO_mutex);
|
||||||
nfapi_harq_indication_pdu_t *pdu = &eNB->UL_INFO.harq_ind.harq_pdu_list[eNB->UL_INFO.harq_ind.number_of_harqs];
|
nfapi_harq_indication_pdu_t *pdu = &eNB->UL_INFO.harq_ind.harq_pdu_list[eNB->UL_INFO.harq_ind.number_of_harqs];
|
||||||
@@ -1759,7 +1763,11 @@ void fill_uci_harq_indication(PHY_VARS_eNB *eNB,
|
|||||||
uint16_t tdd_multiplexing_mask) {
|
uint16_t tdd_multiplexing_mask) {
|
||||||
|
|
||||||
int UE_id=find_dlsch(uci->rnti,eNB,SEARCH_EXIST);
|
int UE_id=find_dlsch(uci->rnti,eNB,SEARCH_EXIST);
|
||||||
AssertFatal(UE_id>=0,"UE_id doesn't exist\n");
|
if( (UE_id<0) || (UE_id>=NUMBER_OF_UE_MAX) ){
|
||||||
|
LOG_E(PHY,"illegal UE_id found!!! rnti %04x UE_id %d\n",uci->rnti,UE_id);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//AssertFatal(UE_id>=0,"UE_id doesn't exist\n");
|
||||||
|
|
||||||
|
|
||||||
pthread_mutex_lock(&eNB->UL_INFO_mutex);
|
pthread_mutex_lock(&eNB->UL_INFO_mutex);
|
||||||
|
|||||||
@@ -783,8 +783,12 @@ generate_Msg4(module_id_t module_idP, int CC_idP, frame_t frameP,
|
|||||||
rrc_sdu_length = mac_rrc_data_req(module_idP, CC_idP, frameP, CCCH, 1, // 1 transport block
|
rrc_sdu_length = mac_rrc_data_req(module_idP, CC_idP, frameP, CCCH, 1, // 1 transport block
|
||||||
&cc[CC_idP].CCCH_pdu.payload[0], ENB_FLAG_YES, module_idP, 0); // not used in this case
|
&cc[CC_idP].CCCH_pdu.payload[0], ENB_FLAG_YES, module_idP, 0); // not used in this case
|
||||||
|
|
||||||
AssertFatal(rrc_sdu_length > 0,
|
if(rrc_sdu_length <= 0) {
|
||||||
"[MAC][eNB Scheduler] CCCH not allocated\n");
|
LOG_D(MAC,"[MAC][eNB Scheduler] CCCH not allocated\n %d",rrc_sdu_length);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//AssertFatal(rrc_sdu_length > 0,
|
||||||
|
//"[MAC][eNB Scheduler] CCCH not allocated\n");
|
||||||
|
|
||||||
|
|
||||||
LOG_D(MAC,
|
LOG_D(MAC,
|
||||||
|
|||||||
@@ -927,6 +927,7 @@ void release_UE_in_freeList(module_id_t mod_id)
|
|||||||
int i, j , CC_id, pdu_number;
|
int i, j , CC_id, pdu_number;
|
||||||
protocol_ctxt_t ctxt;
|
protocol_ctxt_t ctxt;
|
||||||
LTE_eNB_ULSCH_t *ulsch = NULL;
|
LTE_eNB_ULSCH_t *ulsch = NULL;
|
||||||
|
LTE_eNB_DLSCH_t *dlsch = NULL;
|
||||||
nfapi_ul_config_request_body_t *ul_req_tmp = NULL;
|
nfapi_ul_config_request_body_t *ul_req_tmp = NULL;
|
||||||
PHY_VARS_eNB *eNB_PHY = NULL;
|
PHY_VARS_eNB *eNB_PHY = NULL;
|
||||||
struct rrc_eNB_ue_context_s *ue_context_pP = NULL;
|
struct rrc_eNB_ue_context_s *ue_context_pP = NULL;
|
||||||
@@ -966,10 +967,12 @@ void release_UE_in_freeList(module_id_t mod_id)
|
|||||||
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
|
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ulsch = eNB_PHY->ulsch[i];
|
for (i=0; i<NUMBER_OF_UE_MAX; i++) {
|
||||||
if((ulsch != NULL) && (ulsch->rnti == rnti)){
|
dlsch = eNB_PHY->dlsch[i][0];
|
||||||
LOG_I(RRC, "clean_eNb_ulsch ulsch[%d] UE %x\n", i, rnti);
|
if((dlsch != NULL) && (dlsch->rnti == rnti)){
|
||||||
clean_eNb_ulsch(ulsch);
|
LOG_I(RRC, "clean_eNb_dlsch dlsch[%d] UE %x \n", i, rnti);
|
||||||
|
clean_eNb_dlsch(dlsch);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(j = 0; j < 10; j++){
|
for(j = 0; j < 10; j++){
|
||||||
|
|||||||
Reference in New Issue
Block a user