<p>laforge <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15700">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bts: Fix race condition in f_dyn_ipa_pdch_(de)act<br><br>Test BTS_Tests.TC_dyn_osmo_pdch_act_deact was sporadically failing due<br>to receiving IND_INFO on the PCU port with pdch_mask related TS bit set<br>to 0 after sending a PDCH ACT. That happened due to a race condition<br>because PCU send IND_INFO periodically. As a result, it can happen that<br>BTS sends an IND_INFO after PCU.clear was called and before the PDCH ACT<br>is handled.<br><br>Commit 446e07bc77ba2a1d08673cfeda6d4b6a72f49a77 already did same fix for<br>f_dyn_ipa_pdch_(de)act() family, but didn't change this one.<br><br>Change-Id: I323852632341c19837bebfcf2f00d404151367a7<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 18 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn</span><br><span>index 2c11ca2..f2861d1 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -4899,13 +4899,21 @@</span><br><span>        PCU.clear;</span><br><span>   f_rsl_chan_act(g_pars.chan_mode);</span><br><span>    /* expect INFO_IND on PCU interface listing TS as PDCH */</span><br><span style="color: hsl(120, 100%, 40%);">+     timer T_wait := 2.0;</span><br><span style="color: hsl(120, 100%, 40%);">+  T_wait.start;</span><br><span>        alt {</span><br><span>        [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {</span><br><span>               if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '1'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCUIF_INFO_IND PDCH_MASK not '1' after PDCH ACT");</span><br><span style="color: hsl(120, 100%, 40%);">+                      log("PCUIF_INFO_IND PDCH_MASK not yet '1' after PDCH ACT on TS", g_chan_nr.tn,</span><br><span style="color: hsl(120, 100%, 40%);">+                          " mask:", sd.data.u.info_ind.trx[trx_nr].pdch_mask);</span><br><span style="color: hsl(120, 100%, 40%);">+                    repeat;</span><br><span>              }</span><br><span>            }</span><br><span>    [] PCU.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+    [] T_wait.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+           Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,</span><br><span style="color: hsl(120, 100%, 40%);">+                    log2str("Timeout waiting for PCUIF_INFO_IND PDCH_MASK to be '1' on TS", g_chan_nr.tn));</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>    }</span><br><span>    /* try to activate this PDCH from the PCU point of view */</span><br><span>   PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_ACT_REQ(bts_nr, trx_nr, g_chan_nr.tn)));</span><br><span>@@ -4919,13 +4927,21 @@</span><br><span>         PCU.clear;</span><br><span>   RSL.send(ts_RSL_RF_CHAN_REL(g_chan_nr));</span><br><span>     /* expect BTS to ask PCU to deactivate the channel */</span><br><span style="color: hsl(120, 100%, 40%);">+ timer T_wait := 2.0;</span><br><span style="color: hsl(120, 100%, 40%);">+  T_wait.start;</span><br><span>        alt {</span><br><span>        [] PCU.receive(t_SD_PCUIF(pcu_conn_id, tr_PCUIF_INFO_IND(bts_nr, ?))) -> value sd {</span><br><span>               if (substr(sd.data.u.info_ind.trx[trx_nr].pdch_mask, g_chan_nr.tn, 1) != '0'B) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "PCUIF_INFO_IND PDCH_MASK not '0' after PDCH DEACT");</span><br><span style="color: hsl(120, 100%, 40%);">+                    log("PCUIF_INFO_IND PDCH_MASK not yet '0' after PDCH DEACT on TS", g_chan_nr.tn,</span><br><span style="color: hsl(120, 100%, 40%);">+                        " mask:", sd.data.u.info_ind.trx[trx_nr].pdch_mask);</span><br><span style="color: hsl(120, 100%, 40%);">+                    repeat;</span><br><span>              }</span><br><span>            }</span><br><span>    [] PCU.receive { repeat; }</span><br><span style="color: hsl(120, 100%, 40%);">+    [] T_wait.timeout {</span><br><span style="color: hsl(120, 100%, 40%);">+           Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,</span><br><span style="color: hsl(120, 100%, 40%);">+                    log2str("Timeout waiting for PCUIF_INFO_IND PDCH_MASK to be '0' on TS", g_chan_nr.tn));</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>    }</span><br><span>    /* Emulate PCU asking BTS to deactivate PDCH */</span><br><span>      PCU.send(t_SD_PCUIF(pcu_conn_id, ts_PCUIF_DEACT_REQ(bts_nr, trx_nr, g_chan_nr.tn)));</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15700">change 15700</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-ttcn3-hacks/+/15700"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I323852632341c19837bebfcf2f00d404151367a7 </div>
<div style="display:none"> Gerrit-Change-Number: 15700 </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-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>