Harald Welte has submitted this change and it was merged. Change subject: trigger acc ramping on state-changed-event reports ......................................................................
trigger acc ramping on state-changed-event reports Trigger ACC ramping not only when an Administrative State Change ACK is received from a BTS, but also when an administrative state change is reported for TRX 0 in a State Changed Event Report. This should allow ACC ramping to work with any BTS which reports an administrative state change to 'unlock' using either of these OML messages. Tested with a sysmobts and a nanobts. The sysmobts only reports TRX locked/unlock changes in Administrative State Change ACKs, not via State Changed Event Reports. The nanobts is known to send both of these OML messages in quick succession, so do not re-trigger ramping if it's already in progress. This is a port of osmo-bsc commit b06c7a253752ecb67fd20cdf0b069688b561af0e Change-Id: I6443635b822b6cd776f6dc8a6ee73ab09e865b04 Related: OS#2591 --- M openbsc/src/libbsc/acc_ramp.c 1 file changed, 10 insertions(+), 2 deletions(-) Approvals: Pau Espin Pedrol: Looks good to me, but someone else must approve Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/openbsc/src/libbsc/acc_ramp.c b/openbsc/src/libbsc/acc_ramp.c index 03ba80b..a866458 100644 --- a/openbsc/src/libbsc/acc_ramp.c +++ b/openbsc/src/libbsc/acc_ramp.c @@ -144,7 +144,8 @@ struct acc_ramp *acc_ramp = handler_data; struct gsm_bts_trx *trx = NULL; - if (signal != S_NM_STATECHG_ADM) + /* Handled signals map to an Administrative State Change ACK, or a State Changed Event Report. */ + if (signal != S_NM_STATECHG_ADM && signal != S_NM_STATECHG_OPER) return 0; if (nsd->obj_class != NM_OC_RADIO_CARRIER) @@ -163,7 +164,14 @@ /* Trigger or abort ACC ramping based on the new 'RF lock' state of this TRX. */ switch (nsd->new_state->administrative) { case NM_STATE_UNLOCKED: - acc_ramp_trigger(acc_ramp); + /* + * Do not re-trigger ACC ramping if ramping is already in progress. + * A BTS might send several "unlock" change events: One in the Administrative + * State Change ACK, and/or another in a State Changed Event Report. + * For instance, the nanobts is known to send both. + */ + if (!osmo_timer_pending(&acc_ramp->step_timer)) + acc_ramp_trigger(acc_ramp); break; case NM_STATE_LOCKED: case NM_STATE_SHUTDOWN: -- To view, visit https://gerrit.osmocom.org/7823 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: merged Gerrit-Change-Id: I6443635b822b6cd776f6dc8a6ee73ab09e865b04 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Stefan Sperling <ssperl...@sysmocom.de> Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: Pau Espin Pedrol <pes...@sysmocom.de>