diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2021-03-25 17:55:42 +0100 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2021-03-25 17:58:07 +0100 |
commit | e8cd6856a5598e00421e3ed53fa9d87a684dcfda (patch) | |
tree | 179cc7896dafafffc07555450815be1dbd11c58d | |
parent | c67c90b47e58c087f306f0601fa39fcdb3d8fd4f (diff) |
mm_iu: Expect E_PMM_PS_ATTACH when in ST_PMM_IDLE
It can happen that the MS tries to attach while SGSN's MM Iu state is
ST_PMM_IDLE (eg because UE was hard rebooted). Since Attach is a
specific case of getting a Connection Established, also allow it as a
trigger to transit to state ST_PMM_CONNECTED.
Related: SYS#5389
Change-Id: Ia74a062ddc3052faad569f1428f0ddd02e5b188d
-rw-r--r-- | src/sgsn/gprs_mm_state_iu_fsm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/sgsn/gprs_mm_state_iu_fsm.c b/src/sgsn/gprs_mm_state_iu_fsm.c index e571026c8..69b4ef008 100644 --- a/src/sgsn/gprs_mm_state_iu_fsm.c +++ b/src/sgsn/gprs_mm_state_iu_fsm.c @@ -81,6 +81,7 @@ static void st_pmm_idle_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) static void st_pmm_idle(struct osmo_fsm_inst *fi, uint32_t event, void *data) { switch(event) { + case E_PMM_PS_ATTACH: case E_PMM_PS_CONN_ESTABLISH: mm_state_iu_fsm_state_chg(fi, ST_PMM_CONNECTED); break; @@ -117,7 +118,10 @@ static struct osmo_fsm_state mm_state_iu_fsm_states[] = { .action = st_pmm_connected, }, [ST_PMM_IDLE] = { - .in_event_mask = X(E_PMM_IMPLICIT_DETACH) | X(E_PMM_PS_CONN_ESTABLISH), + .in_event_mask = + X(E_PMM_IMPLICIT_DETACH) | + X(E_PMM_PS_CONN_ESTABLISH) | + X(E_PMM_PS_ATTACH), .out_state_mask = X(ST_PMM_DETACHED) | X(ST_PMM_CONNECTED), .name = "Idle", .onenter = st_pmm_idle_on_enter, |