summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-04-01 18:19:45 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-04-01 19:26:24 +0200
commit067ce6dea5c9b8aacf9fdec8efc00de4924a7dfe (patch)
treec2939e9bdbd7960812ae57d94fcd1661b8fd0f65
parent32dd2f3f9b689600dd0704ed4fb12614ebf962f9 (diff)
bsc: In preparation to the MT lac/ci patching split the code
For MT we can't page per lac as we don't know which BTS was the original one. Split the grace period and normal mode into two methods so we can bloat both of them later.
-rw-r--r--openbsc/src/osmo-bsc/osmo_bsc_grace.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_grace.c b/openbsc/src/osmo-bsc/osmo_bsc_grace.c
index aa268a40a..4fd0ebb2e 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_grace.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_grace.c
@@ -33,16 +33,18 @@ int bsc_grace_allow_new_connection(struct gsm_network *network, struct gsm_bts *
return network->bsc_data->rf_ctrl->policy == S_RF_ON;
}
-/**
- * Try to not page if everything the cell is not on.
- */
-int bsc_grace_paging_request(struct gsm_subscriber *subscr, int chan_needed,
- struct osmo_msc_data *msc)
+
+static int normal_paging(struct gsm_subscriber *subscr, int chan_needed,
+ struct osmo_msc_data *msc)
{
- struct gsm_bts *bts = NULL;
+ return paging_request(subscr->group->net, subscr, chan_needed, NULL,
+ msc);
+}
- if (subscr->group->net->bsc_data->rf_ctrl->policy == S_RF_ON)
- goto page;
+static int locked_paging(struct gsm_subscriber *subscr, int chan_needed,
+ struct osmo_msc_data *msc)
+{
+ struct gsm_bts *bts = NULL;
/*
* Check if there is any BTS that is on for the given lac. Start
@@ -67,9 +69,17 @@ int bsc_grace_paging_request(struct gsm_subscriber *subscr, int chan_needed,
/* All bts are either off or in the grace period */
return 0;
-page:
- return paging_request(subscr->group->net, subscr, chan_needed, NULL,
- msc);
+}
+
+/**
+ * Try to not page if everything the cell is not on.
+ */
+int bsc_grace_paging_request(struct gsm_subscriber *subscr, int chan_needed,
+ struct osmo_msc_data *msc)
+{
+ if (subscr->group->net->bsc_data->rf_ctrl->policy == S_RF_ON)
+ return normal_paging(subscr, chan_needed, msc);
+ return locked_paging(subscr, chan_needed, msc);
}
static int handle_sub(struct gsm_lchan *lchan, const char *text)