diff options
-rw-r--r-- | src/bts.cpp | 4 | ||||
-rw-r--r-- | src/tbf.cpp | 17 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index 4928b333..8e60a571 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -503,7 +503,7 @@ int BTS::rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn) LOGP(DRLCMAC, LOGL_DEBUG, "Got IMM.ASS confirm for TLLI=%08x\n", tlli); if (dl_tbf->m_wait_confirm) - tbf_timer_start(dl_tbf, 0, Tassign_agch); + tbf_timer_start(dl_tbf, 1, Tassign_agch); return 0; } @@ -525,7 +525,7 @@ int BTS::rcv_imm_ass_cnf_dt(uint32_t tlli, uint32_t fn) LOGP(DRLCMAC, LOGL_DEBUG, "Got IMM.ASS confirm for TLLI=%08x\n", tlli); if (dl_tbf->m_wait_confirm) - tbf_timer_start(dl_tbf, 0, Tassign_agch); + tbf_timer_start(dl_tbf, 1, Tassign_agch); return 0; } diff --git a/src/tbf.cpp b/src/tbf.cpp index 072d0afb..a9bad8e9 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -844,6 +844,21 @@ void gprs_rlcmac_tbf::handle_timeout() } if ((state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH))) { gprs_rlcmac_dl_tbf *dl_tbf = as_dl_tbf(this); + if (dl_tbf->state_is(GPRS_RLCMAC_ASSIGN)) { + tbf_assign_control_ts(dl_tbf); + + /* keep to flags */ + dl_tbf->state_flags &= GPRS_RLCMAC_FLAG_TO_MASK; + dl_tbf->update(); + dl_tbf->bts->trigger_dl_ass(dl_tbf, dl_tbf); + + return; + } + } + break; + case 1: + if ((state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH))) { + gprs_rlcmac_dl_tbf *dl_tbf = as_dl_tbf(this); dl_tbf->m_wait_confirm = 0; if (dl_tbf->state_is(GPRS_RLCMAC_ASSIGN)) { tbf_assign_control_ts(dl_tbf); @@ -865,7 +880,7 @@ void gprs_rlcmac_tbf::handle_timeout() dl_tbf->update(); - dl_tbf->bts->trigger_dl_ass(dl_tbf, dl_tbf); + dl_tbf->bts->trigger_dl_ass(dl_tbf, NULL); } else LOGP(DRLCMAC, LOGL_NOTICE, "%s Continue flow after " "IMM.ASS confirm\n", tbf_name(dl_tbf)); |