SRSUE: reestablishment procedure wait for children to finish before aborting

master
Xavier Arteaga 5 years ago committed by Xavier Arteaga
parent ab3d7dd413
commit 7312752988

@ -955,6 +955,13 @@ srslte::proc_outcome_t rrc::connection_reest_proc::step_cell_reselection()
// Run cell reselection
if (not rrc_ptr->cell_reselector.run()) {
// Check T311
if (!rrc_ptr->t311.is_running()) {
// Abort procedure if T311 expires
Info("T311 expired during cell reselection. Aborting.\n");
return proc_outcome_t::success;
}
// Cell reselection finished or not started
if (rrc_ptr->phy_sync_state == phy_in_sync) {
// In-sync, check SIBs
@ -975,7 +982,9 @@ srslte::proc_outcome_t rrc::connection_reest_proc::step_cell_reselection()
}
} else {
// Out-of-sync, relaunch reselection
Info("Serving cell is out-of-sync, re-launching re-selection procedure\n");
Info("Serving cell is out-of-sync, re-launching re-selection procedure. T311: %d/%d ms\n",
rrc_ptr->t311.value(),
rrc_ptr->t311.duration());
if (!rrc_ptr->cell_reselector.launch()) {
return proc_outcome_t::error;
}
@ -988,6 +997,13 @@ srslte::proc_outcome_t rrc::connection_reest_proc::step_cell_reselection()
proc_outcome_t rrc::connection_reest_proc::step_cell_configuration()
{
if (not rrc_ptr->serv_cell_cfg.run()) {
// Check T311
if (!rrc_ptr->t311.is_running()) {
// Abort procedure if T311 expires
Info("T311 expired during cell configuration. Aborting.\n");
return proc_outcome_t::success;
}
// SIBs adquisition not started or finished
if (rrc_ptr->phy_sync_state == phy_in_sync) {
// In-sync
@ -1045,11 +1061,6 @@ proc_outcome_t rrc::connection_reest_proc::step()
{
proc_outcome_t ret = proc_outcome_t::yield;
// Abort procedure if T311 expires
if (!rrc_ptr->t311.is_running()) {
Info("T311 expired. Aborting.\n");
ret = proc_outcome_t::success;
} else {
/*
* Implementation of procedure in 3GPP 36.331 Section 5.3.7.3: Actions following cell selection while T311 is
* running
@ -1063,7 +1074,7 @@ proc_outcome_t rrc::connection_reest_proc::step()
ret = step_cell_configuration();
break;
}
}
if (ret != proc_outcome_t::yield) {
rrc_ptr->mac->set_enable_ra_proc(true);
}

Loading…
Cancel
Save