diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2012-09-27 07:55:20 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2012-09-29 20:32:00 +0200 |
commit | 4168d885cf7183e09a98590799ad26fb2f162d13 (patch) | |
tree | 3f07e3259cb91399919b2aaa17399c874d7c2e9c /src/common/paging.c | |
parent | c1ad2ac20f4066aacbbb8e6482a10fe64edddbbb (diff) |
Fix: Set correct paging group for IMM.ASS on PCH
Diffstat (limited to 'src/common/paging.c')
-rw-r--r-- | src/common/paging.c | 11 |
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); |