diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c index 17f1a53d508b2b0355ddc409902a006f9f570f52..8989d43f1bae0afc3e4edefc9960e6155a46a4b8 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler.c +++ b/openair2/LAYER2/MAC/eNB_scheduler.c @@ -407,20 +407,24 @@ check_ul_failure(module_id_t module_idP, int CC_id, int UE_id, // check threshold if (UE_list->UE_sched_ctrl[UE_id].ul_failure_timer > 4000) { // note: probably ul_failure_timer should be less than UE radio link failure time(see T310/N310/N311) - // inform RRC of failure and clear timer - LOG_I(MAC, - "UE %d rnti %x: UL Failure after repeated PDCCH orders: Triggering RRC \n", - UE_id, rnti); - mac_eNB_rrc_ul_failure(module_idP, CC_id, frameP, subframeP,rnti); + if (RC.rrc[module_idP]->node_type == ngran_eNB_DU + || RC.rrc[module_idP]->node_type == ngran_gNB_DU) { + MessageDef *m = itti_alloc_new_message(TASK_MAC_ENB, F1AP_UE_CONTEXT_RELEASE_REQ); + F1AP_UE_CONTEXT_RELEASE_REQ(m).rnti = rnti; + F1AP_UE_CONTEXT_RELEASE_REQ(m).cause = F1AP_CAUSE_RADIO_NETWORK; + F1AP_UE_CONTEXT_RELEASE_REQ(m).cause_value = 1; // 1 = F1AP_CauseRadioNetwork_rl_failure + F1AP_UE_CONTEXT_RELEASE_REQ(m).rrc_container = NULL; + F1AP_UE_CONTEXT_RELEASE_REQ(m).rrc_container_length = 0; + itti_send_msg_to_task(TASK_DU_F1, module_idP, m); + } else { + // inform RRC of failure and clear timer + LOG_I(MAC, + "UE %d rnti %x: UL Failure after repeated PDCCH orders: Triggering RRC \n", + UE_id, rnti); + mac_eNB_rrc_ul_failure(module_idP, CC_id, frameP, subframeP,rnti); + } UE_list->UE_sched_ctrl[UE_id].ul_failure_timer = 0; UE_list->UE_sched_ctrl[UE_id].ul_out_of_sync = 1; - - //Inform the controller about the UE deactivation. Should be moved to RRC agent in the future - if (flexran_agent_get_rrc_xface(module_idP)) { - LOG_W(MAC, "notify flexran Agent of UE state change\n"); - flexran_agent_get_rrc_xface(module_idP)->flexran_agent_notify_ue_state_change(module_idP, - rnti, PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED); - } } } // ul_failure_timer>0 } diff --git a/openair2/RRC/LTE/L2_interface.c b/openair2/RRC/LTE/L2_interface.c index 095cdcf8520e0318c6a1b41c7502dddf00bc8714..f008b0698cf9c4b17c84bbe57503e5ee211532e9 100644 --- a/openair2/RRC/LTE/L2_interface.c +++ b/openair2/RRC/LTE/L2_interface.c @@ -391,17 +391,6 @@ void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP, rntiP, PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_DEACTIVATED); } - if (RC.rrc[Mod_instP]->node_type == ngran_eNB_DU - && RC.rrc[Mod_instP]->node_type == ngran_gNB_DU) { - MessageDef *m = itti_alloc_new_message(TASK_MAC_ENB, F1AP_UE_CONTEXT_RELEASE_REQ); - F1AP_UE_CONTEXT_RELEASE_REQ(m).rnti = rntiP; - F1AP_UE_CONTEXT_RELEASE_REQ(m).cause = F1AP_CAUSE_RADIO_NETWORK; - F1AP_UE_CONTEXT_RELEASE_REQ(m).cause_value = 1; // 1 = F1AP_CauseRadioNetwork_rl_failure - F1AP_UE_CONTEXT_RELEASE_REQ(m).rrc_container = NULL; - F1AP_UE_CONTEXT_RELEASE_REQ(m).rrc_container_length = 0; - itti_send_msg_to_task(TASK_DU_F1, Mod_instP, m); - } - rrc_mac_remove_ue(Mod_instP,rntiP); } diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index 7333333c6b93fdaa433eaa6313ff7bf8bc5e7bcd..af091c312b02a98dc6428b44770a1892267e972e 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -950,14 +950,6 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s* ue_context_pP, S1AP_CAUSE_RADIO_NETWORK, 21); // send cause 21: connection with ue lost - } else { // DU - MessageDef *m = itti_alloc_new_message(TASK_RRC_ENB, F1AP_UE_CONTEXT_RELEASE_REQ); - F1AP_UE_CONTEXT_RELEASE_REQ(m).rnti = ue_context_pP->ue_context.rnti; - F1AP_UE_CONTEXT_RELEASE_REQ(m).cause = F1AP_CAUSE_RADIO_NETWORK; - F1AP_UE_CONTEXT_RELEASE_REQ(m).cause_value = 1; // 1 = F1AP_CauseRadioNetwork_rl_failure - F1AP_UE_CONTEXT_RELEASE_REQ(m).rrc_container = NULL; - F1AP_UE_CONTEXT_RELEASE_REQ(m).rrc_container_length = 0; - itti_send_msg_to_task(TASK_DU_F1, enb_mod_idP, m); } /* From 3GPP 36300v10 p129 : 19.2.2.2.2 S1 UE Context Release Request (eNB triggered) * If the E-UTRAN internal reason is a radio link failure detected in the eNB, the eNB shall wait a sufficient time before