diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2015-04-01 18:19:45 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2015-04-01 19:26:24 +0200 |
commit | 067ce6dea5c9b8aacf9fdec8efc00de4924a7dfe (patch) | |
tree | c2939e9bdbd7960812ae57d94fcd1661b8fd0f65 | |
parent | 32dd2f3f9b689600dd0704ed4fb12614ebf962f9 (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.c | 32 |
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) |