diff options
-rw-r--r-- | openbsc/src/bsc_init.c | 4 | ||||
-rw-r--r-- | openbsc/src/e1_config.c | 42 |
2 files changed, 37 insertions, 9 deletions
diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc_init.c index 13a9677e9..91fb4aa9b 100644 --- a/openbsc/src/bsc_init.c +++ b/openbsc/src/bsc_init.c @@ -1219,8 +1219,10 @@ int bsc_bootstrap_network(int (*mncc_recv)(struct gsm_network *, struct msgb *), if (!is_ipaccess_bts(bts)) rc = e1_reconfig_bts(bts); - if (rc < 0) + if (rc < 0) { + fprintf(stderr, "Error in E1 input driver setup\n"); exit (1); + } } /* initialize nanoBTS support omce */ diff --git a/openbsc/src/e1_config.c b/openbsc/src/e1_config.c index f781b9e25..dd819926f 100644 --- a/openbsc/src/e1_config.c +++ b/openbsc/src/e1_config.c @@ -48,12 +48,19 @@ int e1_reconfig_ts(struct gsm_bts_trx_ts *ts) DEBUGP(DMI, "e1_reconfig_ts(%u,%u,%u)\n", ts->trx->bts->nr, ts->trx->nr, ts->nr); - if (!e1_link->e1_ts) + if (!e1_link->e1_ts) { + LOGP(DINP, LOGL_ERROR, "TS (%u/%u/%u) without E1 timeslot?\n", + ts->nr, ts->trx->nr, ts->trx->bts->nr); return 0; + } line = e1inp_line_get(e1_link->e1_nr); - if (!line) + if (!line) { + LOGP(DINP, LOGL_ERROR, "TS (%u/%u/%u) referring to " + "non-existing E1 line %u\n", ts->nr, ts->trx->nr, + ts->trx->bts->nr, e1_link->e1_nr); return -ENOMEM; + } switch (ts->pchan) { case GSM_PCHAN_TCH_F: @@ -77,19 +84,29 @@ int e1_reconfig_trx(struct gsm_bts_trx *trx) struct e1inp_sign_link *rsl_link; int i; - if (!e1_link->e1_ts) + if (!e1_link->e1_ts) { + LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link without " + "timeslot?\n", trx->bts->nr, trx->nr); return -EINVAL; + } /* RSL Link */ line = e1inp_line_get(e1_link->e1_nr); - if (!line) + if (!line) { + LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link referring " + "to non-existing E1 line %u\n", trx->bts->nr, + trx->nr, e1_link->e1_nr); return -ENOMEM; + } sign_ts = &line->ts[e1_link->e1_ts-1]; e1inp_ts_config(sign_ts, line, E1INP_TS_TYPE_SIGN); rsl_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_RSL, trx, trx->rsl_tei, SAPI_RSL); - if (!rsl_link) + if (!rsl_link) { + LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link creation " + "failed\n", trx->bts->nr, trx->nr); return -ENOMEM; + } if (trx->rsl_link) e1inp_sign_link_destroy(trx->rsl_link); trx->rsl_link = rsl_link; @@ -110,19 +127,28 @@ int e1_reconfig_bts(struct gsm_bts *bts) DEBUGP(DMI, "e1_reconfig_bts(%u)\n", bts->nr); - if (!e1_link->e1_ts) + if (!e1_link->e1_ts) { + LOGP(DINP, LOGL_ERROR, "BTS %u OML link without timeslot?\n", + bts->nr); return -EINVAL; + } /* OML link */ line = e1inp_line_get(e1_link->e1_nr); - if (!line) + if (!line) { + LOGP(DINP, LOGL_ERROR, "BTS %u OML link referring to " + "non-existing E1 line %u\n", bts->nr, e1_link->e1_nr); return -ENOMEM; + } sign_ts = &line->ts[e1_link->e1_ts-1]; e1inp_ts_config(sign_ts, line, E1INP_TS_TYPE_SIGN); oml_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_OML, bts->c0, bts->oml_tei, SAPI_OML); - if (!oml_link) + if (!oml_link) { + LOGP(DINP, LOGL_ERROR, "BTS %u OML link creation failed\n", + bts->nr); return -ENOMEM; + } if (bts->oml_link) e1inp_sign_link_destroy(bts->oml_link); bts->oml_link = oml_link; |