<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>229970</buildingDurationMillis><executingTimeMillis>229970</executingTimeMillis><executorUtilization>1.0</executorUtilization><queuingDurationMillis>6627</queuingDurationMillis><queuingTimeMillis>6627</queuingTimeMillis><subTaskCount>0</subTaskCount><totalDurationMillis>236597</totalDurationMillis><waitingDurationMillis>6625</waitingDurationMillis><waitingTimeMillis>6625</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/11397/artifact</artifactsUrl><changesUrl>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/changes</changesUrl><displayUrl>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/11397/</displayUrl><testsUrl>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/11397/testReport</testsUrl></action><building>false</building><displayName>#11397</displayName><duration>229970</duration><estimatedDuration>196510</estimatedDuration><fullDisplayName>master-osmo-bts #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75175</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/11397/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><description></description><fullName>Vadim Yanitskiy</fullName><id>fixeria</id></culprit><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>101771</buildingDurationMillis><executingTimeMillis>101771</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>101771</duration><estimatedDuration>104050</estimatedDuration><fullDisplayName>master-osmo-bts » lc15,master,1,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75176</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11397/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>68992</buildingDurationMillis><executingTimeMillis>68992</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>68992</duration><estimatedDuration>64544</estimatedDuration><fullDisplayName>master-osmo-bts » lc15,origin/nrw/litecell15,0,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75182</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=origin%2Fnrw%2Flitecell15,WITH_MANUALS=0,a4=default,label=osmocom-master/11397/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>68996</buildingDurationMillis><executingTimeMillis>68996</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>68996</duration><estimatedDuration>66372</estimatedDuration><fullDisplayName>master-osmo-bts » lc15,v2017.01,0,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75177</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=v2017.01,WITH_MANUALS=0,a4=default,label=osmocom-master/11397/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>120774</buildingDurationMillis><executingTimeMillis>120774</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>120774</duration><estimatedDuration>107387</estimatedDuration><fullDisplayName>master-osmo-bts » oc2g,master,1,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75178</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=oc2g,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11397/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>78837</buildableDurationMillis><buildableTimeMillis>78837</buildableTimeMillis><buildingDurationMillis>62538</buildingDurationMillis><executingTimeMillis>62538</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>44</waitingDurationMillis><waitingTimeMillis>44</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>62538</duration><estimatedDuration>72131</estimatedDuration><fullDisplayName>master-osmo-bts » oc2g,origin/nrw/oc2g,0,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75188</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=oc2g,FIRMWARE_VERSION=origin%2Fnrw%2Foc2g,WITH_MANUALS=0,a4=default,label=osmocom-master/11397/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>83881</buildableDurationMillis><buildableTimeMillis>83881</buildableTimeMillis><buildingDurationMillis>102483</buildingDurationMillis><executingTimeMillis>102483</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>102483</duration><estimatedDuration>105874</estimatedDuration><fullDisplayName>master-osmo-bts » oct,master,1,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75190</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=oct,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11397/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>101746</buildingDurationMillis><executingTimeMillis>101746</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>101746</duration><estimatedDuration>104658</estimatedDuration><fullDisplayName>master-osmo-bts » oct+trx,master,1,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75184</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=oct+trx,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11397/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>79135</buildableDurationMillis><buildableTimeMillis>79135</buildableTimeMillis><buildingDurationMillis>60797</buildingDurationMillis><executingTimeMillis>60797</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>60797</duration><estimatedDuration>66970</estimatedDuration><fullDisplayName>master-osmo-bts » sysmo,femtobts_v2.7,0,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75189</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=femtobts_v2.7,WITH_MANUALS=0,a4=default,label=osmocom-master/11397/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>110558</buildingDurationMillis><executingTimeMillis>110558</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>110558</duration><estimatedDuration>102790</estimatedDuration><fullDisplayName>master-osmo-bts » sysmo,master,1,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75183</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11397/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>74619</buildingDurationMillis><executingTimeMillis>74619</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>74619</duration><estimatedDuration>66733</estimatedDuration><fullDisplayName>master-osmo-bts » sysmo,superfemto_v2.4,0,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75179</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v2.4,WITH_MANUALS=0,a4=default,label=osmocom-master/11397/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>74559</buildingDurationMillis><executingTimeMillis>74559</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>74559</duration><estimatedDuration>66683</estimatedDuration><fullDisplayName>master-osmo-bts » sysmo,superfemto_v3.0.1pre,0,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75180</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v3.0.1pre,WITH_MANUALS=0,a4=default,label=osmocom-master/11397/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>74628</buildingDurationMillis><executingTimeMillis>74628</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>74628</duration><estimatedDuration>65511</estimatedDuration><fullDisplayName>master-osmo-bts » sysmo,superfemto_v3.1,0,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75181</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v3.1,WITH_MANUALS=0,a4=default,label=osmocom-master/11397/</url><builtOn>build5-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>72241</buildableDurationMillis><buildableTimeMillis>72241</buildableTimeMillis><buildingDurationMillis>61503</buildingDurationMillis><executingTimeMillis>61503</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>61503</duration><estimatedDuration>63871</estimatedDuration><fullDisplayName>master-osmo-bts » sysmo,superfemto_v5.1,0,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75185</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v5.1,WITH_MANUALS=0,a4=default,label=osmocom-master/11397/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>223404</buildingDurationMillis><executingTimeMillis>223404</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>223404</duration><estimatedDuration>192746</estimatedDuration><fullDisplayName>master-osmo-bts » trx,master,0,default,raspbian #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75187</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=trx,FIRMWARE_VERSION=master,WITH_MANUALS=0,a4=default,label=raspbian/11397/</url><builtOn>lx2-raspbian12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run><run><action _class='hudson.matrix.MatrixChildParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "master-osmo-bts" build number 11,397</shortDescription><upstreamBuild>11397</upstreamBuild><upstreamProject>master-osmo-bts</upstreamProject><upstreamUrl>job/master-osmo-bts/</upstreamUrl></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>72689</buildableDurationMillis><buildableTimeMillis>72689</buildableTimeMillis><buildingDurationMillis>97648</buildingDurationMillis><executingTimeMillis>97648</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>11397</buildNumber><marked><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></marked><revision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>11003</buildNumber><marked><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><branch><SHA1>7db79cc39a265a6838206df836d1bee28be1acee</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>7614</buildNumber><marked><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><branch><SHA1>73773447715c57075ad5acb96a5346ff23d7e91f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><branch><SHA1>4c6324213ac87f9979df7e6d0f596f175ddb27f6</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-bts</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#11397</displayName><duration>97648</duration><estimatedDuration>102183</estimatedDuration><fullDisplayName>master-osmo-bts » trx,master,1,default,osmocom-master #11397</fullDisplayName><id>11397</id><inProgress>false</inProgress><keepLog>false</keepLog><number>11397</number><queueId>75186</queueId><result>SUCCESS</result><timestamp>1774862887007</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-bts/BTS_MODEL=trx,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11397/</url><builtOn>build4-deb12build-ansible</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_xcch.c</affectedPath><commitId>796965d72b96ca6a9e40848a8b3397fa01d9883d</commitId><timestamp>1774606183000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment

