diff options
author | Harald Welte <laforge@gnumonks.org> | 2016-10-16 23:44:16 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-11-09 15:43:34 +0000 |
commit | 7975ddf0ec2e59579331b5aa997e8057ae8d7cbc (patch) | |
tree | 1e0a6fe794fbecc2cf6b3390ef7add76573cd2d5 /openbsc | |
parent | 4579978983f5f816b1fdc5c6389633ab0b666d80 (diff) |
RBS2000: re-establish any lost signalling links
Contrary to standard A-bis, in the RBS2000 case the BSC connects
the signalling data links (LAPD) to the BTS. In case one of them
drop, we need to attempt to re-establish them.
This requires libosmo-abis with Change-Id I07f0f79e0cda09766f357032ffb4e7ad643d448a
Change-Id: I710b5af5d0acbdd3febd314849340f2adb7abd80
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/src/libbsc/bts_ericsson_rbs2000.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/openbsc/src/libbsc/bts_ericsson_rbs2000.c b/openbsc/src/libbsc/bts_ericsson_rbs2000.c index a82893729..1d122eced 100644 --- a/openbsc/src/libbsc/bts_ericsson_rbs2000.c +++ b/openbsc/src/libbsc/bts_ericsson_rbs2000.c @@ -104,6 +104,7 @@ static int inp_sig_cb(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data) { struct input_signal_data *isd = signal_data; + struct e1inp_ts *e1i_ts; if (subsys != SS_L_INPUT) return 0; @@ -121,6 +122,17 @@ static int inp_sig_cb(unsigned int subsys, unsigned int signal, break; } break; + case S_L_INP_TEI_DN: + if (isd->trx->bts->type != GSM_BTS_TYPE_RBS2000) + break; + LOGP(DNM, LOGL_NOTICE, "Line-%u TS-%u TEI-%u SAPI-%u: Link " + "Lost for Ericsson RBS2000. Re-starting DL Establishment\n", + isd->line->num, isd->ts_nr, isd->tei, isd->sapi); + /* Some datalink for a given TEI/SAPI went down, try to re-start it */ + e1i_ts = &isd->line->ts[isd->ts_nr-1]; + OSMO_ASSERT(e1i_ts->type == E1INP_TS_TYPE_SIGN); + lapd_sap_start(e1i_ts->lapd, isd->tei, isd->sapi); + break; case S_L_INP_LINE_INIT: case S_L_INP_LINE_NOALARM: if (strcasecmp(isd->line->driver->name, "DAHDI") |