<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/10003">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sgsn: Fix T3395 firing forever<br><br>field pdp->num_T_exp was being reset to 0 every time<br>pdpctx_timer_start() was called from gsm48_tx_gsm_deact_pdp_req().<br><br>Take the chance to test max amount of retrans to 4 as detailed in specs.<br><br>Change-Id: Iacce3c66f61578ebee37abaa287f7e183f985c1c<br>---<br>M src/gprs/gprs_gmm.c<br>1 file changed, 13 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gprs/gprs_gmm.c b/src/gprs/gprs_gmm.c</span><br><span>index ad56c60..91f769d 100644</span><br><span>--- a/src/gprs/gprs_gmm.c</span><br><span>+++ b/src/gprs/gprs_gmm.c</span><br><span>@@ -2170,6 +2170,15 @@</span><br><span> </span><br><span> static void pdpctx_timer_cb(void *_mm);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pdpctx_timer_rearm(struct sgsn_pdp_ctx *pdp, unsigned int T, unsigned int seconds)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    if (osmo_timer_pending(&pdp->timer))</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGPDPCTXP(LOGL_ERROR, pdp, "Scheduling PDP timer %u while old "</span><br><span style="color: hsl(120, 100%, 40%);">+                    "timer %u pending\n", T, pdp->T);</span><br><span style="color: hsl(120, 100%, 40%);">+        osmo_timer_schedule(&pdp->timer, seconds, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void pdpctx_timer_start(struct sgsn_pdp_ctx *pdp, unsigned int T,</span><br><span>                                unsigned int seconds)</span><br><span> {</span><br><span>@@ -2179,9 +2188,8 @@</span><br><span>   pdp->T = T;</span><br><span>       pdp->num_T_exp = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      /* FIXME: we should do this only once ? */</span><br><span>   osmo_timer_setup(&pdp->timer, pdpctx_timer_cb, pdp);</span><br><span style="color: hsl(0, 100%, 40%);">-     osmo_timer_schedule(&pdp->timer, seconds, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+  pdpctx_timer_rearm(pdp, pdp->T, seconds);</span><br><span> }</span><br><span> </span><br><span> static void pdpctx_timer_stop(struct sgsn_pdp_ctx *pdp, unsigned int T)</span><br><span>@@ -2724,7 +2732,7 @@</span><br><span> </span><br><span>         switch (pdp->T) {</span><br><span>         case 3395:      /* waiting for PDP CTX DEACT ACK */</span><br><span style="color: hsl(0, 100%, 40%);">-             if (pdp->num_T_exp >= 4) {</span><br><span style="color: hsl(120, 100%, 40%);">+              if (pdp->num_T_exp >= 5) {</span><br><span>                     LOGPDPCTXP(LOGL_NOTICE, pdp, "T3395 expired >= 5 times\n");</span><br><span>                     pdp->state = PDP_STATE_INACTIVE;</span><br><span>                  if (pdp->ggsn)</span><br><span>@@ -2733,7 +2741,8 @@</span><br><span>                            sgsn_pdp_ctx_free(pdp);</span><br><span>                      break;</span><br><span>               }</span><br><span style="color: hsl(0, 100%, 40%);">-               gsm48_tx_gsm_deact_pdp_req(pdp, GSM_CAUSE_NET_FAIL, true);</span><br><span style="color: hsl(120, 100%, 40%);">+            _gsm48_tx_gsm_deact_pdp_req(pdp->mm, pdp->ti, GSM_CAUSE_NET_FAIL, true);</span><br><span style="color: hsl(120, 100%, 40%);">+                pdpctx_timer_rearm(pdp, 3395, sgsn->cfg.timers.T3395);</span><br><span>            break;</span><br><span>       default:</span><br><span>             LOGPDPCTXP(LOGL_ERROR, pdp, "timer expired in unknown mode %u\n",</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/10003">change 10003</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/10003"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: Iacce3c66f61578ebee37abaa287f7e183f985c1c </div>
<div style="display:none"> Gerrit-Change-Number: 10003 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-CC: lynxis lazus <lynxis@fe80.eu> </div>