aboutsummaryrefslogtreecommitdiffstats
path: root/src/bts.cpp
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2014-05-30 17:58:00 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-05-30 18:21:00 +0200
commit73191a443f4be0a6a6ae7058625912150e07e3c7 (patch)
treefb26e942b8be2a25d6c717b7cd5fffec996baa15 /src/bts.cpp
parentfc03bbe0780002dd1a55969528c071ce25e8ce6d (diff)
tbf/bts, encoding: Keep track of WAIT_RELEASE state for DL assignment
The current code does not properly distinguish between DL assignments to reuse a tbf (after it was put in state WAIT_RELEASE) and DL assignments for an active tbf to change the allocation of the PDCH timeslots. This patch introduces a new variable was_releasing which remembers if trigger_dl_ass() was called with a tbf in state WAIT_RELEASE. In that case we have to set the CONTROL_ACK field in the download assignment. This should allow us to send DL assignments to change PDCH TS allocation of a tbf before we enter FLOW state.
Diffstat (limited to 'src/bts.cpp')
-rw-r--r--src/bts.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index 6c024083..9003099a 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -474,6 +474,7 @@ void BTS::trigger_dl_ass(
old_tbf->dl_ass_state = GPRS_RLCMAC_DL_ASS_SEND_ASS;
/* use TA from old TBF */
tbf->ta = old_tbf->ta;
+ tbf->was_releasing = tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE);
/* change state */
tbf_new_state(tbf, GPRS_RLCMAC_ASSIGN);
tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_PACCH);
@@ -485,6 +486,7 @@ void BTS::trigger_dl_ass(
LOGP(DRLCMAC, LOGL_ERROR, "No valid IMSI!\n");
return;
}
+ tbf->was_releasing = tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE);
/* change state */
tbf_new_state(tbf, GPRS_RLCMAC_ASSIGN);
tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_CCCH);