<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/25626">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">nacc: Introduce helper function nacc_fsm_exp_ctrl_ack()<br><br>Move FSM internal state checks to its own file. Re-use the helper<br>function in the 2 places where same stuff is checked.<br><br>Change-Id: I9ded6e1c80e6cd7bcf6883bc2e853b6dafb33f7c<br>---<br>M src/nacc_fsm.c<br>M src/nacc_fsm.h<br>M src/pdch.cpp<br>M src/tbf.cpp<br>4 files changed, 12 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/26/25626/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/nacc_fsm.c b/src/nacc_fsm.c</span><br><span>index df38927..ba7bbb7 100644</span><br><span>--- a/src/nacc_fsm.c</span><br><span>+++ b/src/nacc_fsm.c</span><br><span>@@ -895,3 +895,10 @@</span><br><span>                 return false;</span><br><span>        return !osmo_cgi_ps_cmp(&ctx->cgi_ps, cgi_ps);</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+bool nacc_fsm_exp_ctrl_ack(const struct nacc_fsm_ctx *ctx, uint32_t fn, uint8_t ts)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  return ctx->fi->state == NACC_ST_WAIT_CELL_CHG_CONTINUE_ACK &&</span><br><span style="color: hsl(120, 100%, 40%);">+         ctx->continue_poll_fn == fn &&</span><br><span style="color: hsl(120, 100%, 40%);">+             ctx->continue_poll_ts == ts;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/nacc_fsm.h b/src/nacc_fsm.h</span><br><span>index 68ebd52..beea0f7 100644</span><br><span>--- a/src/nacc_fsm.h</span><br><span>+++ b/src/nacc_fsm.h</span><br><span>@@ -75,3 +75,5 @@</span><br><span> </span><br><span> bool nacc_fsm_is_waiting_si_resolution(const struct nacc_fsm_ctx *ctx,</span><br><span>                                    const struct osmo_cell_global_id_ps *cgi_ps);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+bool nacc_fsm_exp_ctrl_ack(const struct nacc_fsm_ctx *ctx, uint32_t fn, uint8_t ts);</span><br><span>diff --git a/src/pdch.cpp b/src/pdch.cpp</span><br><span>index 19d57a2..76acbca 100644</span><br><span>--- a/src/pdch.cpp</span><br><span>+++ b/src/pdch.cpp</span><br><span>@@ -401,8 +401,7 @@</span><br><span> </span><br><span>          return;</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (ms->nacc && ms->nacc->fi->state == NACC_ST_WAIT_CELL_CHG_CONTINUE_ACK &&</span><br><span style="color: hsl(0, 100%, 40%);">-            ms->nacc->continue_poll_fn == fn && ms->nacc->continue_poll_ts == ts_no) {</span><br><span style="color: hsl(120, 100%, 40%);">+    if (ms->nacc && nacc_fsm_exp_ctrl_ack(ms->nacc, fn, ts_no)) {</span><br><span>          osmo_fsm_inst_dispatch(ms->nacc->fi, NACC_EV_RX_CELL_CHG_CONTINUE_ACK, NULL);</span><br><span>          /* Don't assume MS is no longer reachable (hence don't free) after this: TS 44.060</span><br><span>            * "When the mobile station receives the PACKET CELL CHANGE ORDER</span><br><span>diff --git a/src/tbf.cpp b/src/tbf.cpp</span><br><span>index 61ab90e..0ea013b 100644</span><br><span>--- a/src/tbf.cpp</span><br><span>+++ b/src/tbf.cpp</span><br><span>@@ -570,8 +570,8 @@</span><br><span>                }</span><br><span>            /* Signal timeout to FSM to reschedule DL assignment */</span><br><span>              osmo_fsm_inst_dispatch(this->dl_ass_fsm.fi, TBF_DL_ASS_EV_ASS_POLL_TIMEOUT, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-   } else if (reason == PDCH_ULC_POLL_CELL_CHG_CONTINUE && m_ms->nacc && m_ms->nacc->fi->state == NACC_ST_WAIT_CELL_CHG_CONTINUE_ACK &&</span><br><span style="color: hsl(0, 100%, 40%);">-                   m_ms->nacc->continue_poll_fn == poll_fn && m_ms->nacc->continue_poll_ts == pdch->ts_no) {</span><br><span style="color: hsl(120, 100%, 40%);">+   } else if (reason == PDCH_ULC_POLL_CELL_CHG_CONTINUE &&</span><br><span style="color: hsl(120, 100%, 40%);">+                  m_ms->nacc && nacc_fsm_exp_ctrl_ack(m_ms->nacc, poll_fn, pdch->ts_no)) {</span><br><span>                 /* Timeout waiting for CTRL ACK acking Pkt Cell Change Continue */</span><br><span>           osmo_fsm_inst_dispatch(m_ms->nacc->fi, NACC_EV_TIMEOUT_CELL_CHG_CONTINUE, NULL);</span><br><span>               return;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/25626">change 25626</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-pcu/+/25626"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I9ded6e1c80e6cd7bcf6883bc2e853b6dafb33f7c </div>
<div style="display:none"> Gerrit-Change-Number: 25626 </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>