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
This commit is contained in:
Pau Espin 2021-03-25 17:55:42 +01:00
parent c67c90b47e
commit e8cd6856a5
1 changed files with 5 additions and 1 deletions

View File

@ -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,