[MERGED] osmo-bts[master]: Support removing SI13 from PCU

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

Harald Welte gerrit-no-reply at lists.osmocom.org
Sat Sep 2 19:42:50 UTC 2017


Harald Welte has submitted this change and it was merged.

Change subject: Support removing SI13 from PCU
......................................................................


Support removing SI13 from PCU

If SI13 becomes unavailable in runtime than send 0-length message with
BCCH SAPI to PCU to indicate that SI13 have to be removed.

Change-Id: I72aef8bd98f21c4b5ea6eed21fc56b30d85bfc1b
Related: OS#2400
---
M include/osmo-bts/pcu_if.h
M src/common/pcu_sock.c
M src/common/rsl.c
3 files changed, 9 insertions(+), 7 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/include/osmo-bts/pcu_if.h b/include/osmo-bts/pcu_if.h
index ba3873e..4377833 100644
--- a/include/osmo-bts/pcu_if.h
+++ b/include/osmo-bts/pcu_if.h
@@ -6,7 +6,7 @@
 extern int pcu_direct;
 
 int pcu_tx_info_ind(void);
-int pcu_tx_si13(const struct gsm_bts *bts);
+int pcu_tx_si13(const struct gsm_bts *bts, bool enable);
 int pcu_tx_rts_req(struct gsm_bts_trx_ts *ts, uint8_t is_ptcch, uint32_t fn,
 	uint16_t arfcn, uint8_t block_nr);
 int pcu_tx_data_ind(struct gsm_bts_trx_ts *ts, uint8_t is_ptcch, uint32_t fn,
diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c
index 0a9ba2d..e5bcf57 100644
--- a/src/common/pcu_sock.c
+++ b/src/common/pcu_sock.c
@@ -535,7 +535,7 @@
 	return rc;
 }
 
-int pcu_tx_si13(const struct gsm_bts *bts)
+int pcu_tx_si13(const struct gsm_bts *bts, bool enable)
 {
 	/* the SI is per-BTS so it doesn't matter which TRX we use */
 	struct gsm_bts_trx *trx = gsm_bts_trx_num(bts, 0);
@@ -543,7 +543,7 @@
 	/* The low-level data like FN, ARFCN etc will be ignored but we have to set lqual high enough to bypass
 	   the check at lower levels */
 	int rc = pcu_tx_data_ind(&trx->ts[0], PCU_IF_SAPI_BCCH, 0, 0, 0, GSM_BTS_SI(bts, SYSINFO_TYPE_13),
-				 GSM_MACBLOCK_LEN, 0, 0, 0, INT16_MAX);
+				 enable ? GSM_MACBLOCK_LEN : 0, 0, 0, 0, INT16_MAX);
 	if (rc < 0)
 		LOGP(DPCU, LOGL_NOTICE, "Failed to send SI13 to PCU: %d\n", rc);
 
@@ -561,9 +561,9 @@
 		osmo_strlcpy(bts->pcu_version, txt->text, MAX_VERSION_LENGTH);
 
 		if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_13))
-			return pcu_tx_si13(bts);
-		else
-			LOGP(DPCU, LOGL_INFO, "SI13 is not available on PCU connection\n");
+			return pcu_tx_si13(bts, true);
+
+		LOGP(DPCU, LOGL_INFO, "SI13 is not available on PCU connection\n");
 		break;
 	case PCU_OML_ALERT:
 		osmo_signal_dispatch(SS_FAIL, OSMO_EVT_EXT_ALARM, txt->text);
diff --git a/src/common/rsl.c b/src/common/rsl.c
index 69ecf2e..28dc2d0 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -308,7 +308,7 @@
 		}
 
 		if (SYSINFO_TYPE_13 == osmo_si)
-			pcu_tx_si13(trx->bts);
+			pcu_tx_si13(trx->bts, true);
 
 		if (SYSINFO_TYPE_2quater == osmo_si) {
 			si2q = (struct gsm48_system_information_type_2quater *) TLVP_VAL(&tp, RSL_IE_FULL_BCCH_INFO);
@@ -353,6 +353,8 @@
 		bts->si_valid &= ~(1 << osmo_si);
 		LOGP(DRSL, LOGL_INFO, " RX RSL Disabling BCCH INFO (SI%s)\n",
 			get_value_string(osmo_sitype_strs, osmo_si));
+		if (SYSINFO_TYPE_13 == osmo_si)
+			pcu_tx_si13(trx->bts, false);
 	}
 	osmo_signal_dispatch(SS_GLOBAL, S_NEW_SYSINFO, bts);
 

-- 
To view, visit https://gerrit.osmocom.org/3762
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I72aef8bd98f21c4b5ea6eed21fc56b30d85bfc1b
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list