nas: move re-arming and stopping of attach request related timers

t3402, t3410 and t3411 are now managed in the sender
function of the attach request. previosly they were only
correctly started in the high-level NAS call start_attach_request()
which may not be called if NAS itself resends the request
This commit is contained in:
Andre Puschmann 2020-03-26 22:18:36 +01:00
parent 15c47fab56
commit d0480141e5
1 changed files with 13 additions and 17 deletions

View File

@ -342,7 +342,7 @@ void nas::timer_expired(uint32_t timeout_id)
// Section 5.5.1.2.6 case c)
attach_attempt_counter++;
nas_log->info("Timer T3410 expired after attach attempt %d/%d: starting T3411)\n",
nas_log->info("Timer T3410 expired after attach attempt %d/%d: starting T3411\n",
attach_attempt_counter,
max_attach_attempts);
@ -383,21 +383,6 @@ void nas::start_attach_request(srslte::proc_state_t* result, srslte::establishme
nas_log->info("Attach Request with cause %s.\n", to_string(cause_).c_str());
switch (state) {
case EMM_STATE_DEREGISTERED:
// start T3410
nas_log->debug("Starting T3410\n");
t3410.run();
// stop T3411
if (t3411.is_running()) {
t3411.stop();
}
// stop T3402
if (t3402.is_running()) {
t3402.stop();
}
// Search PLMN is not selected
if (!plmn_is_selected) {
nas_log->info("No PLMN selected. Starting PLMN Search...\n");
@ -948,6 +933,7 @@ void nas::parse_attach_accept(uint32_t lcid, unique_byte_buffer_t pdu)
// stop T3410
if (t3410.is_running()) {
nas_log->debug("Stopping T3410\n");
t3410.stop();
}
@ -1192,6 +1178,7 @@ void nas::parse_attach_reject(uint32_t lcid, unique_byte_buffer_t pdu)
// stop T3410
if (t3410.is_running()) {
nas_log->debug("Stopping T3410\n");
t3410.stop();
}
@ -1708,11 +1695,20 @@ void nas::gen_attach_request(srslte::unique_byte_buffer_t& msg)
ctxt.tx_count++;
}
// stop T3411
// stop T3411 and T3402
if (t3411.is_running()) {
nas_log->debug("Stopping T3411\n");
t3411.stop();
}
if (t3402.is_running()) {
nas_log->debug("Stopping T3402\n");
t3402.stop();
}
// start T3410
nas_log->debug("Starting T3410\n");
t3410.run();
}
void nas::gen_service_request(srslte::unique_byte_buffer_t& msg)