diff options
Diffstat (limited to 'src/sgsn/gprs_gmm_fsm.c')
-rw-r--r-- | src/sgsn/gprs_gmm_fsm.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/sgsn/gprs_gmm_fsm.c b/src/sgsn/gprs_gmm_fsm.c index 37ea90408..11b4e4ec5 100644 --- a/src/sgsn/gprs_gmm_fsm.c +++ b/src/sgsn/gprs_gmm_fsm.c @@ -69,9 +69,12 @@ static void st_gmm_registered_normal(struct osmo_fsm_inst *fi, uint32_t event, v static void st_gmm_registered_suspended(struct osmo_fsm_inst *fi, uint32_t event, void *data) { switch(event) { - case E_GMM_RESUME: + case E_GMM_RESUME: /* explicit BSSGP RESUME from BSS */ gmm_fsm_state_chg(fi, ST_GMM_REGISTERED_NORMAL); break; + case E_GMM_COMMON_PROC_INIT_REQ: /* implicit resume from MS */ + gmm_fsm_state_chg(fi, ST_GMM_COMMON_PROC_INIT); + break; } } @@ -123,10 +126,12 @@ static struct osmo_fsm_state gmm_fsm_states[] = { .action = st_gmm_registered_normal, }, [ST_GMM_REGISTERED_SUSPENDED] = { - .in_event_mask = X(E_GMM_RESUME), + .in_event_mask = X(E_GMM_RESUME) | + X(E_GMM_COMMON_PROC_INIT_REQ), .out_state_mask = X(ST_GMM_DEREGISTERED) | - X(ST_GMM_REGISTERED_NORMAL), + X(ST_GMM_REGISTERED_NORMAL) | + X(ST_GMM_COMMON_PROC_INIT), .name = "Registered.SUSPENDED", .action = st_gmm_registered_suspended, }, |