aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc/abis_rsl.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2011-03-04 13:41:31 +0100
committerHarald Welte <laforge@gnumonks.org>2011-03-04 13:44:07 +0100
commitfd355a3c6feccca5b774c0b3291a6066d0459067 (patch)
treec6840a0623d7bb863b2ba3ef2356bdbfa3fe9aa8 /openbsc/src/libbsc/abis_rsl.c
parent89579b4317a7f7ab6ee706399bee4b8f25a12c3a (diff)
[HSL] initial support for the HSL 2.75G Femtocell
The HSL Femtocell seems to be a poor man implementation of the ip.access Abis/IP protocol, but cutting corners wherever possible. We try to workaround those corners wherever possible...
Diffstat (limited to 'openbsc/src/libbsc/abis_rsl.c')
-rw-r--r--openbsc/src/libbsc/abis_rsl.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index 07a7dc68c..58e2a7cd7 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -636,11 +636,14 @@ static void error_timeout_cb(void *data)
rsl_lchan_set_state(lchan, LCHAN_S_NONE);
}
+static int rsl_rx_rf_chan_rel_ack(struct gsm_lchan *lchan);
+
/* Chapter 8.4.14 / 4.7: Tell BTS to release the radio channel */
static int rsl_rf_chan_release(struct gsm_lchan *lchan, int error)
{
struct abis_rsl_dchan_hdr *dh;
struct msgb *msg;
+ int rc;
if (lchan->state == LCHAN_S_REL_ERR) {
LOGP(DRSL, LOGL_NOTICE, "%s is in error state not sending release.\n",
@@ -671,8 +674,15 @@ static int rsl_rf_chan_release(struct gsm_lchan *lchan, int error)
msg->trx->bts->network->T3111 + 2, 0);
}
+ rc = abis_rsl_sendmsg(msg);
+
/* BTS will respond by RF CHAN REL ACK */
- return abis_rsl_sendmsg(msg);
+
+ /* The HSL Femto seems to 'forget' sending a REL ACK for TS1...TS7 */
+ if (lchan->ts->trx->bts->type == GSM_BTS_TYPE_HSL_FEMTO && lchan->ts->nr != 0)
+ rc = rsl_rx_rf_chan_rel_ack(lchan);
+
+ return rc;
}
static int rsl_rx_rf_chan_rel_ack(struct gsm_lchan *lchan)