<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/25680">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  neels: Looks good to me, approved
  fixeria: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trx_provision_fsm: Fix shutdown while POWERON in transit<br><br>EV_CLOSE in state OPEN_WAIT_POWERON_CNF was not permitted, hence TRX0<br>was finally moved and kept to state OPEN_POWERON while other TRX were<br>moved OPEN_POWERON->OPEN_WAIT_POWER_CNF:<br><br>"""<br>20211004090637640 DL1C <0006> trx_provision_fsm.c:86 TRX_PROV(phy0-0)[0x55fddfb1fda0]{OPEN_POWEROFF}: Received Event TRX_PROV_EV_NOMTXPOWER_CNF<br>20211004090637640 DL1C <0006> trx_provision_fsm.c:498 TRX_PROV(phy0-0)[0x55fddfb1fda0]{OPEN_POWEROFF}: state_chg to OPEN_WAIT_POWERON_CNF<br>20211004090637640 DTRX <000b> trx_if.c:256 phy0.0: Enqueuing TRX control command 'CMD POWERON'<br>...<br>20211004090637641 DABIS <000d> abis.c:397 E1L(0) Signalling link down<br>...<br>20211004090637642 DOML <0001> bts_shutdown_fsm.c:74 BTS_SHUTDOWN(bts0)[0x55fddfb0b4e0]{NONE}: state_chg to WAIT_TRX_CLOSED<br>...<br>20211004090637642 DL1C <0006> l1_if.c:191 TRX_PROV(phy0-3)[0x55fddfb238b0]{OPEN_POWERON}: Received Event TRX_PROV_EV_CLOSE<br>20211004090637642 DL1C <0006> trx_provision_fsm.c:606 TRX_PROV(phy0-3)[0x55fddfb238b0]{OPEN_POWERON}: state_chg to OPEN_WAIT_POWEROFF_CNF<br>20211004090637642 DOML <0001> l1_if.c:194 NM_RCARRIER_OP(bts0-trx3)[0x55fddfb2ab20]{DISABLED_OFFLINE}: Received Event DISABLE<br>20211004090637642 DOML <0001> l1_if.c:195 NM_BBTRANSC_OP(bts0-trx3)[0x55fddfb2ae00]{DISABLED_OFFLINE}: Received Event DISABLE<br>20211004090637642 DL1C <0006> l1_if.c:191 TRX_PROV(phy0-2)[0x55fddfb22500]{OPEN_POWERON}: Received Event TRX_PROV_EV_CLOSE<br>20211004090637642 DL1C <0006> trx_provision_fsm.c:606 TRX_PROV(phy0-2)[0x55fddfb22500]{OPEN_POWERON}: state_chg to OPEN_WAIT_POWEROFF_CNF<br>20211004090637642 DOML <0001> l1_if.c:194 NM_RCARRIER_OP(bts0-trx2)[0x55fddfb27410]{DISABLED_OFFLINE}: Received Event DISABLE<br>20211004090637642 DOML <0001> l1_if.c:195 NM_BBTRANSC_OP(bts0-trx2)[0x55fddfb27660]{DISABLED_OFFLINE}: Received Event DISABLE<br>20211004090637642 DL1C <0006> l1_if.c:191 TRX_PROV(phy0-1)[0x55fddfb21150]{OPEN_POWERON}: Received Event TRX_PROV_EV_CLOSE<br>20211004090637642 DL1C <0006> trx_provision_fsm.c:606 TRX_PROV(phy0-1)[0x55fddfb21150]{OPEN_POWERON}: state_chg to OPEN_WAIT_POWEROFF_CNF<br>20211004090637642 DOML <0001> l1_if.c:194 NM_RCARRIER_OP(bts0-trx1)[0x55fddfb23b50]{DISABLED_OFFLINE}: Received Event DISABLE<br>20211004090637642 DOML <0001> l1_if.c:195 NM_BBTRANSC_OP(bts0-trx1)[0x55fddfb23e60]{DISABLED_OFFLINE}: Received Event DISABLE<br>20211004090637642 DL1C <0006> l1_if.c:191 TRX_PROV(phy0-0)[0x55fddfb1fda0]{OPEN_WAIT_POWERON_CNF}: Received Event TRX_PROV_EV_CLOSE<br>20211004090637642 DL1C <0006> l1_if.c:191 TRX_PROV(phy0-0)[0x55fddfb1fda0]{OPEN_WAIT_POWERON_CNF}: Event TRX_PROV_EV_CLOSE not permitted<br>20211004090637642 DOML <0001> l1_if.c:194 NM_RCARRIER_OP(bts0-trx0)[0x55fddfb0bb70]{DISABLED_OFFLINE}: Received Event DISABLE<br>20211004090637642 DOML <0001> l1_if.c:195 NM_BBTRANSC_OP(bts0-trx0)[0x55fddfb0be50]{DISABLED_OFFLINE}: Received Event DISABLE<br>20211004090637642 DTRX <000b> trx_if.c:672 phy0.0: Response message: 'RSP POWERON 0'<br>20211004090637642 DL1C <0006> trx_provision_fsm.c:56 TRX_PROV(phy0-0)[0x55fddfb1fda0]{OPEN_WAIT_POWERON_CNF}: Received Event TRX_PROV_EV_POWERON_CNF<br>"""<br><br>This left the BTS in an unexpected broken state and TTCN3 tests after<br>this race condition failed.<br><br>Change-Id: Ic4831201a5be1bc9aff757a9a061c637d98582de<br>---<br>M src/osmo-bts-trx/trx_provision_fsm.c<br>1 file changed, 11 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bts-trx/trx_provision_fsm.c b/src/osmo-bts-trx/trx_provision_fsm.c</span><br><span>index 3d7eebf..273b491 100644</span><br><span>--- a/src/osmo-bts-trx/trx_provision_fsm.c</span><br><span>+++ b/src/osmo-bts-trx/trx_provision_fsm.c</span><br><span>@@ -547,6 +547,14 @@</span><br><span>     case TRX_PROV_EV_CFG_TS:</span><br><span>             update_ts_data(l1h, (struct trx_prov_ev_cfg_ts_data*)data);</span><br><span>          break;</span><br><span style="color: hsl(120, 100%, 40%);">+        case TRX_PROV_EV_CLOSE:</span><br><span style="color: hsl(120, 100%, 40%);">+               /* power off transceiver, if not already */</span><br><span style="color: hsl(120, 100%, 40%);">+           if (pinst->num == 0 && !plink->u.osmotrx.poweroff_sent) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       trx_if_cmd_poweroff(l1h, l1if_poweronoff_cb);</span><br><span style="color: hsl(120, 100%, 40%);">+                 plink->u.osmotrx.poweroff_sent = true;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             trx_prov_fsm_state_chg(fi, TRX_PROV_ST_OPEN_WAIT_POWEROFF_CNF);</span><br><span style="color: hsl(120, 100%, 40%);">+               break;</span><br><span>       default:</span><br><span>             OSMO_ASSERT(0);</span><br><span>      }</span><br><span>@@ -658,10 +666,12 @@</span><br><span>    },</span><br><span>   [TRX_PROV_ST_OPEN_WAIT_POWERON_CNF] = {</span><br><span>              .in_event_mask =</span><br><span style="color: hsl(120, 100%, 40%);">+                      X(TRX_PROV_EV_CLOSE) |</span><br><span>                       X(TRX_PROV_EV_POWERON_CNF) |</span><br><span>                         X(TRX_PROV_EV_CFG_TS),</span><br><span>               .out_state_mask =</span><br><span style="color: hsl(0, 100%, 40%);">-                       X(TRX_PROV_ST_OPEN_POWERON),</span><br><span style="color: hsl(120, 100%, 40%);">+                  X(TRX_PROV_ST_OPEN_POWERON) |</span><br><span style="color: hsl(120, 100%, 40%);">+                 X(TRX_PROV_ST_OPEN_WAIT_POWEROFF_CNF),</span><br><span>               .name = "OPEN_WAIT_POWERON_CNF",</span><br><span>           .onenter = st_open_wait_power_cnf_on_enter,</span><br><span>          .action = st_open_wait_power_cnf,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/25680">change 25680</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-bts/+/25680"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ic4831201a5be1bc9aff757a9a061c637d98582de </div>
<div style="display:none"> Gerrit-Change-Number: 25680 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </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: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>