aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-04-08 22:39:34 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-05-31 21:30:16 +0800
commitdbc5fae576d4c3c32a534a8e625c48e7177ab7d1 (patch)
tree2c4e15d8d9e9b6e7b29afd92ad6dd6da46288c72 /openbsc/src
parenta4b16658d514a8bc43d44e4717b2eb9d507d1699 (diff)
[rsl] Move rf channel release scheduling to a new method
The current channel release has a couple of issues we will need to fix in a set of upcoming commits. The issues include: 1.) sending release twice 2.) reassigning the channel inbetween the relase..
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/abis_rsl.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index 53b29823e..51c200b27 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -1258,6 +1258,14 @@ static int rsl_rx_rll_err_ind(struct msgb *msg)
return 0;
}
+static void rsl_handle_release(struct gsm_lchan *lchan)
+{
+ /* we can now releae the channel on the BTS/Abis side */
+ /* FIXME: officially we need to start T3111 and wait for
+ * some grace period */
+ rsl_rf_chan_release(lchan);
+}
+
/* ESTABLISH INDICATION, LOCATION AREA UPDATE REQUEST
0x02, 0x06,
0x01, 0x20,
@@ -1309,20 +1317,14 @@ static int abis_rsl_rx_rll(struct msgb *msg)
msg->lchan->sapis[rllh->link_id & 0x7] = LCHAN_SAPI_UNUSED;
rll_indication(msg->lchan, rllh->link_id,
BSC_RLLR_IND_REL_IND);
- /* we can now releae the channel on the BTS/Abis side */
- /* FIXME: officially we need to start T3111 and wait for
- * some grace period */
- rsl_rf_chan_release(msg->lchan);
+ rsl_handle_release(msg->lchan);
break;
case RSL_MT_REL_CONF:
/* BTS informs us of having received UA from MS,
* in response to DISC that we've sent earlier */
DEBUGPC(DRLL, "RELEASE CONFIRMATION\n");
msg->lchan->sapis[rllh->link_id & 0x7] = LCHAN_SAPI_UNUSED;
- /* we can now releae the channel on the BTS/Abis side */
- /* FIXME: officially we need to start T3111 and wait for
- * some grace period */
- rsl_rf_chan_release(msg->lchan);
+ rsl_handle_release(msg->lchan);
break;
case RSL_MT_ERROR_IND:
rc = rsl_rx_rll_err_ind(msg);