[PATCH] osmo-bsc[master]: trigger acc ramping on state-changed-event reports

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Stefan Sperling gerrit-no-reply at lists.osmocom.org
Wed Apr 11 18:57:44 UTC 2018


Review at  https://gerrit.osmocom.org/7770

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 nanobts.
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.

Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176
Related: OS#2591
---
M src/libbsc/acc_ramp.c
1 file changed, 10 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/70/7770/1

diff --git a/src/libbsc/acc_ramp.c b/src/libbsc/acc_ramp.c
index 54626ad..9e66f31 100644
--- a/src/libbsc/acc_ramp.c
+++ b/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/7770
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I097a113a3a63de02bcb8277020beb59cf485b176
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Owner: Stefan Sperling <ssperling at sysmocom.de>



More information about the gerrit-log mailing list