aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openbsc/doc/examples/osmo-nitb/hsl/openbsc.cfg90
-rw-r--r--openbsc/include/openbsc/bss.h1
-rw-r--r--openbsc/include/openbsc/gsm_data_shared.h4
-rw-r--r--openbsc/osmoappdesc.py4
-rw-r--r--openbsc/src/libbsc/Makefile.am1
-rw-r--r--openbsc/src/libbsc/abis_nm.c4
-rw-r--r--openbsc/src/libbsc/abis_rsl.c6
-rw-r--r--openbsc/src/libbsc/bsc_init.c25
-rw-r--r--openbsc/src/libbsc/bsc_vty.c48
-rw-r--r--openbsc/src/libbsc/bts_hsl_femtocell.c309
-rw-r--r--openbsc/src/libbsc/bts_init.c1
-rw-r--r--openbsc/src/libbsc/e1_config.c3
-rw-r--r--openbsc/src/libbsc/system_information.c4
-rw-r--r--openbsc/src/libcommon/gsm_data.c4
14 files changed, 6 insertions, 498 deletions
diff --git a/openbsc/doc/examples/osmo-nitb/hsl/openbsc.cfg b/openbsc/doc/examples/osmo-nitb/hsl/openbsc.cfg
deleted file mode 100644
index b0af85598..000000000
--- a/openbsc/doc/examples/osmo-nitb/hsl/openbsc.cfg
+++ /dev/null
@@ -1,90 +0,0 @@
-!
-! OpenBSC (0.9.11.261-32c0) configuration saved from vty
-!!
-password foo
-!
-line vty
- no login
-!
-e1_input
- e1_line 0 driver hsl
-network
- network country code 262
- mobile network code 42
- short name OpenBSC
- long name OpenBSC
- auth policy closed
- location updating reject cause 13
- encryption a5 0
- neci 1
- paging any use tch 0
- rrlp mode none
- mm info 0
- handover 0
- handover window rxlev averaging 10
- handover window rxqual averaging 1
- handover window rxlev neighbor averaging 10
- handover power budget interval 6
- handover power budget hysteresis 3
- handover maximum distance 9999
- timer t3101 10
- timer t3103 0
- timer t3105 0
- timer t3107 0
- timer t3109 4
- timer t3111 0
- timer t3113 60
- timer t3115 0
- timer t3117 0
- timer t3119 0
- timer t3122 0
- timer t3141 0
- dtx-used 1
- subscriber-keep-in-ram 0
- bts 0
- type hsl_femto
- band DCS1800
- cell_identity 0
- location_area_code 1
- training_sequence_code 0
- base_station_id_code 0
- ms max power 15
- cell reselection hysteresis 4
- rxlev access min 0
- channel allocator ascending
- rach tx integer 9
- rach max transmission 1
- hsl serial-number 8303701
- neighbor-list mode automatic
- oml hsl line 0
- gprs mode none
- trx 0
- rf_locked 0
- arfcn 871
- nominal power 23
- max_power_red 20
- rsl e1 tei 0
- timeslot 0
- phys_chan_config CCCH+SDCCH4
- hopping enabled 0
- timeslot 1
- phys_chan_config TCH/F
- hopping enabled 0
- timeslot 2
- phys_chan_config TCH/F
- hopping enabled 0
- timeslot 3
- phys_chan_config TCH/F
- hopping enabled 0
- timeslot 4
- phys_chan_config TCH/F
- hopping enabled 0
- timeslot 5
- phys_chan_config TCH/F
- hopping enabled 0
- timeslot 6
- phys_chan_config TCH/F
- hopping enabled 0
- timeslot 7
- phys_chan_config TCH/F
- hopping enabled 0
diff --git a/openbsc/include/openbsc/bss.h b/openbsc/include/openbsc/bss.h
index 1c6b5c342..49df547a1 100644
--- a/openbsc/include/openbsc/bss.h
+++ b/openbsc/include/openbsc/bss.h
@@ -13,7 +13,6 @@ extern int bts_init(void);
extern int bts_model_bs11_init(void);
extern int bts_model_rbs2k_init(void);
extern int bts_model_nanobts_init(void);
-extern int bts_model_hslfemto_init(void);
extern int bts_model_nokia_site_init(void);
extern int bts_model_sysmobts_init(void);
#endif
diff --git a/openbsc/include/openbsc/gsm_data_shared.h b/openbsc/include/openbsc/gsm_data_shared.h
index a42b6bbc6..3ef145765 100644
--- a/openbsc/include/openbsc/gsm_data_shared.h
+++ b/openbsc/include/openbsc/gsm_data_shared.h
@@ -393,7 +393,6 @@ enum gsm_bts_type {
GSM_BTS_TYPE_BS11,
GSM_BTS_TYPE_NANOBTS,
GSM_BTS_TYPE_RBS2000,
- GSM_BTS_TYPE_HSL_FEMTO,
GSM_BTS_TYPE_NOKIA_SITE,
GSM_BTS_TYPE_OSMO_SYSMO,
_NUM_GSM_BTS_TYPE
@@ -631,9 +630,6 @@ struct gsm_bts {
} tf;
} rbs2000;
struct {
- unsigned long serno;
- } hsl;
- struct {
uint8_t bts_type;
unsigned int configured:1,
skip_reset:1,
diff --git a/openbsc/osmoappdesc.py b/openbsc/osmoappdesc.py
index 19ec6c3c9..9d6fbe67e 100644
--- a/openbsc/osmoappdesc.py
+++ b/openbsc/osmoappdesc.py
@@ -33,7 +33,7 @@ app_configs = {
"mgcp": ["doc/examples/osmo-bsc_mgcp/mgcp.cfg"],
"gbproxy": ["doc/examples/osmo-gbproxy/osmo-gbproxy.cfg"],
"sgsn": ["doc/examples/osmo-sgsn/osmo-sgsn.cfg"],
- "nitb": ["doc/examples/osmo-nitb/hsl/openbsc.cfg",
+ "nitb": ["doc/examples/osmo-nitb/nanobts/openbsc-multitrx.cfg",
"doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
}
@@ -47,6 +47,6 @@ apps = [(4242, "src/osmo-bsc/osmo-bsc", "OsmoBSC", "osmo-bsc"),
]
vty_command = ["./src/osmo-nitb/osmo-nitb", "-c",
- "doc/examples/osmo-nitb/hsl/openbsc.cfg"]
+ "doc/examples/osmo-nitb/nanobts/openbsc.cfg"]
vty_app = apps[-1]
diff --git a/openbsc/src/libbsc/Makefile.am b/openbsc/src/libbsc/Makefile.am
index f5b1ff1da..42fabab6d 100644
--- a/openbsc/src/libbsc/Makefile.am
+++ b/openbsc/src/libbsc/Makefile.am
@@ -12,7 +12,6 @@ libbsc_a_SOURCES = abis_nm.c abis_nm_vty.c \
bts_ipaccess_nanobts.c \
bts_siemens_bs11.c \
bts_nokia_site.c \
- bts_hsl_femtocell.c \
bts_unknown.c \
bts_sysmobts.c \
chan_alloc.c \
diff --git a/openbsc/src/libbsc/abis_nm.c b/openbsc/src/libbsc/abis_nm.c
index adc2362fa..ee1fc9c98 100644
--- a/openbsc/src/libbsc/abis_nm.c
+++ b/openbsc/src/libbsc/abis_nm.c
@@ -632,10 +632,6 @@ static int abis_nm_rcvmsg_fom(struct msgb *mb)
osmo_signal_dispatch(SS_NM, S_NM_IPACC_RESTART_NACK, NULL);
break;
case NM_MT_SET_BTS_ATTR_ACK:
- /* The HSL wants an OPSTART _after_ the SI has been set */
- if (sign_link->trx->bts->type == GSM_BTS_TYPE_HSL_FEMTO) {
- abis_nm_opstart(sign_link->trx->bts, NM_OC_BTS, 255, 255, 255);
- }
break;
}
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index 7aae590fc..41bfcdc92 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -722,12 +722,6 @@ 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 2fb4f1301..8fd72cf46 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -38,7 +38,6 @@
/* global pointer to the gsm network data structure */
extern struct gsm_network *bsc_gsmnet;
-extern int hsl_setup(struct gsm_network *gsmnet);
/* Callback function for NACK on the OML NM */
static int oml_msg_nack(struct nm_nack_signal_data *nack)
@@ -98,7 +97,7 @@ int bsc_shutdown_net(struct gsm_network *net)
static int rsl_si(struct gsm_bts_trx *trx, enum osmo_sysinfo_type i, int si_len)
{
struct gsm_bts *bts = trx->bts;
- int rc, j;
+ int rc;
DEBUGP(DRR, "SI%s: %s\n", get_value_string(osmo_sitype_strs, i),
osmo_hexdump(GSM_BTS_SI(bts, i), GSM_MACBLOCK_LEN));
@@ -108,26 +107,8 @@ static int rsl_si(struct gsm_bts_trx *trx, enum osmo_sysinfo_type i, int si_len)
case SYSINFO_TYPE_5bis:
case SYSINFO_TYPE_5ter:
case SYSINFO_TYPE_6:
- if (trx->bts->type == GSM_BTS_TYPE_HSL_FEMTO) {
- /* HSL has mistaken SACCH INFO MODIFY for SACCH FILLING,
- * so we need a special workaround here */
- /* This assumes a combined BCCH and TCH on TS1...7 */
- for (j = 0; j < 4; j++)
- rsl_sacch_info_modify(&trx->ts[0].lchan[j],
- osmo_sitype2rsl(i),
- GSM_BTS_SI(bts, i), si_len);
- for (j = 1; j < 8; j++) {
- rsl_sacch_info_modify(&trx->ts[j].lchan[0],
- osmo_sitype2rsl(i),
- GSM_BTS_SI(bts, i), si_len);
- rsl_sacch_info_modify(&trx->ts[j].lchan[1],
- osmo_sitype2rsl(i),
- GSM_BTS_SI(bts, i), si_len);
- }
- rc = 0;
- } else
- rc = rsl_sacch_filling(trx, osmo_sitype2rsl(i),
- GSM_BTS_SI(bts, i), si_len);
+ rc = rsl_sacch_filling(trx, osmo_sitype2rsl(i),
+ GSM_BTS_SI(bts, i), si_len);
break;
default:
rc = rsl_bcch_info(trx, osmo_sitype2rsl(i),
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c
index b98ef1544..6c58ff10b 100644
--- a/openbsc/src/libbsc/bsc_vty.c
+++ b/openbsc/src/libbsc/bsc_vty.c
@@ -276,8 +276,6 @@ static void bts_dump_vty(struct vty *vty, struct gsm_bts *bts)
vty_out(vty, " Unit ID: %u/%u/0, OML Stream ID 0x%02x%s",
bts->ip_access.site_id, bts->ip_access.bts_id,
bts->oml_tei, VTY_NEWLINE);
- else if (bts->type == GSM_BTS_TYPE_HSL_FEMTO)
- vty_out(vty, " Serial Number: %lu%s", bts->hsl.serno, VTY_NEWLINE);
else if (bts->type == GSM_BTS_TYPE_NOKIA_SITE)
vty_out(vty, " Skip Reset: %d%s",
bts->nokia.skip_reset, VTY_NEWLINE);
@@ -560,11 +558,6 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
vty_out(vty, " oml ip.access stream_id %u line %u%s",
bts->oml_tei, bts->oml_e1_link.e1_nr, VTY_NEWLINE);
break;
- case GSM_BTS_TYPE_HSL_FEMTO:
- vty_out(vty, " hsl serial-number %lu%s", bts->hsl.serno, VTY_NEWLINE);
- vty_out(vty, " oml hsl line %u%s",
- bts->oml_e1_link.e1_nr, VTY_NEWLINE);
- break;
case GSM_BTS_TYPE_NOKIA_SITE:
vty_out(vty, " nokia_site skip-reset %d%s", bts->nokia.skip_reset, VTY_NEWLINE);
break;
@@ -1665,25 +1658,6 @@ DEFUN(cfg_bts_rsl_ip,
}
-DEFUN(cfg_bts_serno,
- cfg_bts_serno_cmd,
- "hsl serial-number STRING",
- "HSL BTS specific options\n"
- "Set the HSL Serial Number of this BTS\n"
- "Serial Number of this HSL BTS\n")
-{
- struct gsm_bts *bts = vty->index;
-
- if (bts->type != GSM_BTS_TYPE_HSL_FEMTO) {
- vty_out(vty, "%% BTS is not of HSL type%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- bts->hsl.serno = strtoul(argv[0], NULL, 10);
-
- return CMD_SUCCESS;
-}
-
DEFUN(cfg_bts_nokia_site_skip_reset,
cfg_bts_nokia_site_skip_reset_cmd,
"nokia_site skip-reset (0|1)",
@@ -1728,26 +1702,6 @@ DEFUN(cfg_bts_stream_id,
return CMD_SUCCESS;
}
-DEFUN(cfg_bts_hsl_oml,
- cfg_bts_hsl_oml_cmd,
- "oml hsl line E1_LINE",
- OML_STR "HSL femto Specific Options\n"
- "Set OML link of this HSL femto BTS\n"
- "Virtual E1/T1 line number\n")
-{
- struct gsm_bts *bts = vty->index;
- int linenr = atoi(argv[0]);
-
- if (!(bts->type == GSM_BTS_TYPE_HSL_FEMTO)) {
- vty_out(vty, "%% BTS is not of HSL type%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- bts->oml_e1_link.e1_nr = linenr;
-
- return CMD_SUCCESS;
-}
-
#define OML_E1_STR OML_STR "OML E1/T1 Configuration\n"
DEFUN(cfg_bts_oml_e1,
@@ -3084,10 +3038,8 @@ int bsc_vty_init(const struct log_info *cat)
install_element(BTS_NODE, &cfg_bts_rsl_ip_cmd);
install_element(BTS_NODE, &cfg_bts_timezone_cmd);
install_element(BTS_NODE, &cfg_bts_no_timezone_cmd);
- install_element(BTS_NODE, &cfg_bts_serno_cmd);
install_element(BTS_NODE, &cfg_bts_nokia_site_skip_reset_cmd);
install_element(BTS_NODE, &cfg_bts_stream_id_cmd);
- install_element(BTS_NODE, &cfg_bts_hsl_oml_cmd);
install_element(BTS_NODE, &cfg_bts_oml_e1_cmd);
install_element(BTS_NODE, &cfg_bts_oml_e1_tei_cmd);
install_element(BTS_NODE, &cfg_bts_challoc_cmd);
diff --git a/openbsc/src/libbsc/bts_hsl_femtocell.c b/openbsc/src/libbsc/bts_hsl_femtocell.c
deleted file mode 100644
index 1ce3eaaa1..000000000
--- a/openbsc/src/libbsc/bts_hsl_femtocell.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/* OpenBSC support code for HSL Femtocell */
-
-/* (C) 2011 by Harald Welte <laforge@gnumonks.org>
- * (C) 2011 by OnWaves
- *
- * All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <inttypes.h>
-
-#include <arpa/inet.h>
-
-#include <osmocom/gsm/tlv.h>
-#include <openbsc/gsm_data.h>
-#include <openbsc/abis_nm.h>
-#include <openbsc/abis_rsl.h>
-#include <openbsc/signal.h>
-#include <openbsc/debug.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/abis/e1_input.h>
-#include <osmocom/abis/ipaccess.h>
-
-static int bts_model_hslfemto_start(struct gsm_network *net);
-static void bts_model_hslfemto_e1line_bind_ops(struct e1inp_line *line);
-
-static struct gsm_bts_model model_hslfemto = {
- .type = GSM_BTS_TYPE_HSL_FEMTO,
- .start = bts_model_hslfemto_start,
- .e1line_bind_ops = &bts_model_hslfemto_e1line_bind_ops,
- .nm_att_tlvdef = {
- .def = {
- /* no HSL specific OML attributes that we know of */
- },
- },
-};
-
-
-static const uint8_t l1_msg[] = {
-#ifdef HSL_SR_1_0
- 0x80, 0x8a,
-#else
- 0x81, 0x8a,
-#endif
- 0xC4, 0x0b,
-};
-
-static const uint8_t conn_trau_msg[] = {
-#ifdef HSL_SR_1_0
- 0x80, 0x81,
-#else
- 0x81, 0x81,
-#endif
- 0xC1, 16,
- 0x02, 0x00, 0x00, 0x00, 0xC0, 0xA8, 0xEA, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
-static const uint8_t conn_trau_msg2[] = {
-#ifdef HSL_SR_1_0
- 0x80, 0x81,
-#else
- 0x81, 0x81,
-#endif
- 0xC1, 16,
- 0x02, 0x00, 0xd4, 0x07, 0xC0, 0xA8, 0xEA, 0x01,
- 0x38, 0xA4, 0x45, 0x00, 0x04, 0x59, 0x40, 0x00
-};
-
-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
-};
-
-static inline struct msgb *hsl_alloc_msgb(void)
-{
- return msgb_alloc_headroom(1024, 127, "HSL");
-}
-
-static int hslfemto_bootstrap_om(struct gsm_bts *bts)
-{
- struct msgb *msg;
-
- msg = hsl_alloc_msgb();
- msgb_put(msg, sizeof(l1_msg));
- memcpy(msg->data, l1_msg, sizeof(l1_msg));
- msg->dst = bts->c0->rsl_link;
- abis_rsl_sendmsg(msg);
-
-#if 1
- msg = hsl_alloc_msgb();
- msgb_put(msg, sizeof(conn_trau_msg));
- memcpy(msg->data, conn_trau_msg, sizeof(conn_trau_msg));
- msg->dst = bts->c0->rsl_link;
- abis_rsl_sendmsg(msg);
-#endif
- msg = hsl_alloc_msgb();
- msgb_put(msg, sizeof(conn_trau_msg2));
- memcpy(msg->data, conn_trau_msg2, sizeof(conn_trau_msg2));
- msg->dst = bts->c0->rsl_link;
- abis_rsl_sendmsg(msg);
-
- *((uint16_t *)oml_arfcn_bsic+10) = htons(bts->c0->arfcn);
- oml_arfcn_bsic[13] = bts->bsic;
-
- msg = hsl_alloc_msgb();
- msgb_put(msg, sizeof(oml_arfcn_bsic));
- memcpy(msg->data, oml_arfcn_bsic, sizeof(oml_arfcn_bsic));
- msg->dst = bts->c0->rsl_link;
- abis_sendmsg(msg);
-
- /* Delay the OPSTART until after SI have been set via RSL */
- //abis_nm_opstart(bts, NM_OC_BTS, 255, 255, 255);
-
- return 0;
-}
-
-/* Callback function to be called every time we receive a signal from INPUT */
-static int inp_sig_cb(unsigned int subsys, unsigned int signal,
- void *handler_data, void *signal_data)
-{
- struct input_signal_data *isd = signal_data;
-
- if (subsys != SS_L_INPUT)
- return 0;
-
- switch (signal) {
- case S_L_INP_TEI_UP:
- switch (isd->link_type) {
- case E1INP_SIGN_OML:
- if (isd->trx->bts->type == GSM_BTS_TYPE_HSL_FEMTO)
- hslfemto_bootstrap_om(isd->trx->bts);
- break;
- }
- }
-
- return 0;
-}
-
-static struct gsm_network *hsl_gsmnet;
-
-static int bts_model_hslfemto_start(struct gsm_network *net)
-{
- model_hslfemto.features.data = &model_hslfemto._features_data[0];
- model_hslfemto.features.data_len = sizeof(model_hslfemto._features_data);
-
- gsm_btsmodel_set_feature(&model_hslfemto, BTS_FEAT_GPRS);
- gsm_btsmodel_set_feature(&model_hslfemto, BTS_FEAT_EGPRS);
-
- osmo_signal_register_handler(SS_L_INPUT, inp_sig_cb, NULL);
-
- hsl_gsmnet = net;
- return 0;
-}
-
-int bts_model_hslfemto_init(void)
-{
- return gsm_bts_model_register(&model_hslfemto);
-}
-
-#define OML_UP 0x0001
-#define RSL_UP 0x0002
-
-struct gsm_bts *find_bts_by_serno(struct gsm_network *net, uint64_t serno)
-{
- struct gsm_bts *bts;
-
- llist_for_each_entry(bts, &net->bts_list, list) {
- if (bts->type != GSM_BTS_TYPE_HSL_FEMTO)
- continue;
-
- if (serno == bts->hsl.serno)
- return bts;
- }
- return NULL;
-}
-
-/* This function is called once the OML/RSL link becomes up. */
-static struct e1inp_sign_link *
-hsl_sign_link_up(void *unit_data, struct e1inp_line *line,
- enum e1inp_sign_type type)
-{
- struct hsl_unit *dev = unit_data;
- struct gsm_bts *bts;
-
- bts = find_bts_by_serno(hsl_gsmnet, dev->serno);
- if (!bts) {
- LOGP(DLINP, LOGL_ERROR, "Unable to find BTS config for "
- "serial number %"PRIx64"\n", dev->serno);
- return NULL;
- }
- DEBUGP(DLINP, "Identified HSL BTS Serial Number %"PRIx64"\n", dev->serno);
-
- /* we shouldn't hardcode it, but HSL femto also hardcodes it... */
- bts->oml_tei = 255;
- bts->c0->rsl_tei = 0;
- bts->oml_link = e1inp_sign_link_create(&line->ts[E1INP_SIGN_OML-1],
- E1INP_SIGN_OML, bts->c0,
- bts->oml_tei, 0);
- bts->c0->rsl_link = e1inp_sign_link_create(&line->ts[E1INP_SIGN_OML-1],
- E1INP_SIGN_RSL, bts->c0,
- bts->c0->rsl_tei, 0);
- e1inp_event(&line->ts[E1INP_SIGN_OML-1], S_L_INP_TEI_UP, 255, 0);
- e1inp_event(&line->ts[E1INP_SIGN_OML-1], S_L_INP_TEI_UP, 0, 0);
- bts->ip_access.flags |= OML_UP;
- bts->ip_access.flags |= (RSL_UP << 0);
-
- return bts->oml_link;
-}
-
-void hsl_drop_oml(struct gsm_bts *bts)
-{
- if (!bts->oml_link)
- return;
-
- e1inp_sign_link_destroy(bts->oml_link);
- bts->oml_link = NULL;
-
- e1inp_sign_link_destroy(bts->c0->rsl_link);
- bts->c0->rsl_link = NULL;
-
- bts->ip_access.flags = 0;
-}
-
-static void hsl_sign_link_down(struct e1inp_line *line)
-{
- /* No matter what link went down, we close both signal links. */
- struct e1inp_ts *ts = &line->ts[E1INP_SIGN_OML-1];
- struct e1inp_sign_link *link;
-
- llist_for_each_entry(link, &ts->sign.sign_links, list) {
- struct gsm_bts *bts = link->trx->bts;
-
- hsl_drop_oml(bts);
- /* Yes, we only use the first element of the list. */
- break;
- }
-}
-
-/* This function is called if we receive one OML/RSL message. */
-static int hsl_sign_link(struct msgb *msg)
-{
- int ret = 0;
- struct e1inp_sign_link *link = msg->dst;
- struct e1inp_ts *e1i_ts = link->ts;
-
- switch (link->type) {
- case E1INP_SIGN_OML:
- if (!(link->trx->bts->ip_access.flags & OML_UP)) {
- e1inp_event(e1i_ts, S_L_INP_TEI_UP,
- link->tei, link->sapi);
- link->trx->bts->ip_access.flags |= OML_UP;
- }
- ret = abis_nm_rcvmsg(msg);
- break;
- case E1INP_SIGN_RSL:
- if (!(link->trx->bts->ip_access.flags &
- (RSL_UP << link->trx->nr))) {
- e1inp_event(e1i_ts, S_L_INP_TEI_UP,
- link->tei, link->sapi);
- link->trx->bts->ip_access.flags |=
- (RSL_UP << link->trx->nr);
- }
- ret = abis_rsl_rcvmsg(msg);
- break;
- default:
- LOGP(DLINP, LOGL_ERROR, "Unknown signal link type %d\n",
- link->type);
- msgb_free(msg);
- break;
- }
- return ret;
-}
-
-static struct e1inp_line_ops hsl_e1inp_line_ops = {
- .cfg = {
- .ipa = {
- .addr = "0.0.0.0",
- .role = E1INP_LINE_R_BSC,
- },
- },
- .sign_link_up = hsl_sign_link_up,
- .sign_link_down = hsl_sign_link_down,
- .sign_link = hsl_sign_link,
-};
-
-static void bts_model_hslfemto_e1line_bind_ops(struct e1inp_line *line)
-{
- e1inp_line_bind_ops(line, &hsl_e1inp_line_ops);
-}
diff --git a/openbsc/src/libbsc/bts_init.c b/openbsc/src/libbsc/bts_init.c
index ae41ecce7..d6b152a79 100644
--- a/openbsc/src/libbsc/bts_init.c
+++ b/openbsc/src/libbsc/bts_init.c
@@ -23,7 +23,6 @@ int bts_init(void)
bts_model_bs11_init();
bts_model_rbs2k_init();
bts_model_nanobts_init();
- bts_model_hslfemto_init();
bts_model_nokia_site_init();
bts_model_sysmobts_init();
/* Your new BTS here. */
diff --git a/openbsc/src/libbsc/e1_config.c b/openbsc/src/libbsc/e1_config.c
index d3dff4880..d82b009c7 100644
--- a/openbsc/src/libbsc/e1_config.c
+++ b/openbsc/src/libbsc/e1_config.c
@@ -185,8 +185,7 @@ int e1_reconfig_bts(struct gsm_bts *bts)
/* skip signal link initialization, this is done later for these BTS. */
if (bts->type == GSM_BTS_TYPE_NANOBTS ||
- bts->type == GSM_BTS_TYPE_OSMO_SYSMO ||
- bts->type == GSM_BTS_TYPE_HSL_FEMTO)
+ bts->type == GSM_BTS_TYPE_OSMO_SYSMO)
return e1inp_line_update(line);
/* OML link */
diff --git a/openbsc/src/libbsc/system_information.c b/openbsc/src/libbsc/system_information.c
index 88b81dcb1..c901a4ae6 100644
--- a/openbsc/src/libbsc/system_information.c
+++ b/openbsc/src/libbsc/system_information.c
@@ -596,7 +596,6 @@ static int generate_si5(uint8_t *output, struct gsm_bts *bts)
switch (bts->type) {
case GSM_BTS_TYPE_NANOBTS:
case GSM_BTS_TYPE_OSMO_SYSMO:
- case GSM_BTS_TYPE_HSL_FEMTO:
*output++ = (l2_plen << 2) | 1;
l2_plen++;
break;
@@ -632,7 +631,6 @@ static int generate_si5bis(uint8_t *output, struct gsm_bts *bts)
switch (bts->type) {
case GSM_BTS_TYPE_NANOBTS:
case GSM_BTS_TYPE_OSMO_SYSMO:
- case GSM_BTS_TYPE_HSL_FEMTO:
*output++ = (l2_plen << 2) | 1;
l2_plen++;
break;
@@ -677,7 +675,6 @@ static int generate_si5ter(uint8_t *output, struct gsm_bts *bts)
switch (bts->type) {
case GSM_BTS_TYPE_NANOBTS:
case GSM_BTS_TYPE_OSMO_SYSMO:
- case GSM_BTS_TYPE_HSL_FEMTO:
*output++ = (l2_plen << 2) | 1;
l2_plen++;
break;
@@ -714,7 +711,6 @@ static int generate_si6(uint8_t *output, struct gsm_bts *bts)
switch (bts->type) {
case GSM_BTS_TYPE_NANOBTS:
case GSM_BTS_TYPE_OSMO_SYSMO:
- case GSM_BTS_TYPE_HSL_FEMTO:
*output++ = (l2_plen << 2) | 1;
l2_plen++;
break;
diff --git a/openbsc/src/libcommon/gsm_data.c b/openbsc/src/libcommon/gsm_data.c
index dd1d93bc2..5f7e32e73 100644
--- a/openbsc/src/libcommon/gsm_data.c
+++ b/openbsc/src/libcommon/gsm_data.c
@@ -189,7 +189,6 @@ const struct value_string bts_type_names[_NUM_GSM_BTS_TYPE+1] = {
{ GSM_BTS_TYPE_BS11, "bs11" },
{ GSM_BTS_TYPE_NANOBTS, "nanobts" },
{ GSM_BTS_TYPE_RBS2000, "rbs2000" },
- { GSM_BTS_TYPE_HSL_FEMTO, "hsl_femto" },
{ GSM_BTS_TYPE_NOKIA_SITE, "nokia_site" },
{ GSM_BTS_TYPE_OSMO_SYSMO, "sysmobts" },
{ 0, NULL }
@@ -200,7 +199,6 @@ const struct value_string bts_type_descs[_NUM_GSM_BTS_TYPE+1] = {
{ GSM_BTS_TYPE_BS11, "Siemens BTS (BS-11 or compatible)" },
{ GSM_BTS_TYPE_NANOBTS, "ip.access nanoBTS or compatible" },
{ GSM_BTS_TYPE_RBS2000, "Ericsson RBS2000 Series" },
- { GSM_BTS_TYPE_HSL_FEMTO, "HSL 2.75G femto" },
{ GSM_BTS_TYPE_NOKIA_SITE, "Nokia {Metro,Ultra,In}Site" },
{ GSM_BTS_TYPE_OSMO_SYSMO, "sysmocom sysmoBTS" },
{ 0, NULL }
@@ -349,8 +347,6 @@ int gsm_set_bts_type(struct gsm_bts *bts, enum gsm_bts_type type)
}
switch (bts->type) {
- case GSM_BTS_TYPE_HSL_FEMTO:
- bts->c0->rsl_tei = 0;
case GSM_BTS_TYPE_NANOBTS:
case GSM_BTS_TYPE_OSMO_SYSMO:
/* Set the default OML Stream ID to 0xff */