aboutsummaryrefslogtreecommitdiffstats
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-04-08 22:39:34 +0200
commit8ecd029b127f8318221f605332b48b4fba3a353a (patch)
treebddcf1bdecdb9695e4d5ea5973a1f50464174180
parent3c0508e94adb498c6fd5b3d5a78faf63cc400860 (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..
-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 939143f2e..80a0a0843 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -1247,6 +1247,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,
@@ -1298,20 +1306,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);