diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index 4f1f431508f90a6fb67020624a11f41bf06423e0..37a3a328f72562c098d85ad1307d0d97a77c49b7 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -460,7 +460,7 @@ rx_sdu(const module_id_t enb_mod_idP, if (RA_id != -1) { RA_t *ra = &(mac->common_channels[CC_idP].ra[RA_id]); - mac_rrc_data_ind(enb_mod_idP, + int8_t ret = mac_rrc_data_ind(enb_mod_idP, CC_idP, frameP, subframeP, UE_id, @@ -474,6 +474,7 @@ rx_sdu(const module_id_t enb_mod_idP, #endif ); /* Received a new rnti */ + if(ret == 0){ ra->state = MSGCRNTI; LOG_I(MAC, "[eNB %d] Frame %d, Subframe %d CC_id %d : (rnti %x UE_id %d) Received rnti(Msg4)\n", enb_mod_idP, @@ -502,6 +503,9 @@ rx_sdu(const module_id_t enb_mod_idP, } UE_template_ptr->ul_SR = 1; UE_scheduling_control->crnti_reconfigurationcomplete_flag = 1; + }else{ + cancel_ra_proc(enb_mod_idP, CC_idP, frameP, current_rnti); + } // break; } } diff --git a/openair2/RRC/LTE/L2_interface.c b/openair2/RRC/LTE/L2_interface.c index 7bfeb43b53d333249b812a88f6ea4801423a34e2..a39e072b747403409c123d4e35b8443c40bff0a0 100644 --- a/openair2/RRC/LTE/L2_interface.c +++ b/openair2/RRC/LTE/L2_interface.c @@ -289,10 +289,15 @@ mac_rrc_data_ind( ue_context_p = rrc_eNB_get_ue_context(RC.rrc[ctxt.module_id],rntiP); if(ue_context_p) { + if( ue_context_p->ue_context.Status != RRC_RECONFIGURED){ + LOG_E(RRC,"[eNB %d] Received C-RNTI ,but UE %x status(%d) not RRC_RECONFIGURED\n",module_idP,rntiP,ue_context_p->ue_context.Status); + return(-1); + }else{ rrc_eNB_generate_defaultRRCConnectionReconfiguration(&ctxt, ue_context_p, 0); ue_context_p->ue_context.Status = RRC_RECONFIGURED; + } } }