From aed912045848011da3dc8b0f4ed20e99c64f4cd2 Mon Sep 17 00:00:00 2001 From: Francisco Paisana Date: Fri, 28 Aug 2020 11:36:05 +0100 Subject: [PATCH] in case of RA problem during handover, the UE cannot trigger RLF. It has to let t304 expire, which will then trigger the reestablishment procedure with the right cause --- srsue/src/stack/rrc/rrc.cc | 7 +++++-- srsue/src/stack/rrc/rrc_procedures.cc | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/srsue/src/stack/rrc/rrc.cc b/srsue/src/stack/rrc/rrc.cc index d246baac6..6b28b85db 100644 --- a/srsue/src/stack/rrc/rrc.cc +++ b/srsue/src/stack/rrc/rrc.cc @@ -585,7 +585,9 @@ void rrc::release_pucch_srs() void rrc::ra_problem() { - radio_link_failure(); + if (not t304.is_running()) { + radio_link_failure(); + } } void rrc::max_retx_attempted() @@ -622,7 +624,8 @@ void rrc::timer_expired(uint32_t timeout_id) } else if (timeout_id == t300.id()) { // Do nothing, handled in connection_request() } else if (timeout_id == t304.id()) { - rrc_log->console("Timer T304 expired: Handover failed\n"); + rrc_log->console("Timer t304 expired: Handover failed\n"); + rrc_log->info("Timer t304 expired: Handover failed\n"); ho_failed(); } else { rrc_log->error("Timeout from unknown timer id %d\n", timeout_id); diff --git a/srsue/src/stack/rrc/rrc_procedures.cc b/srsue/src/stack/rrc/rrc_procedures.cc index 02d482f6f..7a29c45a8 100644 --- a/srsue/src/stack/rrc/rrc_procedures.cc +++ b/srsue/src/stack/rrc/rrc_procedures.cc @@ -1518,11 +1518,11 @@ srslte::proc_outcome_t rrc::ho_proc::react(ra_completed_ev ev) } bool ho_successful = ev.success and not sec_cfg_failed; - // TS 36.331, sec. 5.3.5.4, last "1>" - rrc_ptr->t304.stop(); - rrc_ptr->apply_rr_config_dedicated_on_ho_complete(recfg_r8.rr_cfg_ded); - if (ho_successful) { + // TS 36.331, sec. 5.3.5.4, last "1>" + rrc_ptr->t304.stop(); + rrc_ptr->apply_rr_config_dedicated_on_ho_complete(recfg_r8.rr_cfg_ded); + if (not rrc_ptr->measurements->parse_meas_config(&recfg_r8, true, ho_src_cell.get_earfcn())) { Error("Parsing measurementConfig. TODO: Send ReconfigurationReject\n"); ho_successful = false;