diff options
author | Alexander Couzens <lynxis@fe80.eu> | 2016-12-02 03:42:07 +0100 |
---|---|---|
committer | Alexander Couzens <lynxis@fe80.eu> | 2016-12-02 03:42:10 +0100 |
commit | 1c939a98d075dceff259eabd5dabb2148ed404ed (patch) | |
tree | 6210cefb93fe29cbe8a6f7a94a289333d8184110 | |
parent | adc7a41209db17dba91218a9cbbe9f9534091d23 (diff) |
rapid prototype: fix timeout on dl assignment over CCCH
Change-Id: I66ba0bab98887862a35c9d71734b449a42aba7a0
-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)); |