aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bts-trx/l1_if.c
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2016-11-24 12:42:25 +0100
committerHarald Welte <laforge@gnumonks.org>2016-12-05 18:55:49 +0000
commit960dd993cdc16d9e268f83f5c7ca294a96a5048f (patch)
tree4111195bfe5292efcbb65ebdf494ff03752f4bce /src/osmo-bts-trx/l1_if.c
parent20363d165e4979ee74054bfbbc0419184e9846f8 (diff)
TRX: prevent segfault upon phy init
Previously if multiply phy instances were configured but not used osmo-bts-trx would segfault. Terminate with clear error message instead so user can correct configuration. Example configuration which caused problem: ... phy 0 instance 0 instance 1 ... trx 0 phy 0 instance 0 Note the 2nd instance of phy 0 which is not used in trx later on. Change-Id: Id979506731ea92401458f1060e87aeb690901539
Diffstat (limited to 'src/osmo-bts-trx/l1_if.c')
-rw-r--r--src/osmo-bts-trx/l1_if.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c
index 3d5f52e9..6304c1f5 100644
--- a/src/osmo-bts-trx/l1_if.c
+++ b/src/osmo-bts-trx/l1_if.c
@@ -71,19 +71,22 @@ struct trx_l1h *l1if_open(struct phy_instance *pinst)
return NULL;
l1h->phy_inst = pinst;
- trx_sched_init(&l1h->l1s, pinst->trx);
+ rc = trx_sched_init(&l1h->l1s, pinst->trx);
+ if (rc < 0) {
+ LOGP(DL1C, LOGL_FATAL, "Cannot initialize scheduler for phy "
+ "instance %d\n", pinst->num);
+ return NULL;
+ }
rc = trx_if_open(l1h);
if (rc < 0) {
- LOGP(DL1C, LOGL_FATAL, "Cannot initialize scheduler\n");
- goto err;
+ LOGP(DL1C, LOGL_FATAL, "Cannot open TRX interface for phy "
+ "instance %d\n", pinst->num);
+ l1if_close(l1h);
+ return NULL;
}
return l1h;
-
-err:
- l1if_close(l1h);
- return NULL;
}
void l1if_close(struct trx_l1h *l1h)