diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-05-04 22:47:45 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2018-05-05 01:50:49 +0200 |
commit | a82c0b1c42796368355e3596a3347b2cf356ba70 (patch) | |
tree | c74af59d305115e8b3b42883cb2a9e273dcfb9b0 /src/libbsc/abis_rsl.c | |
parent | bf7099262adf0f27e71a08387747c5cb0d459360 (diff) |
dyn TS, assignment: set lchan state to LCHAN_S_ACT_REQ in the proper place
Set lchan->state to LCHAN_S_ACT_REQ in rsl_chan_activate_lchan(), not in
handle_new_assignment().
This is the first part of a fix for dynamic timeslots handling in the gscon.
Rationale:
In rsl_chan_activate_lchan(), we may choose to set the lchan state to
LCHAN_S_REL_REQ and wait for dyn TS switchover from PDCH.
So the caller from bsc_api.c handle_new_assignment() must not bluntly set the
state to LCHAN_S_ACT_REQ, which is not accurate in the case of dyn TS
switchover.
In case of dyn TS switchover, a later release ack received from the BTS will
cause rsl_chan_activate_lchan() to be called again, at which point we may
accurately set state LCHAN_S_ACT_REQ, and continue the Assignment.
Related: OS#3211
Change-Id: Iedb4fb63bf1959d5f1d2c6edb6a7f5097ff16bd7
Diffstat (limited to 'src/libbsc/abis_rsl.c')
-rw-r--r-- | src/libbsc/abis_rsl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 10bef6eb2..b36e49687 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -694,7 +694,10 @@ int rsl_chan_activate_lchan(struct gsm_lchan *lchan, uint8_t act_type, rate_ctr_inc(&lchan->ts->trx->bts->bts_ctrs->ctr[BTS_CTR_CHAN_ACT_TOTAL]); - return abis_rsl_sendmsg(msg); + rc = abis_rsl_sendmsg(msg); + if (!rc) + rsl_lchan_set_state(lchan, LCHAN_S_ACT_REQ); + return rc; } /* Chapter 8.4.9: Modify channel mode on BTS side */ |