From 4f8da6dfd56a936151fd9d7c647152333c6def1a Mon Sep 17 00:00:00 2001 From: Alexander Couzens Date: Tue, 31 Jan 2017 15:34:26 +0100 Subject: gprs/sgsn: rename gprs->mm_state -> gmm_state GMM is the right term. MM state is already occupied. Change-Id: I9cfdcf921e4ebd14a5e7ce7489ec4ce5d1f5515f --- openbsc/src/gprs/gprs_gmm.c | 81 +++++++++++++++++++++++++----------------- openbsc/src/gprs/gprs_sgsn.c | 6 ++-- openbsc/src/gprs/sgsn_libgtp.c | 4 +-- openbsc/src/gprs/sgsn_vty.c | 2 +- 4 files changed, 54 insertions(+), 39 deletions(-) (limited to 'openbsc/src') diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c index 6fde75704..9ac10778f 100644 --- a/openbsc/src/gprs/gprs_gmm.c +++ b/openbsc/src/gprs/gprs_gmm.c @@ -119,28 +119,41 @@ static void mmctx_change_gtpu_endpoints_to_sgsn(struct sgsn_mm_ctx *mm_ctx) void mmctx_set_pmm_state(struct sgsn_mm_ctx *ctx, enum gprs_pmm_state state) { + if (ctx->ran_type != MM_CTX_T_UTRAN_Iu) + return; + if (ctx->pmm_state == state) return; LOGMMCTXP(LOGL_INFO, ctx, "Changing PMM state from %i to %i\n", ctx->pmm_state, state); - if (ctx->ran_type == MM_CTX_T_UTRAN_Iu) - { - switch (state) { - case PMM_IDLE: - /* TODO: start RA Upd timer */ - mmctx_change_gtpu_endpoints_to_sgsn(ctx); - break; - case PMM_CONNECTED: - break; - default: - break; - } + switch (state) { + case PMM_IDLE: + /* TODO: start RA Upd timer */ + mmctx_change_gtpu_endpoints_to_sgsn(ctx); + break; + case PMM_CONNECTED: + break; + default: + break; } ctx->pmm_state = state; } +void mmctx_set_mm_state(struct sgsn_mm_ctx *ctx, enum gprs_pmm_state state) +{ + if (ctx->ran_type != MM_CTX_T_GERAN_Gb) + return; + + if (ctx->pmm_state == state) + return; + + LOGMMCTXP(LOGL_INFO, ctx, "Changing MM state from %i to %i\n", ctx->pmm_state, state); + + ctx->pmm_state = state; +} + #ifdef BUILD_IU int sgsn_ranap_rab_ass_resp(struct sgsn_mm_ctx *ctx, RANAP_RAB_SetupOrModifiedItemIEs_t *setup_ies); int sgsn_ranap_iu_event(struct ue_conn_ctx *ctx, enum iu_event_type type, void *data) @@ -274,9 +287,9 @@ static void mm_ctx_cleanup_free(struct sgsn_mm_ctx *ctx, const char *log_text) LOGMMCTXP(LOGL_INFO, ctx, "Cleaning MM context due to %s\n", log_text); /* Mark MM state as deregistered */ - ctx->mm_state = GMM_DEREGISTERED; - + ctx->gmm_state = GMM_DEREGISTERED; mmctx_set_pmm_state(ctx, PMM_DETACHED); + mmctx_set_pmm_state(ctx, MM_IDLE); sgsn_mm_ctx_cleanup_free(ctx); } @@ -882,7 +895,7 @@ static int gsm48_gmm_authorize(struct sgsn_mm_ctx *ctx) memset(&sig_data, 0, sizeof(sig_data)); sig_data.mm = mmctx; osmo_signal_dispatch(SS_SGSN, S_SGSN_ATTACH, &sig_data); - ctx->mm_state = GMM_REGISTERED_NORMAL; + ctx->gmm_state = GMM_REGISTERED_NORMAL; #endif return gsm48_tx_gmm_att_ack(ctx); @@ -921,7 +934,7 @@ void gsm0408_gprs_authenticate(struct sgsn_mm_ctx *ctx) void gsm0408_gprs_access_granted(struct sgsn_mm_ctx *ctx) { - switch (ctx->mm_state) { + switch (ctx->gmm_state) { case GMM_COMMON_PROC_INIT: LOGMMCTXP(LOGL_NOTICE, ctx, "Authorized, continuing procedure, IMSI=%s\n", @@ -941,7 +954,7 @@ void gsm0408_gprs_access_denied(struct sgsn_mm_ctx *ctx, int gmm_cause) if (gmm_cause == SGSN_ERROR_CAUSE_NONE) gmm_cause = GMM_CAUSE_GPRS_NOTALLOWED; - switch (ctx->mm_state) { + switch (ctx->gmm_state) { case GMM_COMMON_PROC_INIT: LOGMMCTXP(LOGL_NOTICE, ctx, "Not authorized, rejecting ATTACH REQUEST " @@ -1225,11 +1238,11 @@ static int gsm48_rx_gmm_att_req(struct sgsn_mm_ctx *ctx, struct msgb *msg, #ifdef PTMSI_ALLOC /* Allocate a new P-TMSI (+ P-TMSI signature) and update TLLI */ /* Don't change the P-TMSI if a P-TMSI re-assignment is under way */ - if (ctx->mm_state != GMM_COMMON_PROC_INIT) { + if (ctx->gmm_state != GMM_COMMON_PROC_INIT) { ctx->p_tmsi_old = ctx->p_tmsi; ctx->p_tmsi = sgsn_alloc_ptmsi(); } - ctx->mm_state = GMM_COMMON_PROC_INIT; + ctx->gmm_state = GMM_COMMON_PROC_INIT; #endif if (ctx->ran_type == MM_CTX_T_GERAN_Gb) { @@ -1500,10 +1513,10 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg, mmctx->ra.mcc, mmctx->ra.mnc, mmctx->ra.lac, mmctx->ra.rac); - mmctx->mm_state = GMM_COMMON_PROC_INIT; + mmctx->gmm_state = GMM_COMMON_PROC_INIT; } } else if (!gprs_ra_id_equals(&mmctx->ra, &old_ra_id) || - mmctx->mm_state == GMM_DEREGISTERED) + mmctx->gmm_state == GMM_DEREGISTERED) { /* We cannot use the mmctx */ LOGMMCTXP(LOGL_INFO, mmctx, @@ -1545,7 +1558,7 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg, #ifdef PTMSI_ALLOC /* Don't change the P-TMSI if a P-TMSI re-assignment is under way */ - if (mmctx->mm_state != GMM_COMMON_PROC_INIT) { + if (mmctx->gmm_state != GMM_COMMON_PROC_INIT) { mmctx->p_tmsi_old = mmctx->p_tmsi; mmctx->p_tmsi = sgsn_alloc_ptmsi(); } @@ -1553,10 +1566,10 @@ static int gsm48_rx_gmm_ra_upd_req(struct sgsn_mm_ctx *mmctx, struct msgb *msg, mmctx->t3350_mode = GMM_T3350_MODE_RAU; mmctx_timer_start(mmctx, 3350, sgsn->cfg.timers.T3350); - mmctx->mm_state = GMM_COMMON_PROC_INIT; + mmctx->gmm_state = GMM_COMMON_PROC_INIT; #else /* Make sure we are NORMAL (i.e. not SUSPENDED anymore) */ - mmctx->mm_state = GMM_REGISTERED_NORMAL; + mmctx->gmm_state = GMM_REGISTERED_NORMAL; memset(&sig_data, 0, sizeof(sig_data)); sig_data.mm = mmctx; @@ -1679,7 +1692,7 @@ static int gsm48_rx_gmm_service_req(struct sgsn_mm_ctx *ctx, struct msgb *msg) goto rejected; } - ctx->mm_state = GMM_COMMON_PROC_INIT; + ctx->gmm_state = GMM_COMMON_PROC_INIT; ctx->iu.service.type = service_type; @@ -1831,8 +1844,9 @@ static int gsm0408_rcv_gmm(struct sgsn_mm_ctx *mmctx, struct msgb *msg, gprs_llgmm_assign(mmctx->gb.llme, 0xffffffff, mmctx->gb.tlli_new); } - mmctx->mm_state = GMM_REGISTERED_NORMAL; + mmctx->gmm_state = GMM_REGISTERED_NORMAL; mmctx_set_pmm_state(mmctx, PMM_CONNECTED); + mmctx_set_mm_state(mmctx, MM_READY); rc = 0; memset(&sig_data, 0, sizeof(sig_data)); @@ -1854,8 +1868,9 @@ static int gsm0408_rcv_gmm(struct sgsn_mm_ctx *mmctx, struct msgb *msg, gprs_llgmm_assign(mmctx->gb.llme, 0xffffffff, mmctx->gb.tlli_new); } - mmctx->mm_state = GMM_REGISTERED_NORMAL; + mmctx->gmm_state = GMM_REGISTERED_NORMAL; mmctx_set_pmm_state(mmctx, PMM_CONNECTED); + mmctx_set_mm_state(mmctx, MM_READY); rc = 0; memset(&sig_data, 0, sizeof(sig_data)); @@ -2682,15 +2697,15 @@ int gprs_gmm_rx_suspend(struct gprs_ra_id *raid, uint32_t tlli) return -EINVAL; } - if (mmctx->mm_state != GMM_REGISTERED_NORMAL && - mmctx->mm_state != GMM_REGISTERED_SUSPENDED) { + if (mmctx->gmm_state != GMM_REGISTERED_NORMAL && + mmctx->gmm_state != GMM_REGISTERED_SUSPENDED) { LOGMMCTXP(LOGL_NOTICE, mmctx, "SUSPEND request while state " "!= REGISTERED (TLLI=%08x)\n", tlli); return -EINVAL; } /* Transition from REGISTERED_NORMAL to REGISTERED_SUSPENDED */ - mmctx->mm_state = GMM_REGISTERED_SUSPENDED; + mmctx->gmm_state = GMM_REGISTERED_SUSPENDED; return 0; } @@ -2708,8 +2723,8 @@ int gprs_gmm_rx_resume(struct gprs_ra_id *raid, uint32_t tlli, return -EINVAL; } - if (mmctx->mm_state != GMM_REGISTERED_NORMAL && - mmctx->mm_state != GMM_REGISTERED_SUSPENDED) { + if (mmctx->gmm_state != GMM_REGISTERED_NORMAL && + mmctx->gmm_state != GMM_REGISTERED_SUSPENDED) { LOGMMCTXP(LOGL_NOTICE, mmctx, "RESUME request while state " "!= SUSPENDED (TLLI=%08x)\n", tlli); /* FIXME: should we not simply ignore it? */ @@ -2717,7 +2732,7 @@ int gprs_gmm_rx_resume(struct gprs_ra_id *raid, uint32_t tlli, } /* Transition from SUSPENDED to NORMAL */ - mmctx->mm_state = GMM_REGISTERED_NORMAL; + mmctx->gmm_state = GMM_REGISTERED_NORMAL; return 0; } diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c index e85e1a9ce..3fb11045b 100644 --- a/openbsc/src/gprs/gprs_sgsn.c +++ b/openbsc/src/gprs/gprs_sgsn.c @@ -222,7 +222,7 @@ struct sgsn_mm_ctx *sgsn_mm_ctx_alloc(uint32_t tlli, memcpy(&ctx->ra, raid, sizeof(ctx->ra)); ctx->ran_type = MM_CTX_T_GERAN_Gb; ctx->gb.tlli = tlli; - ctx->mm_state = GMM_DEREGISTERED; + ctx->gmm_state = GMM_DEREGISTERED; ctx->auth_triplet.key_seq = GSM_KEY_SEQ_INVAL; ctx->ciph_algo = sgsn->cfg.cipher; LOGMMCTXP(LOGL_DEBUG, ctx, "Allocated with %s cipher.\n", @@ -247,7 +247,7 @@ struct sgsn_mm_ctx *sgsn_mm_ctx_alloc_iu(void *uectx) ctx->ran_type = MM_CTX_T_UTRAN_Iu; ctx->iu.ue_ctx = uectx; ctx->iu.new_key = 1; - ctx->mm_state = GMM_DEREGISTERED; + ctx->gmm_state = GMM_DEREGISTERED; ctx->pmm_state = PMM_DETACHED; ctx->auth_triplet.key_seq = GSM_KEY_SEQ_INVAL; ctx->ctrg = rate_ctr_group_alloc(ctx, &mmctx_ctrg_desc, 0); @@ -658,7 +658,7 @@ failed: static void drop_one_pdp(struct sgsn_pdp_ctx *pdp) { - if (pdp->mm->mm_state == GMM_REGISTERED_NORMAL) + if (pdp->mm->gmm_state == GMM_REGISTERED_NORMAL) gsm48_tx_gsm_deact_pdp_req(pdp, GSM_CAUSE_NET_FAIL); else { /* FIXME: GPRS paging in case MS is SUSPENDED */ diff --git a/openbsc/src/gprs/sgsn_libgtp.c b/openbsc/src/gprs/sgsn_libgtp.c index 072b9baf0..062de444d 100644 --- a/openbsc/src/gprs/sgsn_libgtp.c +++ b/openbsc/src/gprs/sgsn_libgtp.c @@ -676,7 +676,7 @@ static int cb_data_ind(struct pdp_t *lib, void *packet, unsigned int len) msgb_bvci(msg) = mm->gb.bvci; msgb_nsei(msg) = mm->gb.nsei; - switch (mm->mm_state) { + switch (mm->gmm_state) { case GMM_REGISTERED_SUSPENDED: /* initiate PS PAGING procedure */ memset(&pinfo, 0, sizeof(pinfo)); @@ -695,7 +695,7 @@ static int cb_data_ind(struct pdp_t *lib, void *packet, unsigned int len) break; default: LOGP(DGPRS, LOGL_ERROR, "GTP DATA IND for TLLI %08X in state " - "%u\n", mm->gb.tlli, mm->mm_state); + "%u\n", mm->gb.tlli, mm->gmm_state); msgb_free(msg); return -1; } diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c index 246867d18..85e4e91d8 100644 --- a/openbsc/src/gprs/sgsn_vty.c +++ b/openbsc/src/gprs/sgsn_vty.c @@ -485,7 +485,7 @@ static void vty_dump_mmctx(struct vty *vty, const char *pfx, pfx, mm->msisdn, mm->gb.tlli, mm->hlr, VTY_NEWLINE); vty_out(vty, "%s MM State: %s, Routeing Area: %u-%u-%u-%u, " "Cell ID: %u%s", pfx, - get_value_string(gprs_mm_st_strs, mm->mm_state), + get_value_string(gprs_mm_st_strs, mm->gmm_state), mm->ra.mcc, mm->ra.mnc, mm->ra.lac, mm->ra.rac, mm->gb.cell_id, VTY_NEWLINE); -- cgit v1.2.3