mirror of https://github.com/PentHertz/srsLTE.git
nr,gnb,rrc: avoid warning when eutra requests sgnb release and destroys the UE before acknowledgement
This commit is contained in:
parent
0b51848dda
commit
b3e974db9b
|
@ -127,7 +127,6 @@ private:
|
||||||
|
|
||||||
// FSM guards
|
// FSM guards
|
||||||
bool requires_rel_req(const sgnb_rel_req_ev& ev);
|
bool requires_rel_req(const sgnb_rel_req_ev& ev);
|
||||||
bool skip_rel_req(const sgnb_rel_req_ev& ev);
|
|
||||||
|
|
||||||
// FSM transition handlers
|
// FSM transition handlers
|
||||||
void handle_sgnb_add_req_ack(wait_sgnb_add_req_resp_st& s, const sgnb_add_req_ack_ev& ev);
|
void handle_sgnb_add_req_ack(wait_sgnb_add_req_resp_st& s, const sgnb_add_req_ack_ev& ev);
|
||||||
|
@ -168,7 +167,6 @@ protected:
|
||||||
upd< endc_activated_st, rrc_reest_rx_ev, &fsm::handle_rrc_reest >,
|
upd< endc_activated_st, rrc_reest_rx_ev, &fsm::handle_rrc_reest >,
|
||||||
// +---------------------------+--------------------------+------------------------+------------------------------+-------------------------+
|
// +---------------------------+--------------------------+------------------------+------------------------------+-------------------------+
|
||||||
to_state< wait_sgnb_rel_req_resp_st, sgnb_rel_req_ev, &fsm::handle_sgnb_rel_req, &fsm::requires_rel_req >,
|
to_state< wait_sgnb_rel_req_resp_st, sgnb_rel_req_ev, &fsm::handle_sgnb_rel_req, &fsm::requires_rel_req >,
|
||||||
to_state< endc_deactivated_st, sgnb_rel_req_ev, &fsm::handle_sgnb_rel_req, &fsm::skip_rel_req >,
|
|
||||||
row< wait_sgnb_rel_req_resp_st, endc_deactivated_st, sgnb_rel_req_ack_ev >,
|
row< wait_sgnb_rel_req_resp_st, endc_deactivated_st, sgnb_rel_req_ack_ev >,
|
||||||
to_state< endc_disabled_st, disable_endc_ev, &fsm::handle_endc_disabled >
|
to_state< endc_disabled_st, disable_endc_ev, &fsm::handle_endc_disabled >
|
||||||
>;
|
>;
|
||||||
|
|
|
@ -605,13 +605,14 @@ void rrc::sgnb_addition_complete(uint16_t eutra_rnti, uint16_t nr_rnti)
|
||||||
|
|
||||||
void rrc::sgnb_release_ack(uint16_t eutra_rnti)
|
void rrc::sgnb_release_ack(uint16_t eutra_rnti)
|
||||||
{
|
{
|
||||||
logger.info("Received SgNB release acknowledgement for rnti=0x%x", eutra_rnti);
|
|
||||||
auto ue_it = users.find(eutra_rnti);
|
auto ue_it = users.find(eutra_rnti);
|
||||||
if (ue_it == users.end()) {
|
if (ue_it != users.end()) {
|
||||||
logger.warning("rnti=0x%x does not exist", eutra_rnti);
|
logger.info("Received SgNB release acknowledgement for rnti=0x%x", eutra_rnti);
|
||||||
return;
|
ue_it->second->endc_handler->trigger(ue::rrc_endc::sgnb_rel_req_ack_ev{});
|
||||||
|
} else {
|
||||||
|
// The EUTRA does not need to wait for Release Ack in case it wants to destroy the EUTRA UE
|
||||||
|
logger.info("Received SgNB release acknowledgement for already released rnti=0x%x", eutra_rnti);
|
||||||
}
|
}
|
||||||
ue_it->second->endc_handler->trigger(ue::rrc_endc::sgnb_rel_req_ack_ev{});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
|
|
|
@ -383,12 +383,8 @@ void rrc::ue::rrc_endc::handle_endc_disabled(const disable_endc_ev& ev)
|
||||||
|
|
||||||
bool rrc::ue::rrc_endc::requires_rel_req(const sgnb_rel_req_ev& ev)
|
bool rrc::ue::rrc_endc::requires_rel_req(const sgnb_rel_req_ev& ev)
|
||||||
{
|
{
|
||||||
return not is_in_state<endc_disabled_st>() and not is_in_state<endc_deactivated_st>();
|
return not is_in_state<endc_disabled_st>() and not is_in_state<endc_deactivated_st>() and
|
||||||
}
|
not is_in_state<wait_sgnb_rel_req_resp_st>();
|
||||||
|
|
||||||
bool rrc::ue::rrc_endc::skip_rel_req(const sgnb_rel_req_ev& ev)
|
|
||||||
{
|
|
||||||
return not requires_rel_req(ev) and not is_in_state<disable_endc_ev>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace srsenb
|
} // namespace srsenb
|
||||||
|
|
Loading…
Reference in New Issue