Change-Id: Ibf35c468310a690fd873cf968bb2c44b493ca5ea
</comment><date>2026-03-27 17:09:43 +0700</date><id>796965d72b96ca6a9e40848a8b3397fa01d9883d</id><msg>osmo-bts-trx: rx_data_fn(): fix copy-paste in comment</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_xcch.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/osmo-bts-trx/sched_lchan_rach.c</affectedPath><commitId>a158425c0c586dc7a80d2c076194869a64531e24</commitId><timestamp>1774606334000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back

Condition `synch_seq != RACH_SYNCH_SEQ_TS0` is unlikely to be true,
given that no other synch. sequences are defined by 3GPP TS 45.002.
Even if this happens for whatever reason (e.g. a bug), assigning
`synch_seq` to `RACH_SYNCH_SEQ_TS0` is not needed, as `synch_seq`
is never read after the switch statement.  The logging message is
not useful either, since we already print the synch. seq. above.

Change-Id: I4cdc03dc6631ca17d13a3067ad03020e3e97eab1
</comment><date>2026-03-27 17:12:14 +0700</date><id>a158425c0c586dc7a80d2c076194869a64531e24</id><msg>osmo-bts-trx: rx_rach_fn(): remove redundant fall-back</msg><path><editType>edit</editType><file>src/osmo-bts-trx/sched_lchan_rach.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/common/tx_power.c</affectedPath><affectedPath>include/osmo-bts/tx_power.h</affectedPath><affectedPath>src/common/bts_shutdown_fsm.c</affectedPath><commitId>4c6324213ac87f9979df7e6d0f596f175ddb27f6</commitId><timestamp>1774610689000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED

With multiple TRXes ramping down in lockstep, both their final
ramp-timer callbacks fire back-to-back in the same event loop pass,
setting p_total_cur_mdBm to the target value for both before any async
hardware acknowledgement arrives.  When the first SETPOWER ack returns
and fires ramp_down_compl_cb() for TRX0, the remaining-TRX check in
st_wait_ramp_down_compl() inspects p_total_cur_mdBm for TRX1 and finds
it already at the target - concluding that all TRXes are done.  The FSM
then transitions to WAIT_TRX_CLOSED, and the second ack (for TRX1)
fires ramp_down_compl_cb() into the wrong state, producing:

  BTS_SHUTDOWN(...){WAIT_TRX_CLOSED}: Event BTS_SHUTDOWN_EV_TRX_RAMP_COMPL not permitted

The root cause is that p_total_cur_mdBm is a *requested* value set in
the timer callback, not a confirmed one.  The hardware confirmation
arrives asynchronously via power_trx_change_compl() -&gt;
power_ramp_do_step(), which is also where compl_cb() is invoked.

Fix by adding a 'complete' flag to trx_power_params.ramp that is:

* cleared when _power_ramp_start() begins a new ramp, and
* set just before compl_cb() is called in power_ramp_do_step()

The shutdown FSM remaining-TRX count then checks !ramp.complete instead of
comparing p_total_cur_mdBm against the target, correctly reflecting which
TRXes have actually received hardware confirmation of ramp completion.

Change-Id: Ia71393e871187d6b44b7f520eb421bab354aafd1
</comment><date>2026-03-27 18:24:49 +0700</date><id>4c6324213ac87f9979df7e6d0f596f175ddb27f6</id><msg>bts_shutdown_fsm: fix spurious RAMP_COMPL events in WAIT_TRX_CLOSED</msg><path><editType>edit</editType><file>include/osmo-bts/tx_power.h</file></path><path><editType>edit</editType><file>src/common/bts_shutdown_fsm.c</file></path><path><editType>edit</editType><file>src/common/tx_power.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit></run></matrixBuild>