aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc/paging.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libbsc/paging.c')
-rw-r--r--openbsc/src/libbsc/paging.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/openbsc/src/libbsc/paging.c b/openbsc/src/libbsc/paging.c
index 371a7a673..55d1a8541 100644
--- a/openbsc/src/libbsc/paging.c
+++ b/openbsc/src/libbsc/paging.c
@@ -54,19 +54,20 @@ void *tall_paging_ctx;
#define PAGING_TIMER 0, 500000
-static unsigned int calculate_group(struct gsm_bts *bts, struct gsm_subscriber *subscr)
+static unsigned int
+gsm0502_calc_paging_group(struct gsm48_control_channel_descr *chan_desc, uint64_t imsi)
{
int ccch_conf;
int bs_cc_chans;
int blocks;
unsigned int group;
- ccch_conf = bts->si_common.chan_desc.ccch_conf;
+ ccch_conf = chan_desc->ccch_conf;
bs_cc_chans = rsl_ccch_conf_to_bs_cc_chans(ccch_conf);
/* code word + 2, as 2 channels equals 0x0 */
- blocks = gsm48_number_of_paging_subchannels(&bts->si_common.chan_desc);
- group = gsm0502_get_paging_group(str_to_imsi(subscr->imsi),
- bs_cc_chans, blocks);
+ blocks = gsm48_number_of_paging_subchannels(chan_desc);
+ group = gsm0502_get_paging_group(imsi, bs_cc_chans, blocks);
+
return group;
}
@@ -87,6 +88,7 @@ static void page_ms(struct gsm_paging_request *request)
uint8_t mi[128];
unsigned int mi_len;
unsigned int page_group;
+ struct gsm_bts *bts = request->bts;
LOGP(DPAG, LOGL_INFO, "Going to send paging commands: imsi: '%s' tmsi: '0x%x'\n",
request->subscr->imsi, request->subscr->tmsi);
@@ -96,8 +98,9 @@ static void page_ms(struct gsm_paging_request *request)
else
mi_len = gsm48_generate_mid_from_tmsi(mi, request->subscr->tmsi);
- page_group = calculate_group(request->bts, request->subscr);
- gsm0808_page(request->bts, page_group, mi_len, mi, request->chan_type);
+ page_group = gsm0502_calc_paging_group(&bts->si_common.chan_desc,
+ str_to_imsi(request->subscr->imsi));
+ gsm0808_page(bts, page_group, mi_len, mi, request->chan_type);
}
static void paging_schedule_if_needed(struct gsm_bts_paging_state *paging_bts)