aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-03-25 16:57:22 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2021-03-25 16:57:24 +0100
commitc26072a77f4353f257b5ec9664da2b588e65accf (patch)
treeaecae4bc5e41f5a778225673b7e71db2897c706c
parentce0a0e9beb40540a0d852462172070185d7cb2e6 (diff)
gmm_fsm: Expect E_GMM_COMMON_PROC_INIT_REQ when in ST_GMM_COMMON_PROC_INIT
Due to whatever errors, the MS may re-init the Common Procedure by retransmitting a GPRS Attach Request while we are for instance aiting for Identity to be resolved. See this log: MM(---/ffffffff) -> GMM ATTACH REQUEST MI(3903513414) type="GPRS attach" GMM(gmm_fsm)[0x8136110]{Deregistered}: Allocated GMM_ATTACH_REQ_FSM(gb_gmm_req)[0x81383c0]{Init}: Allocated MM_STATE_Gb[0x8138ac0]{Idle}: Allocated MM_STATE_Iu[0x8138bb0]{Detached}: Allocated GMM(gmm_fsm)[0x8136110]{Deregistered}: Received Event E_GMM_COMMON_PROC_INIT_REQ GMM(gmm_fsm)[0x8136110]{Deregistered}: state_chg to CommonProcedureInitiated GMM_ATTACH_REQ_FSM(gb_gmm_req)[0x81383c0]{Init}: Received Event E_ATTACH_REQ_RECV GMM_ATTACH_REQ_FSM(gb_gmm_req)[0x81383c0]{Init}: state_chg to CheckIdentity MM(/fba673a2) <- GPRS IDENTITY REQUEST: mi_type=IMEI UE(0x2){001-01-10422-99} Received GSM 04.08 message type 0x16, but no MM context available GMM_ATTACH_REQ_FSM(gb_gmm_req)[0x81383c0]{CheckIdentity}: Timeout of T3370 MM(/fba673a2) <- GPRS IDENTITY REQUEST: mi_type=IMEI [Failure to handle GSM48_MT_GMM_ID_RESP and subsequent retransmission of GPRS IDENTITY REQUEST happens a couple times here] MM(---/ffffffff) -> GMM ATTACH REQUEST MI(3903513414) type="GPRS attach" GMM(gmm_fsm)[0x8136110]{CommonProcedureInitiated}: Received Event E_GMM_COMMON_PROC_INIT_REQ GMM(gmm_fsm)[0x8136110]{CommonProcedureInitiated}: Event E_GMM_COMMON_PROC_INIT_REQ not permitted GMM_ATTACH_REQ_FSM(gb_gmm_req)[0x81383c0]{CheckIdentity}: Received Event E_ATTACH_REQ_RECV [Here IDENTITY REQUEST is sent again, and this time MS answers ID RESPONSE back and goes forward] Related: SYS#5389 Change-Id: I93d7d6bc694c84223a11d075d24c234b82b73389
-rw-r--r--src/sgsn/gprs_gmm_fsm.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/sgsn/gprs_gmm_fsm.c b/src/sgsn/gprs_gmm_fsm.c
index 886726c68..caec5864c 100644
--- a/src/sgsn/gprs_gmm_fsm.c
+++ b/src/sgsn/gprs_gmm_fsm.c
@@ -57,6 +57,10 @@ static void st_gmm_deregistered(struct osmo_fsm_inst *fi, uint32_t event, void *
static void st_gmm_common_proc_init(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
switch(event) {
+ case E_GMM_COMMON_PROC_INIT_REQ:
+ /* MS may retransmit GPRS Attach Request if for some reason
+ * CommonProcedure didn't go forward correctly */
+ break;
/* TODO: events not used
case E_GMM_LOWER_LAYER_FAILED:
case E_GMM_COMMON_PROC_FAILED:
@@ -126,7 +130,8 @@ static struct osmo_fsm_state gmm_fsm_states[] = {
/* X(E_GMM_LOWER_LAYER_FAILED) | */
/* X(E_GMM_COMMON_PROC_FAILED) | */
X(E_GMM_COMMON_PROC_SUCCESS) |
- X(E_GMM_ATTACH_SUCCESS),
+ X(E_GMM_ATTACH_SUCCESS) |
+ X(E_GMM_COMMON_PROC_INIT_REQ),
.out_state_mask =
X(ST_GMM_DEREGISTERED) |
X(ST_GMM_REGISTERED_NORMAL),