diff options
author | Max <msuraev@sysmocom.de> | 2022-10-08 21:34:19 +0300 |
---|---|---|
committer | Max <msuraev@sysmocom.de> | 2022-10-14 15:04:36 +0300 |
commit | b43496a60de9b708712503ec8770ebd3fdb8417d (patch) | |
tree | eb86d5a7d0f9c3837bf0c180bffeddc01b2c56ac /src/sgsn | |
parent | caff83e702e0f4dc5e203f9e9c0533830b9d2311 (diff) |
GMM: permit E_GMM_COMMON_PROC_SUCCESS in normal state
The FSM might be moved out of ST_GMM_COMMON_PROC_INIT state either
by E_GMM_ATTACH_SUCCESS or by E_GMM_COMMON_PROC_SUCCESS events
which are not mutually exclusive. Hence the later event will arrive when we're already in
the ST_GMM_REGISTERED_NORMAL state.
Let's have both events permitted to keep the logs clean from useless error.
Related: OS#5349
Change-Id: Ia97b50aac6c665812ddca9010de7f97b17b78bd5
Diffstat (limited to 'src/sgsn')
-rw-r--r-- | src/sgsn/gprs_gmm_fsm.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/sgsn/gprs_gmm_fsm.c b/src/sgsn/gprs_gmm_fsm.c index 78946b5b1..e9c31d052 100644 --- a/src/sgsn/gprs_gmm_fsm.c +++ b/src/sgsn/gprs_gmm_fsm.c @@ -80,6 +80,11 @@ static void st_gmm_registered_normal(struct osmo_fsm_inst *fi, uint32_t event, v case E_GMM_COMMON_PROC_INIT_REQ: gmm_fsm_state_chg(fi, ST_GMM_COMMON_PROC_INIT); break; + case E_GMM_COMMON_PROC_SUCCESS: + /* If we were moved from ST_GMM_COMMON_PROC_INIT here by + * E_GMM_ATTACH_SUCCESS instead of E_GMM_COMMON_PROC_SUCCESS then we'll receive the latter here: + * we should simply ignore it */ + break; /* case E_GMM_NET_INIT_DETACH_REQ: gmm_fsm_state_chg(fi, ST_GMM_DEREGISTERED_INIT); break; */ @@ -141,6 +146,7 @@ static struct osmo_fsm_state gmm_fsm_states[] = { [ST_GMM_REGISTERED_NORMAL] = { .in_event_mask = X(E_GMM_COMMON_PROC_INIT_REQ) | + X(E_GMM_COMMON_PROC_SUCCESS) | /* X(E_GMM_NET_INIT_DETACH_REQ) | */ /* X(E_GMM_MS_INIT_DETACH_REQ) | */ X(E_GMM_SUSPEND), |