diff options
-rw-r--r-- | openbsc/src/libabis/input/hsl.c | 8 | ||||
-rw-r--r-- | openbsc/src/libbsc/abis_rsl.c | 3 | ||||
-rw-r--r-- | openbsc/src/libbsc/bsc_init.c | 2 | ||||
-rw-r--r-- | openbsc/src/libbsc/bts_hsl_femtocell.c | 4 |
4 files changed, 12 insertions, 5 deletions
diff --git a/openbsc/src/libabis/input/hsl.c b/openbsc/src/libabis/input/hsl.c index 12e974b34..360be32fc 100644 --- a/openbsc/src/libabis/input/hsl.c +++ b/openbsc/src/libabis/input/hsl.c @@ -228,7 +228,7 @@ static int handle_ts1_read(struct bsc_fd *bfd) } /* HSL proprietary RSL extension */ - if (hh->proto == 0 && msg->l2h[0] == 0x80) { + if (hh->proto == 0 && (msg->l2h[0] == 0x81 || msg->l2h[0] == 0x80)) { ret = process_hsl_rsl(msg, line); if (ret < 0) { /* FIXME: close connection */ @@ -238,11 +238,11 @@ static int handle_ts1_read(struct bsc_fd *bfd) return 0; /* else: continue... */ } - +#ifdef HSL_SR_1_0 /* HSL for whatever reason chose to use 0x81 instead of 0x80 for FOM */ if (hh->proto == 255 && msg->l2h[0] == (ABIS_OM_MDISC_FOM | 0x01)) msg->l2h[0] = ABIS_OM_MDISC_FOM; - +#endif link = e1inp_lookup_sign_link(e1i_ts, hh->proto, 0); if (!link) { LOGP(DINP, LOGL_ERROR, "no matching signalling link for " @@ -312,9 +312,11 @@ static int handle_ts1_write(struct bsc_fd *bfd) switch (sign_link->type) { case E1INP_SIGN_OML: proto = IPAC_PROTO_OML; +#ifdef HSL_SR_1_0 /* HSL uses 0x81 for FOM for some reason */ if (msg->data[0] == ABIS_OM_MDISC_FOM) msg->data[0] = ABIS_OM_MDISC_FOM | 0x01; +#endif break; case E1INP_SIGN_RSL: proto = IPAC_PROTO_RSL; diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c index 58e2a7cd7..9a4dc5b4f 100644 --- a/openbsc/src/libbsc/abis_rsl.c +++ b/openbsc/src/libbsc/abis_rsl.c @@ -677,10 +677,11 @@ static int rsl_rf_chan_release(struct gsm_lchan *lchan, int error) rc = abis_rsl_sendmsg(msg); /* BTS will respond by RF CHAN REL ACK */ - +#ifdef HSL_SR_1_0 /* 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); +#endif return rc; } diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c index 0072bb6f8..37386d7e9 100644 --- a/openbsc/src/libbsc/bsc_init.c +++ b/openbsc/src/libbsc/bsc_init.c @@ -397,7 +397,7 @@ static int bootstrap_bts(struct gsm_bts *bts) if (bts->network->dtx_enabled) bts->si_common.cell_options.dtx = 0; else - bts->si_common.cell_options.dtx = 2; + bts->si_common.cell_options.dtx = 3; bts->si_common.cell_options.pwrc = 0; /* PWRC not set */ diff --git a/openbsc/src/libbsc/bts_hsl_femtocell.c b/openbsc/src/libbsc/bts_hsl_femtocell.c index 2813195b2..d5834ef7d 100644 --- a/openbsc/src/libbsc/bts_hsl_femtocell.c +++ b/openbsc/src/libbsc/bts_hsl_femtocell.c @@ -61,7 +61,11 @@ static const uint8_t conn_trau_msg2[] = { }; static uint8_t oml_arfcn_bsic[] = { +#ifdef HSL_SR_1_0 0x81, 0x80, 0x00, 10, +#else + 0x80, 0x80, 0x00, 10, +#endif NM_MT_SET_BTS_ATTR, NM_OC_BTS, 0xff, 0xff, 0xff, NM_ATT_BCCH_ARFCN, 0x03, 0x67, NM_ATT_BSIC, 0x00 |