mirror of https://github.com/PentHertz/srsLTE.git
Process all calls to RLF in the main RRC task
This commit is contained in:
parent
af8898943f
commit
06a5bdaab2
|
@ -350,7 +350,8 @@ private:
|
|||
void ho_failed();
|
||||
void start_go_idle();
|
||||
void rrc_connection_release(const std::string& cause);
|
||||
void radio_link_failure();
|
||||
void radio_link_failure_push_cmd();
|
||||
void radio_link_failure_process();
|
||||
void leave_connected();
|
||||
void stop_timers();
|
||||
void start_con_restablishment(asn1::rrc::reest_cause_e cause);
|
||||
|
|
|
@ -201,7 +201,7 @@ void rrc::run_tti()
|
|||
}
|
||||
|
||||
if (simulate_rlf) {
|
||||
radio_link_failure();
|
||||
radio_link_failure_process();
|
||||
simulate_rlf = false;
|
||||
}
|
||||
|
||||
|
@ -237,7 +237,7 @@ void rrc::run_tti()
|
|||
process_pcch(std::move(msg.pdu));
|
||||
break;
|
||||
case cmd_msg_t::RLF:
|
||||
radio_link_failure();
|
||||
radio_link_failure_process();
|
||||
break;
|
||||
case cmd_msg_t::HO_COMPLETE:
|
||||
ho_handler.trigger(ho_proc::ra_completed_ev{msg.lcid > 0});
|
||||
|
@ -560,10 +560,22 @@ bool rrc::mbms_service_start(uint32_t serv, uint32_t port)
|
|||
*
|
||||
*******************************************************************************/
|
||||
|
||||
/* Detection of radio link failure (5.3.11.3)
|
||||
* Upon T310 expiry, RA problem or RLC max retx
|
||||
/*
|
||||
* This function is called from T310 expiry, RA problem or RLC max retx
|
||||
* Pushes a command to the command queue to process the actions in the background
|
||||
*/
|
||||
void rrc::radio_link_failure()
|
||||
void rrc::radio_link_failure_push_cmd()
|
||||
{
|
||||
cmd_msg_t msg;
|
||||
msg.command = cmd_msg_t::RLF;
|
||||
cmd_q.push(std::move(msg));
|
||||
}
|
||||
|
||||
/*
|
||||
* Perform the actions upon detection of radio link failure (5.3.11.3)
|
||||
* This function must be executed from the main RRC task to avoid stack loops
|
||||
*/
|
||||
void rrc::radio_link_failure_process()
|
||||
{
|
||||
// TODO: Generate and store failure report
|
||||
rrc_log->warning("Detected Radio-Link Failure\n");
|
||||
|
@ -592,16 +604,14 @@ void rrc::max_retx_attempted()
|
|||
{
|
||||
// TODO: Handle the radio link failure
|
||||
rrc_log->warning("Max RLC reTx attempted\n");
|
||||
cmd_msg_t msg;
|
||||
msg.command = cmd_msg_t::RLF;
|
||||
cmd_q.push(std::move(msg));
|
||||
radio_link_failure_push_cmd();
|
||||
}
|
||||
|
||||
void rrc::timer_expired(uint32_t timeout_id)
|
||||
{
|
||||
if (timeout_id == t310.id()) {
|
||||
rrc_log->info("Timer T310 expired: Radio Link Failure\n");
|
||||
radio_link_failure();
|
||||
radio_link_failure_push_cmd();
|
||||
} else if (timeout_id == t311.id()) {
|
||||
if (connection_reest.is_idle()) {
|
||||
rrc_log->info("Timer T311 expired: Going to RRC IDLE\n");
|
||||
|
|
Loading…
Reference in New Issue