aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/libbsc/chan_alloc.c33
-rw-r--r--openbsc/src/libmsc/gsm_subscriber.c14
2 files changed, 14 insertions, 33 deletions
diff --git a/openbsc/src/libbsc/chan_alloc.c b/openbsc/src/libbsc/chan_alloc.c
index 367139cad..0f4d90a16 100644
--- a/openbsc/src/libbsc/chan_alloc.c
+++ b/openbsc/src/libbsc/chan_alloc.c
@@ -481,39 +481,6 @@ int lchan_release(struct gsm_lchan *lchan, int sacch_deact, enum rsl_rel_mode mo
return 1;
}
-static struct gsm_lchan* lchan_find(struct gsm_bts *bts, struct gsm_subscriber *subscr) {
- struct gsm_bts_trx *trx;
- int ts_no, lchan_no;
-
- llist_for_each_entry(trx, &bts->trx_list, list) {
- for (ts_no = 0; ts_no < 8; ++ts_no) {
- for (lchan_no = 0; lchan_no < TS_MAX_LCHAN; ++lchan_no) {
- struct gsm_lchan *lchan =
- &trx->ts[ts_no].lchan[lchan_no];
- if (lchan->conn && subscr == lchan->conn->subscr)
- return lchan;
- }
- }
- }
-
- return NULL;
-}
-
-struct gsm_subscriber_connection *connection_for_subscr(struct gsm_subscriber *subscr)
-{
- struct gsm_bts *bts;
- struct gsm_network *net = subscr->group->net;
- struct gsm_lchan *lchan;
-
- llist_for_each_entry(bts, &net->bts_list, list) {
- lchan = lchan_find(bts, subscr);
- if (lchan)
- return lchan->conn;
- }
-
- return NULL;
-}
-
void bts_chan_load(struct pchan_load *cl, const struct gsm_bts *bts)
{
struct gsm_bts_trx *trx;
diff --git a/openbsc/src/libmsc/gsm_subscriber.c b/openbsc/src/libmsc/gsm_subscriber.c
index 08198c765..4ec0eadf9 100644
--- a/openbsc/src/libmsc/gsm_subscriber.c
+++ b/openbsc/src/libmsc/gsm_subscriber.c
@@ -374,3 +374,17 @@ void subscr_expire(struct gsm_subscriber_group *sgrp)
{
db_subscriber_expire(sgrp->net, subscr_expire_callback);
}
+
+struct gsm_subscriber_connection *connection_for_subscr(struct gsm_subscriber *subscr)
+{
+ /* FIXME: replace this with a backpointer in gsm_subscriber? */
+ struct gsm_network *net = subscr->group->net;
+ struct gsm_subscriber_connection *conn;
+
+ llist_for_each_entry(conn, &net->subscr_conns, entry) {
+ if (conn->subscr == subscr)
+ return conn;
+ }
+
+ return NULL;
+}