<p>lynxis lazus <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/15483">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Iu: implement a user inactivity timer<br><br>The user inactivity timer is similiar to the Gb READY timer and reduces<br>the resources taken by an idle UE.<br><br>Change-Id: I66c2ac0350cb074aefd9a22c5121acf723f239d3<br>---<br>M include/osmocom/sgsn/gprs_mm_state_iu_fsm.h<br>M src/sgsn/gprs_mm_state_iu_fsm.c<br>M src/sgsn/sgsn_vty.c<br>M tests/test_nodes.vty<br>4 files changed, 29 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/sgsn/gprs_mm_state_iu_fsm.h b/include/osmocom/sgsn/gprs_mm_state_iu_fsm.h</span><br><span>index 7f02bcc..05342f9 100644</span><br><span>--- a/include/osmocom/sgsn/gprs_mm_state_iu_fsm.h</span><br><span>+++ b/include/osmocom/sgsn/gprs_mm_state_iu_fsm.h</span><br><span>@@ -19,6 +19,7 @@</span><br><span> E_PMM_PS_CONN_ESTABLISH,</span><br><span> E_PMM_IMPLICIT_DETACH, /* = E_PS_ATTACH_REJECT, E_RAU_REJECT */</span><br><span> E_PMM_RA_UPDATE, /* = Serving RNC relocation */</span><br><span style="color: hsl(120, 100%, 40%);">+ E_PMM_USER_INACTIVITY, /* when the inactivity timer runs out */</span><br><span> };</span><br><span> </span><br><span> extern struct osmo_fsm mm_state_iu_fsm;</span><br><span>diff --git a/src/sgsn/gprs_mm_state_iu_fsm.c b/src/sgsn/gprs_mm_state_iu_fsm.c</span><br><span>index b098f20..e6b80d7 100644</span><br><span>--- a/src/sgsn/gprs_mm_state_iu_fsm.c</span><br><span>+++ b/src/sgsn/gprs_mm_state_iu_fsm.c</span><br><span>@@ -12,7 +12,8 @@</span><br><span> </span><br><span> static const struct osmo_tdef_state_timeout mm_state_iu_fsm_timeouts[32] = {</span><br><span> [ST_PMM_DETACHED] = { },</span><br><span style="color: hsl(0, 100%, 40%);">- [ST_PMM_CONNECTED] = { },</span><br><span style="color: hsl(120, 100%, 40%);">+ /* non-spec -T3314 (User inactivity timer) */</span><br><span style="color: hsl(120, 100%, 40%);">+ [ST_PMM_CONNECTED] = { .T=-3314 },</span><br><span> [ST_PMM_IDLE] = { },</span><br><span> };</span><br><span> </span><br><span>@@ -47,6 +48,10 @@</span><br><span> static void st_pmm_connected(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span> {</span><br><span> struct sgsn_mm_ctx *ctx = fi->priv;</span><br><span style="color: hsl(120, 100%, 40%);">+ const struct RANAP_Cause user_inactive_cause = {</span><br><span style="color: hsl(120, 100%, 40%);">+ .present = RANAP_Cause_PR_radioNetwork,</span><br><span style="color: hsl(120, 100%, 40%);">+ .choice.radioNetwork = RANAP_CauseRadioNetwork_user_inactivity,</span><br><span style="color: hsl(120, 100%, 40%);">+ };</span><br><span> </span><br><span> switch(event) {</span><br><span> case E_PMM_PS_CONN_RELEASE:</span><br><span>@@ -57,6 +62,10 @@</span><br><span> sgsn_ranap_iu_release_free(ctx, NULL);</span><br><span> mm_state_iu_fsm_state_chg(fi, ST_PMM_DETACHED);</span><br><span> break;</span><br><span style="color: hsl(120, 100%, 40%);">+ case E_PMM_USER_INACTIVITY:</span><br><span style="color: hsl(120, 100%, 40%);">+ sgsn_ranap_iu_release_free(ctx, &user_inactive_cause);</span><br><span style="color: hsl(120, 100%, 40%);">+ mm_state_iu_fsm_state_chg(fi, ST_PMM_DETACHED);</span><br><span style="color: hsl(120, 100%, 40%);">+ break;</span><br><span> case E_PMM_RA_UPDATE:</span><br><span> break;</span><br><span> }</span><br><span>@@ -81,6 +90,18 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static int pmm_state_fsm_timer_cb(struct osmo_fsm_inst *fi)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ switch(fi->state) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case ST_PMM_CONNECTED:</span><br><span style="color: hsl(120, 100%, 40%);">+ /* timer for pmm state. state=CONNECTED: -T3314 (User inactivity timer) */</span><br><span style="color: hsl(120, 100%, 40%);">+ osmo_fsm_inst_dispatch(fi, E_PMM_USER_INACTIVITY, 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%);">+ return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static struct osmo_fsm_state mm_state_iu_fsm_states[] = {</span><br><span> [ST_PMM_DETACHED] = {</span><br><span> .in_event_mask = X(E_PMM_PS_ATTACH) | X(E_PMM_IMPLICIT_DETACH),</span><br><span>@@ -89,7 +110,8 @@</span><br><span> .action = st_pmm_detached,</span><br><span> },</span><br><span> [ST_PMM_CONNECTED] = {</span><br><span style="color: hsl(0, 100%, 40%);">- .in_event_mask = X(E_PMM_PS_CONN_RELEASE) | X(E_PMM_RA_UPDATE) | X(E_PMM_IMPLICIT_DETACH),</span><br><span style="color: hsl(120, 100%, 40%);">+ .in_event_mask = X(E_PMM_PS_CONN_RELEASE) | X(E_PMM_RA_UPDATE)</span><br><span style="color: hsl(120, 100%, 40%);">+ | X(E_PMM_IMPLICIT_DETACH) | X(E_PMM_USER_INACTIVITY),</span><br><span> .out_state_mask = X(ST_PMM_DETACHED) | X(ST_PMM_IDLE),</span><br><span> .name = "Connected",</span><br><span> .action = st_pmm_connected,</span><br><span>@@ -109,6 +131,7 @@</span><br><span> OSMO_VALUE_STRING(E_PMM_PS_CONN_ESTABLISH),</span><br><span> OSMO_VALUE_STRING(E_PMM_IMPLICIT_DETACH),</span><br><span> OSMO_VALUE_STRING(E_PMM_RA_UPDATE),</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_VALUE_STRING(E_PMM_USER_INACTIVITY),</span><br><span> { 0, NULL }</span><br><span> };</span><br><span> </span><br><span>diff --git a/src/sgsn/sgsn_vty.c b/src/sgsn/sgsn_vty.c</span><br><span>index 9200822..17b64c8 100644</span><br><span>--- a/src/sgsn/sgsn_vty.c</span><br><span>+++ b/src/sgsn/sgsn_vty.c</span><br><span>@@ -104,6 +104,8 @@</span><br><span> { .T=3386, .default_val=GSM0408_T3386_SECS, .desc="Wait for MODIFY PDP CTX ACK timer (s)" },</span><br><span> { .T=3395, .default_val=GSM0408_T3395_SECS, .desc="Wait for DEACT PDP CTX ACK timer (s)" },</span><br><span> { .T=3397, .default_val=GSM0408_T3397_SECS, .desc="Wait for DEACT AA PDP CTX ACK timer (s)" },</span><br><span style="color: hsl(120, 100%, 40%);">+ /* non spec timers */</span><br><span style="color: hsl(120, 100%, 40%);">+ { .T=-3314, .default_val=GSM0408_T3314_SECS, .desc="Iu User inactivity timer. On expiry release Iu connection (s)" },</span><br><span> {}</span><br><span> };</span><br><span> </span><br><span>diff --git a/tests/test_nodes.vty b/tests/test_nodes.vty</span><br><span>index 2ef926a..b9cf91e 100644</span><br><span>--- a/tests/test_nodes.vty</span><br><span>+++ b/tests/test_nodes.vty</span><br><span>@@ -12,6 +12,7 @@</span><br><span> T3386 = 8 s Wait for MODIFY PDP CTX ACK timer (s) (default: 8 s)</span><br><span> T3395 = 8 s Wait for DEACT PDP CTX ACK timer (s) (default: 8 s)</span><br><span> T3397 = 8 s Wait for DEACT AA PDP CTX ACK timer (s) (default: 8 s)</span><br><span style="color: hsl(120, 100%, 40%);">+X3314 = 44 s Iu User inactivity timer. On expiry release Iu connection (s) (default: 44 s)</span><br><span> OsmoSGSN# configure terminal</span><br><span> OsmoSGSN(config)# list</span><br><span> ...</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/15483">change 15483</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/+/15483"/><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: I66c2ac0350cb074aefd9a22c5121acf723f239d3 </div>
<div style="display:none"> Gerrit-Change-Number: 15483 </div>
<div style="display:none"> Gerrit-PatchSet: 10 </div>
<div style="display:none"> Gerrit-Owner: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>