diff options
author | Harald Welte <laforge@gnumonks.org> | 2009-08-10 11:43:22 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2009-08-10 11:43:22 +0200 |
commit | 115d1036d6ecc52356a73a45e7eec118ce0ba510 (patch) | |
tree | fefacbfc0327a968b8fbb98b4fb2306a1489d458 /openbsc/src/abis_rsl.c | |
parent | f1676e5f9d2991e6b15de39456321952d13327db (diff) |
rename rsl_channel_release to rsl_rf_channel_release
and add some more comments to help understand the complex release
procedures.
Diffstat (limited to 'openbsc/src/abis_rsl.c')
-rw-r--r-- | openbsc/src/abis_rsl.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c index 3dae952b1..2f334360b 100644 --- a/openbsc/src/abis_rsl.c +++ b/openbsc/src/abis_rsl.c @@ -631,7 +631,7 @@ int rsl_chan_mode_modify_req(struct gsm_lchan *lchan) return abis_rsl_sendmsg(msg); } -/* Chapter 8.4.5 */ +/* Chapter 8.4.5 / 4.6: Deactivate the SACCH after 04.08 RR CHAN RELEASE */ int rsl_deact_sacch(struct gsm_lchan *lchan) { struct abis_rsl_dchan_hdr *dh; @@ -650,8 +650,8 @@ int rsl_deact_sacch(struct gsm_lchan *lchan) return abis_rsl_sendmsg(msg); } -/* Chapter 9.1.7 of 04.08 */ -int rsl_chan_release(struct gsm_lchan *lchan) +/* Chapter 8.4.14 / 4.7: Tell BTS to release the radio channel */ +int rsl_rf_chan_release(struct gsm_lchan *lchan) { struct abis_rsl_dchan_hdr *dh; struct msgb *msg = rsl_msgb_alloc(); @@ -663,9 +663,10 @@ int rsl_chan_release(struct gsm_lchan *lchan) msg->lchan = lchan; msg->trx = lchan->ts->trx; - DEBUGP(DRSL, "Channel Release CMD channel=%s chan_nr=0x%02x\n", + DEBUGP(DRSL, "RF Channel Release CMD channel=%s chan_nr=0x%02x\n", gsm_ts_name(lchan->ts), dh->chan_nr); + /* BTS will respond by RF CHAN REL ACK */ return abis_rsl_sendmsg(msg); } @@ -885,7 +886,7 @@ static int rsl_rx_conn_fail(struct msgb *msg) DEBUGPC(DRSL, "RELEASING.\n"); /* FIXME: only free it after channel release ACK */ - return rsl_chan_release(msg->lchan); + return rsl_rf_chan_release(msg->lchan); } static int rsl_rx_meas_res(struct msgb *msg) @@ -1038,7 +1039,7 @@ static void t3101_expired(void *data) { struct gsm_lchan *lchan = data; - rsl_chan_release(lchan); + rsl_rf_chan_release(lchan); } /* MS has requested a channel on the RACH */ @@ -1193,7 +1194,7 @@ static int rsl_rx_rll_err_ind(struct msgb *msg) rll_indication(msg->lchan, rllh->link_id, BSC_RLLR_IND_ERR_IND); if (rlm_cause[1] == RLL_CAUSE_T200_EXPIRED) - return rsl_chan_release(msg->lchan); + return rsl_rf_chan_release(msg->lchan); return 0; } @@ -1246,14 +1247,18 @@ static int abis_rsl_rx_rll(struct msgb *msg) rll_indication(msg->lchan, rllh->link_id, BSC_RLLR_IND_REL_IND); /* we can now releae the channel on the BTS/Abis side */ - rsl_chan_release(msg->lchan); + /* FIXME: officially we need to start T3111 and wait for + * some grace period */ + rsl_rf_chan_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"); /* we can now releae the channel on the BTS/Abis side */ - rsl_chan_release(msg->lchan); + /* FIXME: officially we need to start T3111 and wait for + * some grace period */ + rsl_rf_chan_release(msg->lchan); break; case RSL_MT_ERROR_IND: rc = rsl_rx_rll_err_ind(msg); |