<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>