diff options
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/include/openbsc/chan_alloc.h | 2 | ||||
-rw-r--r-- | openbsc/src/chan_alloc.c | 2 | ||||
-rw-r--r-- | openbsc/src/paging.c | 5 |
3 files changed, 8 insertions, 1 deletions
diff --git a/openbsc/include/openbsc/chan_alloc.h b/openbsc/include/openbsc/chan_alloc.h index fa8663056..f564e9e4d 100644 --- a/openbsc/include/openbsc/chan_alloc.h +++ b/openbsc/include/openbsc/chan_alloc.h @@ -61,4 +61,6 @@ struct pchan_load { void bts_chan_load(struct pchan_load *cl, const struct gsm_bts *bts); void network_chan_load(struct pchan_load *pl, struct gsm_network *net); +int trx_is_usable(struct gsm_bts_trx *trx); + #endif /* _CHAN_ALLOC_H */ diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c index abf4de891..8141e4774 100644 --- a/openbsc/src/chan_alloc.c +++ b/openbsc/src/chan_alloc.c @@ -47,7 +47,7 @@ static int ts_is_usable(struct gsm_bts_trx_ts *ts) return 1; } -static int trx_is_usable(struct gsm_bts_trx *trx) +int trx_is_usable(struct gsm_bts_trx *trx) { /* FIXME: How does this behave for BS-11 ? */ if (is_ipaccess_bts(trx->bts)) { diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c index 820773a9e..b5dc2d052 100644 --- a/openbsc/src/paging.c +++ b/openbsc/src/paging.c @@ -265,6 +265,11 @@ int paging_request(struct gsm_network *network, struct gsm_subscriber *subscr, bts = gsm_bts_by_lac(network, subscr->lac, bts); if (!bts) break; + + /* skip all currently inactive TRX */ + if (!trx_is_usable(bts->c0)) + continue; + num_pages++; /* Trigger paging, pass any error to caller */ |