<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/22929">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Fix nsei+bvci not updated on rx UL SNDCP data<br><br>msgid2mmctx() was already being called for signalling messages in<br>gsm0408_gprs_rcvmsg_gb() before calling gprs_gb_recv_pdu(), but it was<br>not called in sndcp_llunitdata_ind().<br><br>Let's move msgid2mmctx() inside gprs_gb_recv_pdu() since we want to<br>always update the nsei+bvci, regardless of message containing data or<br>control content.<br><br>This commit fixes the scenario where an MS changes to a new cell (PCU)<br>and then continues transmitting UL data. Prior to this patch, the SGSN<br>kept sending DL content to the old cell (PCU nsei+bvci) instead of the<br>new one even after the MS transmitted Ul content fro mthe new cell.<br><br>Related: SYS#4909<br>Change-Id: I2c14e1d65575f54212924f7c5f0a2f4c1b76ec81<br>---<br>M include/osmocom/sgsn/gprs_gb.h<br>M src/sgsn/gprs_gb.c<br>M src/sgsn/gprs_sndcp.c<br>3 files changed, 5 insertions(+), 5 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/29/22929/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/sgsn/gprs_gb.h b/include/osmocom/sgsn/gprs_gb.h</span><br><span>index c98dd34..9162367 100644</span><br><span>--- a/include/osmocom/sgsn/gprs_gb.h</span><br><span>+++ b/include/osmocom/sgsn/gprs_gb.h</span><br><span>@@ -8,7 +8,7 @@</span><br><span> int gsm0408_gprs_rcvmsg_gb(struct msgb *msg, struct gprs_llc_llme *llme,</span><br><span>                          bool drop_cipherable);</span><br><span> /* Has to be called whenever any PDU (signaling, data, ...) has been received */</span><br><span style="color: hsl(0, 100%, 40%);">-void gprs_gb_recv_pdu(struct sgsn_mm_ctx *mmctx);</span><br><span style="color: hsl(120, 100%, 40%);">+void gprs_gb_recv_pdu(struct sgsn_mm_ctx *mmctx, const struct msgb *msg);</span><br><span> </span><br><span> /* page a MS in its routing area */</span><br><span> int gprs_gb_page_ps_ra(struct sgsn_mm_ctx *mmctx);</span><br><span>diff --git a/src/sgsn/gprs_gb.c b/src/sgsn/gprs_gb.c</span><br><span>index 2585d6d..cddd1b1 100644</span><br><span>--- a/src/sgsn/gprs_gb.c</span><br><span>+++ b/src/sgsn/gprs_gb.c</span><br><span>@@ -38,7 +38,8 @@</span><br><span> #include <osmocom/sgsn/debug.h></span><br><span> </span><br><span> /* Has to be called whenever any PDU (signaling, data, ...) has been received */</span><br><span style="color: hsl(0, 100%, 40%);">-void gprs_gb_recv_pdu(struct sgsn_mm_ctx *mmctx) {</span><br><span style="color: hsl(120, 100%, 40%);">+void gprs_gb_recv_pdu(struct sgsn_mm_ctx *mmctx, const struct msgb *msg) {</span><br><span style="color: hsl(120, 100%, 40%);">+    msgid2mmctx(mmctx, msg);</span><br><span>     if (mmctx->gb.llme)</span><br><span>               osmo_fsm_inst_dispatch(mmctx->gb.mm_state_fsm, E_MM_PDU_RECEPTION, NULL);</span><br><span> }</span><br><span>@@ -56,10 +57,9 @@</span><br><span>       bssgp_parse_cell_id(&ra_id, msgb_bcid(msg));</span><br><span>     mmctx = sgsn_mm_ctx_by_tlli(msgb_tlli(msg), &ra_id);</span><br><span>     if (mmctx) {</span><br><span style="color: hsl(0, 100%, 40%);">-            msgid2mmctx(mmctx, msg);</span><br><span>             rate_ctr_inc(&mmctx->ctrg->ctr[GMM_CTR_PKTS_SIG_IN]);</span><br><span>              mmctx->gb.llme = llme;</span><br><span style="color: hsl(0, 100%, 40%);">-               gprs_gb_recv_pdu(mmctx);</span><br><span style="color: hsl(120, 100%, 40%);">+              gprs_gb_recv_pdu(mmctx, msg);</span><br><span>        }</span><br><span> </span><br><span>        /* MMCTX can be NULL */</span><br><span>diff --git a/src/sgsn/gprs_sndcp.c b/src/sgsn/gprs_sndcp.c</span><br><span>index b237bf9..6692f1a 100644</span><br><span>--- a/src/sgsn/gprs_sndcp.c</span><br><span>+++ b/src/sgsn/gprs_sndcp.c</span><br><span>@@ -808,7 +808,7 @@</span><br><span>                               lle, lle->llme->tlli, lle->sapi, sch->nsapi);</span><br><span>            return -EIO;</span><br><span>         }</span><br><span style="color: hsl(0, 100%, 40%);">-       gprs_gb_recv_pdu(mmctx);</span><br><span style="color: hsl(120, 100%, 40%);">+      gprs_gb_recv_pdu(mmctx, msg);</span><br><span> </span><br><span>    if (scomph) {</span><br><span>                sne->defrag.pcomp = scomph->pcomp;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-sgsn/+/22929">change 22929</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/+/22929"/><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: I2c14e1d65575f54212924f7c5f0a2f4c1b76ec81 </div>
<div style="display:none"> Gerrit-Change-Number: 22929 </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>