aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-07-03 16:06:20 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-07-03 16:19:41 +0200
commitf0167ddfc26755ef44be5c6939b3491e3364ba36 (patch)
tree09c4a779066584b90034ecbca78938cf3fc7f426
parenta164d5291e238668003c88fa963310371750d6d8 (diff)
hsl: Remove the support for the HSL bts from OpenBSC
The support has been implemented for an old model, we were told that newer versions would be made incompatible with OpenBSC. Ther are various warnings in the code and coverity has found some new ones. Just remove the code as we don't know of anyone using this code.
-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 */