aboutsummaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2012-09-27 07:55:20 +0200
committerHarald Welte <laforge@gnumonks.org>2012-09-29 20:32:00 +0200
commit4168d885cf7183e09a98590799ad26fb2f162d13 (patch)
tree3f07e3259cb91399919b2aaa17399c874d7c2e9c /src/common
parentc1ad2ac20f4066aacbbb8e6482a10fe64edddbbb (diff)
Fix: Set correct paging group for IMM.ASS on PCH
Diffstat (limited to 'src/common')
-rw-r--r--src/common/paging.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/common/paging.c b/src/common/paging.c
index a4514de7..cfa2b080 100644
--- a/src/common/paging.c
+++ b/src/common/paging.c
@@ -210,7 +210,7 @@ int paging_add_imm_ass(struct paging_state *ps, const uint8_t *data,
{
struct llist_head *group_q;
struct paging_record *pr;
- uint16_t paging_group;
+ uint16_t imsi, paging_group;
if (len != GSM_MACBLOCK_LEN + 3) {
LOGP(DPAG, LOGL_ERROR, "IMM.ASS invalid length %d\n", len);
@@ -218,10 +218,11 @@ int paging_add_imm_ass(struct paging_state *ps, const uint8_t *data,
}
len -= 3;
- paging_group = 100 * (*(data)++ - '0');
- paging_group += 10 * (*(data)++ - '0');
- paging_group += *(data)++ - '0';
- paging_group %= ps->chan_desc.bs_pa_mfrms+2;
+ imsi = 100 * ((*(data++)) - '0');
+ imsi += 10 * ((*(data++)) - '0');
+ imsi += (*(data++)) - '0';
+ paging_group = gsm0502_calc_paging_group(&ps->chan_desc, imsi);
+
group_q = &ps->paging_queue[paging_group];
pr = talloc_zero(ps, struct paging_record);