diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c index b971e5ce67..9c92503186 100644 --- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c @@ -86,14 +86,17 @@ int find_ulsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type) { AssertFatal(eNB!=NULL,"eNB is null\n"); for (int i=0; iulsch[i]==NULL) continue; + if (eNB->ulsch[i] == NULL) + continue; if (type == SEARCH_EXIST_RA) { - if (eNB->ulsch[i]->rnti == rnti) return i; + if (eNB->ulsch[i]->rnti == rnti) + return i; } else { - if ((eNB->ulsch[i]->harq_mask >0) && - (eNB->ulsch[i]->rnti==rnti)) return i; - else if ((eNB->ulsch[i]->harq_mask == 0) && (first_free_index==-1)) first_free_index=i; + if (eNB->ulsch[i]->harq_mask > 0 && eNB->ulsch[i]->rnti == rnti) + return i; + else if (eNB->ulsch[i]->harq_mask == 0 && first_free_index == -1) + first_free_index = i; } } @@ -1963,7 +1966,7 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,L1_rxtx_proc_t *proc, if(frame_parms->frame_type == TDD) { UE_id = find_ulsch(pdu->dci_pdu_rel8.rnti, eNB,SEARCH_EXIST_OR_FREE); - if(UE_id >=0 || UE_id < NUMBER_OF_ULSCH_MAX) { + if (UE_id >= 0) { eNB->ulsch[UE_id]->harq_processes[pdu->dci_pdu_rel8.harq_pid]->V_UL_DAI = dai +1; } } diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c index 5099a63439..8541d11771 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c @@ -160,8 +160,12 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo, for (i=0; iharq_processes[i] = (LTE_DL_eNB_HARQ_t *)malloc16(sizeof(LTE_DL_eNB_HARQ_t)); - LOG_I(PHY, "Required DLSCH mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p\n", - MAX_DLSCH_PAYLOAD_BYTES/bw_scaling,bw_scaling, i,dlsch->harq_processes[i]); + LOG_D(PHY, + "Required DLSCH mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p\n", + MAX_DLSCH_PAYLOAD_BYTES / bw_scaling, + bw_scaling, + i, + dlsch->harq_processes[i]); if (dlsch->harq_processes[i]) { bzero(dlsch->harq_processes[i],sizeof(LTE_DL_eNB_HARQ_t)); diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c index b9331a283e..31aff198dd 100644 --- a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c +++ b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c @@ -1121,8 +1121,6 @@ void dump_ulsch_stats(FILE *fd,PHY_VARS_eNB *eNB,int frame) { } void clear_ulsch_stats(PHY_VARS_eNB *eNB) { - - for (int i=0;iulsch_stats[i],0,sizeof(eNB->ulsch_stats[i])); + memset(eNB->ulsch_stats, 0, sizeof(eNB->ulsch_stats)); } diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index 0e9d72d99d..15208998ae 100644 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -1339,9 +1339,20 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) { ulsch_harq = ulsch->harq_processes[harq_pid]; - if (ulsch->rnti>0) LOG_D(PHY,"eNB->ulsch[%d]->harq_processes[harq_pid:%d] SFN/SF:%04d%d: PUSCH procedures, UE %d/%x ulsch_harq[status:%d SFN/SF:%04d%d handled:%d]\n", - i, harq_pid, frame,subframe,i,ulsch->rnti, - ulsch_harq->status, ulsch_harq->frame, ulsch_harq->subframe, ulsch_harq->handled); + if (ulsch->rnti > 0) + LOG_D(PHY, + "eNB->ulsch[%d]->harq_processes[harq_pid:%d] SFN/SF:%04d%d: PUSCH procedures, UE %d/%x ulsch_harq[status:%d " + "SFN/SF:%04d%d handled:%d]\n", + i, + harq_pid, + frame, + subframe, + i, + ulsch->rnti, + ulsch_harq->status, + ulsch_harq->frame, + ulsch_harq->subframe, + ulsch_harq->handled); if ((ulsch->rnti>0) && (ulsch_harq->status == ACTIVE) && diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c index 868928e045..1df8f590ef 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler.c +++ b/openair2/LAYER2/MAC/eNB_scheduler.c @@ -888,30 +888,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, pdcp_remove_UE(&ctxt); } - /* Note: This should not be done in the MAC! */ - /* - for (int ii=0; iiulsch[ii]; - - if((ulsch != NULL) && (ulsch->rnti == rnti)) { - void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch); - LOG_I(MAC, "clean_eNb_ulsch UE %x \n", rnti); - clean_eNb_ulsch(ulsch); - } - } - - for (int ii=0; iidlsch[ii][0]; - - if((dlsch != NULL) && (dlsch->rnti == rnti)) { - void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch); - LOG_I(MAC, "clean_eNb_dlsch UE %x \n", rnti); - clean_eNb_dlsch(dlsch); - } - } - */ - - int id; + int id; // clean ULSCH entries for rnti id = find_ulsch(rnti,RC.eNB[module_idP][CC_id],SEARCH_EXIST); diff --git a/openair2/LAYER2/MAC/eNB_scheduler_RA.c b/openair2/LAYER2/MAC/eNB_scheduler_RA.c index 3a4f49610a..375059f315 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_RA.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_RA.c @@ -466,11 +466,12 @@ void generate_Msg2(module_id_t module_idP, } else { if ((ra->Msg2_frame == frameP) && (ra->Msg2_subframe == subframeP)) { LOG_I(MAC, - "[eNB %d] CC_id %d Frame %d, subframeP %d: Generating RAR DCI, state %s\n", + "[eNB %d] CC_id %d Frame %d, subframeP %d: Generating RAR DCI for rnti %x, state %s\n", module_idP, CC_idP, frameP, subframeP, + ra->RA_rnti, era_text[ra->eRA_state]); // Allocate 4 PRBS starting in RB 0 first_rb = 0; diff --git a/openair2/LAYER2/MAC/mac.h b/openair2/LAYER2/MAC/mac.h index 635155b5a2..f10941c3ab 100644 --- a/openair2/LAYER2/MAC/mac.h +++ b/openair2/LAYER2/MAC/mac.h @@ -506,7 +506,7 @@ typedef struct { /*!\brief RA process state*/ typedef enum { IDLE = 0, MSG2, WAITMSG3, MSG4, WAITMSG4ACK, MSGCRNTI, MSGCRNTI_ACK } eRA_state; -static const char *const era_text[] = {"IDLE", "Ms2", "WAITMSG3", "WAITMSG4ACK", "MSGCRNTI", "MSGCRNTIACK"}; +static const char *const era_text[] = {"IDLE", "Msg2", "WAITMSG3", "WAITMSG4ACK", "MSGCRNTI", "MSGCRNTIACK"}; /*!\brief UE DLSCH scheduling states*/ typedef enum { S_DL_NONE = 0, S_DL_SCHEDULED } UE_DLSCH_STATUS; diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index fe30615761..c26a57cd44 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -98,6 +98,8 @@ #include "SIMULATION/TOOLS/sim.h" // for taus +#include "openair1/PHY/LTE_TRANSPORT/transport_proto.h" + #define ASN_MAX_ENCODE_SIZE 4096 #define NUMBEROF_DRBS_TOBE_ADDED 1 static int encode_CG_ConfigInfo(char *buffer,int buffer_size,rrc_eNB_ue_context_t *const ue_context_pP,int *enc_size); @@ -878,7 +880,7 @@ rrc_eNB_free_UE( void put_UE_in_freelist(module_id_t mod_id, rnti_t rnti, bool removeFlag) { eNB_MAC_INST *eNB_MAC = RC.mac[mod_id]; pthread_mutex_lock(&lock_ue_freelist); - LOG_I(PHY,"add ue %x in free list, context flag: %d\n", rnti, removeFlag); + LOG_I(PHY, "adding ue %x in UE to free list, context flag: %d\n", rnti, removeFlag); int i; for (i=0; i < sizeofArray(eNB_MAC->UE_free_ctrl); i++) if (eNB_MAC->UE_free_ctrl[i].rnti == 0) @@ -888,24 +890,21 @@ void put_UE_in_freelist(module_id_t mod_id, rnti_t rnti, bool removeFlag) { pthread_mutex_unlock(&lock_ue_freelist); return; } - if (eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs >= NFAPI_RELEASE_MAX_RNTI) { - LOG_E(PHY, "List of UE to release is full\n"); - pthread_mutex_unlock(&lock_ue_freelist); - return; - } eNB_MAC->UE_free_ctrl[i].rnti = rnti; eNB_MAC->UE_free_ctrl[i].removeContextFlg = removeFlag; eNB_MAC->UE_free_ctrl[i].raFlag = 0; - eNB_MAC->UE_release_req.ue_release_request_body.ue_release_request_TLVs_list[eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs].rnti = rnti; - eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs++; + if (eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs < NFAPI_RELEASE_MAX_RNTI) { + eNB_MAC->UE_release_req.ue_release_request_body + .ue_release_request_TLVs_list[eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs] + .rnti = rnti; + eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs++; + } else { + LOG_E(PHY, "fapi List of UE to release is full\n"); + } + pthread_mutex_unlock(&lock_ue_freelist); } -extern int16_t find_dlsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type); -extern int16_t find_ulsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type); -extern void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch); -extern void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch); - void release_UE_in_freeList(module_id_t mod_id) { PHY_VARS_eNB *eNB_PHY = NULL; eNB_MAC_INST *eNB_MAC = RC.mac[mod_id]; @@ -923,13 +922,11 @@ void release_UE_in_freeList(module_id_t mod_id) { int id; // clean ULSCH entries for rnti id = find_ulsch(rnti, eNB_PHY, eNB_MAC->UE_free_ctrl[ue_num].raFlag ? SEARCH_EXIST_RA : SEARCH_EXIST); - if (id >= 0) clean_eNb_ulsch(eNB_PHY->ulsch[id]); // clean DLSCH entries for rnti id = find_dlsch(rnti, eNB_PHY, eNB_MAC->UE_free_ctrl[ue_num].raFlag ? SEARCH_EXIST_RA : SEARCH_EXIST); - if (id >= 0) clean_eNb_dlsch(eNB_PHY->dlsch[id][0]);