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 // Run cell reselection
if (not rrc_ptr->cell_reselector.run()) { 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 // Cell reselection finished or not started
if (rrc_ptr->phy_sync_state == phy_in_sync) { if (rrc_ptr->phy_sync_state == phy_in_sync) {
// In-sync, check SIBs // In-sync, check SIBs
@ -975,7 +982,9 @@ srslte::proc_outcome_t rrc::connection_reest_proc::step_cell_reselection()
} }
} else { } else {
// Out-of-sync, relaunch reselection // 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()) { if (!rrc_ptr->cell_reselector.launch()) {
return proc_outcome_t::error; 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() proc_outcome_t rrc::connection_reest_proc::step_cell_configuration()
{ {
if (not rrc_ptr->serv_cell_cfg.run()) { 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 // SIBs adquisition not started or finished
if (rrc_ptr->phy_sync_state == phy_in_sync) { if (rrc_ptr->phy_sync_state == phy_in_sync) {
// In-sync // In-sync
@ -1045,25 +1061,20 @@ proc_outcome_t rrc::connection_reest_proc::step()
{ {
proc_outcome_t ret = proc_outcome_t::yield; proc_outcome_t ret = proc_outcome_t::yield;
// Abort procedure if T311 expires /*
if (!rrc_ptr->t311.is_running()) { * Implementation of procedure in 3GPP 36.331 Section 5.3.7.3: Actions following cell selection while T311 is
Info("T311 expired. Aborting.\n"); * running
ret = proc_outcome_t::success; */
} else { switch (state) {
/* case state_t::cell_reselection:
* Implementation of procedure in 3GPP 36.331 Section 5.3.7.3: Actions following cell selection while T311 is ret = step_cell_reselection();
* running break;
*/
switch (state) {
case state_t::cell_reselection:
ret = step_cell_reselection();
break;
case state_t::cell_configuration: case state_t::cell_configuration:
ret = step_cell_configuration(); ret = step_cell_configuration();
break; break;
}
} }
if (ret != proc_outcome_t::yield) { if (ret != proc_outcome_t::yield) {
rrc_ptr->mac->set_enable_ra_proc(true); rrc_ptr->mac->set_enable_ra_proc(true);
} }

Loading…
Cancel
Save