jolly has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/34791?usp=email )
Change subject: ASCI: Change state correctly when leaving group mode ...................................................................... ASCI: Change state correctly when leaving group mode Use new_mm_state() to leave group mode. This will trigger IMSI detach when returning to IDLE mode, if it has been delayed. Related: OS#5364 Change-Id: I3c83c9e0fe10b35d60d125df6929fcb5ddc35f1a --- M src/host/layer23/src/mobile/gsm48_mm.c 1 file changed, 21 insertions(+), 4 deletions(-) Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved diff --git a/src/host/layer23/src/mobile/gsm48_mm.c b/src/host/layer23/src/mobile/gsm48_mm.c index e2924f7..5e02659 100644 --- a/src/host/layer23/src/mobile/gsm48_mm.c +++ b/src/host/layer23/src/mobile/gsm48_mm.c @@ -1125,6 +1125,8 @@ if (!nmsg) return; gsm48_mmevent_msg(ms, nmsg); + /* Stop here and wait for the IMSI_DETACH event being handled. */ + return; } /* 4.4.2 start T3212 in MM IDLE mode if not started or has expired */ @@ -2153,6 +2155,8 @@ struct gsm48_mmxx_hdr *nmmh; int msg_type; + LOGP(DMM, LOGL_INFO, "IMSI detach delayed until group receive/transmit mode is left.\n"); + /* remember to detach later */ mm->delay_detach = 1; @@ -3889,9 +3893,9 @@ /* Change mode back to normal or limited service. */ if (mm->substate == GSM48_MM_SST_RX_VGCS_LIMITED) - mm->substate = GSM48_MM_SST_LIMITED_SERVICE; + new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_LIMITED_SERVICE); if (mm->substate == GSM48_MM_SST_RX_VGCS_NORMAL) - mm->substate = GSM48_MM_SST_NORMAL_SERVICE; + new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_NORMAL_SERVICE); /* Return IDLE, if not already. Also select the sub-state to use. */ gsm48_mm_return_idle(ms, NULL); @@ -3937,9 +3941,9 @@ /* Change mode back to normal or limited service. */ if (mm->substate == GSM48_MM_SST_RX_VGCS_LIMITED) - mm->substate = GSM48_MM_SST_LIMITED_SERVICE; + new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_LIMITED_SERVICE); if (mm->substate == GSM48_MM_SST_RX_VGCS_NORMAL) - mm->substate = GSM48_MM_SST_NORMAL_SERVICE; + new_mm_state(mm, GSM48_MM_ST_MM_IDLE, GSM48_MM_SST_NORMAL_SERVICE); /* We are already IDLE. Also select the sub-state to use. */ gsm48_mm_return_idle(ms, NULL); -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/34791?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I3c83c9e0fe10b35d60d125df6929fcb5ddc35f1a Gerrit-Change-Number: 34791 Gerrit-PatchSet: 2 Gerrit-Owner: jolly <andr...@eversberg.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de> Gerrit-Reviewer: jolly <andr...@eversberg.eu> Gerrit-Reviewer: laforge <lafo...@osmocom.org> Gerrit-MessageType: merged