aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2016-10-16 23:44:16 +0200
committerHarald Welte <laforge@gnumonks.org>2016-10-17 11:30:46 +0200
commit5344d6f04c1b91e3ca68fbadb1b28def715aa6a1 (patch)
treec437534eee84ffc5dcebb89c56dcc87101d435e6
parente4fbd43fd523dca125237786586d5881f209e65c (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
-rw-r--r--openbsc/src/libbsc/bts_ericsson_rbs2000.c12
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")