summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte (local) <laflocal@hanuman.gnumonks.org>2009-12-28 16:36:28 +0100
committerHarald Welte (local) <laflocal@hanuman.gnumonks.org>2009-12-28 16:36:28 +0100
commitfcfc53a33dfbc342cbc4de40308a7ecac905a743 (patch)
tree72575bd34a0f28e0990ba611600641241f23778e
parentc6e0e9a4e386a6333d282e77f56be2c9ff26d383 (diff)
export the 'trx_is_usable() function and use it from paging
this ensures we don't send paging requests to currently inactive transceivers.
-rw-r--r--openbsc/include/openbsc/chan_alloc.h2
-rw-r--r--openbsc/src/chan_alloc.c2
-rw-r--r--openbsc/src/paging.c5
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 */