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

Reply via email to