<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/15381">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gmm: Move code handling GMM Routing Area Update Complete to its own function<br><br>Change-Id: I8e28ac03edf82374e804701ebe635e1171a2b36a<br>---<br>M src/sgsn/gprs_gmm.c<br>1 file changed, 32 insertions(+), 25 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-sgsn refs/changes/81/15381/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/sgsn/gprs_gmm.c b/src/sgsn/gprs_gmm.c</span><br><span>index b2c70aa..ea6daae 100644</span><br><span>--- a/src/sgsn/gprs_gmm.c</span><br><span>+++ b/src/sgsn/gprs_gmm.c</span><br><span>@@ -1758,6 +1758,37 @@</span><br><span>    return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* 3GPP TS 24.008 § 9.4.16: Routing area update complete */</span><br><span style="color: hsl(120, 100%, 40%);">+static int gsm48_rx_gmm_ra_upd_compl(struct sgsn_mm_ctx *mmctx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct sgsn_signal_data sig_data;</span><br><span style="color: hsl(120, 100%, 40%);">+     /* only in case SGSN offered new P-TMSI */</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGMMCTXP(LOGL_INFO, mmctx, "-> ROUTING AREA UPDATE COMPLETE\n");</span><br><span style="color: hsl(120, 100%, 40%);">+        mmctx_timer_stop(mmctx, 3350);</span><br><span style="color: hsl(120, 100%, 40%);">+        mmctx->t3350_mode = GMM_T3350_MODE_NONE;</span><br><span style="color: hsl(120, 100%, 40%);">+   mmctx->p_tmsi_old = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     mmctx->pending_req = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+    mmctx->gmm_state = GMM_REGISTERED_NORMAL;</span><br><span style="color: hsl(120, 100%, 40%);">+  switch(mmctx->ran_type) {</span><br><span style="color: hsl(120, 100%, 40%);">+  case MM_CTX_T_UTRAN_Iu:</span><br><span style="color: hsl(120, 100%, 40%);">+               osmo_fsm_inst_dispatch(mmctx->iu.mm_state_fsm, E_PMM_RA_UPDATE, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+             break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case MM_CTX_T_GERAN_Gb:</span><br><span style="color: hsl(120, 100%, 40%);">+               /* Unassign the old TLLI */</span><br><span style="color: hsl(120, 100%, 40%);">+           mmctx->gb.tlli = mmctx->gb.tlli_new;</span><br><span style="color: hsl(120, 100%, 40%);">+            gprs_llgmm_assign(mmctx->gb.llme, TLLI_UNASSIGNED,</span><br><span style="color: hsl(120, 100%, 40%);">+                           mmctx->gb.tlli_new);</span><br><span style="color: hsl(120, 100%, 40%);">+             osmo_fsm_inst_dispatch(mmctx->gb.mm_state_fsm, E_MM_RA_UPDATE, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+              break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   memset(&sig_data, 0, sizeof(sig_data));</span><br><span style="color: hsl(120, 100%, 40%);">+   sig_data.mm = mmctx;</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_signal_dispatch(SS_SGSN, S_SGSN_UPDATE, &sig_data);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* 3GPP TS 24.008 § 9.4.20 Service request.</span><br><span>  * In Iu, a UE in PMM-IDLE mode can use GSM48_MT_GMM_SERVICE_REQ to switch back</span><br><span>  * to PMM-CONNECTED mode. */</span><br><span>@@ -1893,7 +1924,6 @@</span><br><span> int gsm0408_rcv_gmm(struct sgsn_mm_ctx *mmctx, struct msgb *msg,</span><br><span>                           struct gprs_llc_llme *llme, bool drop_cipherable)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       struct sgsn_signal_data sig_data;</span><br><span>    struct gsm48_hdr *gh = (struct gsm48_hdr *) msgb_gmmh(msg);</span><br><span>  int rc;</span><br><span> </span><br><span>@@ -1997,30 +2027,7 @@</span><br><span>         case GSM48_MT_GMM_RA_UPD_COMPL:</span><br><span>              if (!mmctx)</span><br><span>                  goto null_mmctx;</span><br><span style="color: hsl(0, 100%, 40%);">-                /* only in case SGSN offered new P-TMSI */</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGMMCTXP(LOGL_INFO, mmctx, "-> ROUTING AREA UPDATE COMPLETE\n");</span><br><span style="color: hsl(0, 100%, 40%);">-          mmctx_timer_stop(mmctx, 3350);</span><br><span style="color: hsl(0, 100%, 40%);">-          mmctx->t3350_mode = GMM_T3350_MODE_NONE;</span><br><span style="color: hsl(0, 100%, 40%);">-             mmctx->p_tmsi_old = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-               mmctx->pending_req = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-              mmctx->gmm_state = GMM_REGISTERED_NORMAL;</span><br><span style="color: hsl(0, 100%, 40%);">-            switch(mmctx->ran_type) {</span><br><span style="color: hsl(0, 100%, 40%);">-            case MM_CTX_T_UTRAN_Iu:</span><br><span style="color: hsl(0, 100%, 40%);">-                 osmo_fsm_inst_dispatch(mmctx->iu.mm_state_fsm, E_PMM_RA_UPDATE, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-                       break;</span><br><span style="color: hsl(0, 100%, 40%);">-          case MM_CTX_T_GERAN_Gb:</span><br><span style="color: hsl(0, 100%, 40%);">-                 /* Unassign the old TLLI */</span><br><span style="color: hsl(0, 100%, 40%);">-                     mmctx->gb.tlli = mmctx->gb.tlli_new;</span><br><span style="color: hsl(0, 100%, 40%);">-                      gprs_llgmm_assign(mmctx->gb.llme, TLLI_UNASSIGNED,</span><br><span style="color: hsl(0, 100%, 40%);">-                                     mmctx->gb.tlli_new);</span><br><span style="color: hsl(0, 100%, 40%);">-                       osmo_fsm_inst_dispatch(mmctx->gb.mm_state_fsm, E_MM_RA_UPDATE, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-                        break;</span><br><span style="color: hsl(0, 100%, 40%);">-          }</span><br><span style="color: hsl(0, 100%, 40%);">-               rc = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-         memset(&sig_data, 0, sizeof(sig_data));</span><br><span style="color: hsl(0, 100%, 40%);">-             sig_data.mm = mmctx;</span><br><span style="color: hsl(0, 100%, 40%);">-            osmo_signal_dispatch(SS_SGSN, S_SGSN_UPDATE, &sig_data);</span><br><span style="color: hsl(120, 100%, 40%);">+          rc = gsm48_rx_gmm_ra_upd_compl(mmctx);</span><br><span>               break;</span><br><span>       case GSM48_MT_GMM_PTMSI_REALL_COMPL:</span><br><span>                 if (!mmctx)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/15381">change 15381</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-sgsn/+/15381"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-sgsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I8e28ac03edf82374e804701ebe635e1171a2b36a </div>
<div style="display:none"> Gerrit-Change-Number: 15381 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>