path: root/src/libbsc/abis_rsl.c
diff options
authorNeels Hofmeyr <neels@hofmeyr.de>2018-05-04 22:47:45 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-05-05 01:50:49 +0200
commita82c0b1c42796368355e3596a3347b2cf356ba70 (patch)
treec74af59d305115e8b3b42883cb2a9e273dcfb9b0 /src/libbsc/abis_rsl.c
parentbf7099262adf0f27e71a08387747c5cb0d459360 (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')
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,
- 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 */