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:
parent
c67c90b47e
commit
e8cd6856a5
|
@ -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)
|
static void st_pmm_idle(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
||||||
{
|
{
|
||||||
switch(event) {
|
switch(event) {
|
||||||
|
case E_PMM_PS_ATTACH:
|
||||||
case E_PMM_PS_CONN_ESTABLISH:
|
case E_PMM_PS_CONN_ESTABLISH:
|
||||||
mm_state_iu_fsm_state_chg(fi, ST_PMM_CONNECTED);
|
mm_state_iu_fsm_state_chg(fi, ST_PMM_CONNECTED);
|
||||||
break;
|
break;
|
||||||
|
@ -117,7 +118,10 @@ static struct osmo_fsm_state mm_state_iu_fsm_states[] = {
|
||||||
.action = st_pmm_connected,
|
.action = st_pmm_connected,
|
||||||
},
|
},
|
||||||
[ST_PMM_IDLE] = {
|
[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),
|
.out_state_mask = X(ST_PMM_DETACHED) | X(ST_PMM_CONNECTED),
|
||||||
.name = "Idle",
|
.name = "Idle",
|
||||||
.onenter = st_pmm_idle_on_enter,
|
.onenter = st_pmm_idle_on_enter,
|
||||||
|
|
Loading…
Reference in New Issue