summaryrefslogtreecommitdiffstats
path: root/src/host/layer23/src/mobile/gsm48_mm.c
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2011-08-06 17:56:06 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2011-08-06 17:56:06 +0200
commit210de12ec4ffa9a3ffc8a1cb81f60c30a834dee1 (patch)
tree371329b23cc754dc7768b96d93ace554ccca1cc4 /src/host/layer23/src/mobile/gsm48_mm.c
parent3b2b3b09a9ce8ff7d8fcfc3107172008a322372b (diff)
Fix of wong Classmark 2 when doing CM Service Request.
Same reason as the commit below... (3b2b3b09a) Thanx again to Dieter for pointing this out.
Diffstat (limited to 'src/host/layer23/src/mobile/gsm48_mm.c')
-rw-r--r--src/host/layer23/src/mobile/gsm48_mm.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/host/layer23/src/mobile/gsm48_mm.c b/src/host/layer23/src/mobile/gsm48_mm.c
index ec393c2b..ff936e35 100644
--- a/src/host/layer23/src/mobile/gsm48_mm.c
+++ b/src/host/layer23/src/mobile/gsm48_mm.c
@@ -2753,6 +2753,8 @@ static int gsm48_mm_tx_cm_serv_req(struct osmocom_ms *ms, int rr_prim,
uint8_t cm_serv)
{
struct gsm48_mmlayer *mm = &ms->mmlayer;
+ struct gsm48_rrlayer *rr = &ms->rrlayer;
+ struct gsm322_cellsel *cs = &ms->cellsel;
struct gsm_subscriber *subscr = &ms->subscr;
struct gsm_settings *set = &ms->settings;
struct msgb *nmsg;
@@ -2778,7 +2780,9 @@ static int gsm48_mm_tx_cm_serv_req(struct osmocom_ms *ms, int rr_prim,
nsr->cipher_key_seq = subscr->key_seq;
/* classmark 2 */
cm2lv[0] = sizeof(struct gsm48_classmark2);
- gsm48_rr_enc_cm2(ms, (struct gsm48_classmark2 *)(cm2lv + 1));
+ gsm48_rr_enc_cm2(ms, (struct gsm48_classmark2 *)(cm2lv + 1),
+ (rr_prim == GSM48_RR_EST_REQ) ? cs->sel_arfcn
+ : rr->cd_now.arfcn);
/* MI */
if (mm->est_cause == RR_EST_CAUSE_EMERGENCY && set->emergency_imsi[0]) {
LOGP(DMM, LOGL_INFO, "-> Using IMSI %s for emergency\n",