aboutsummaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2021-04-12 09:12:22 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2021-04-12 09:12:22 +0200
commit9e6f8c3ad4b43ad46d125a379d9ec327d366991d (patch)
tree3a100c69b68499ac8cb09cccb95eb5e87298b858 /src/common
parent6cf8c691e226410b341fa9ce5ce209fd918b3073 (diff)
Diffstat (limited to 'src/common')
-rw-r--r--src/common/bts.c13
-rw-r--r--src/common/nm_bb_transc_fsm.c7
-rw-r--r--src/common/oml.c4
3 files changed, 23 insertions, 1 deletions
diff --git a/src/common/bts.c b/src/common/bts.c
index 3a64aac3..ea0cdfa7 100644
--- a/src/common/bts.c
+++ b/src/common/bts.c
@@ -414,6 +414,7 @@ int bts_init(struct gsm_bts *bts)
int bts_link_estab(struct gsm_bts *bts)
{
int i, j;
+ bool has_vamos = osmo_bts_has_feature(bts->features, BTS_FEAT_VAMOS);
LOGP(DSUM, LOGL_INFO, "Main link established, sending NM Status.\n");
@@ -431,6 +432,18 @@ int bts_link_estab(struct gsm_bts *bts)
for (i = 0; i < bts->num_trx; i++) {
struct gsm_bts_trx *trx = gsm_bts_trx_num(bts, i);
+ /* For VAMOS shadow TRXs, skip all initial status reports. The existence of shadow TRXes is indicated by
+ * BTS_FEAT_VAMOS. (If osmo-bts sent status reports for shadow TRXes, these would appear as full primary
+ * TRXes to non-Osmocom BSCs.) */
+ if (has_vamos && TRX_IS_SHADOW(trx)) {
+ LOGP(DLGLOBAL, LOGL_ERROR, "Skipping TRX %d\n", trx->nr);
+ printf("Skipping TRX %d\n", trx->nr);
+ continue;
+ } else {
+ LOGP(DLGLOBAL, LOGL_ERROR, "NOT Skipping TRX %d\n", trx->nr);
+ printf("NOT Skipping TRX %d\n", trx->nr);
+ }
+
oml_tx_state_changed(&trx->mo);
oml_tx_state_changed(&trx->bb_transc.mo);
diff --git a/src/common/nm_bb_transc_fsm.c b/src/common/nm_bb_transc_fsm.c
index 936451ff..75349063 100644
--- a/src/common/nm_bb_transc_fsm.c
+++ b/src/common/nm_bb_transc_fsm.c
@@ -60,7 +60,12 @@ static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event
switch (event) {
case NM_EV_SW_ACT:
- oml_mo_tx_sw_act_rep(&bb_transc->mo);
+ /* For VAMOS shadow TRXs, do not send the initial Software Activated Report. The primary TRX's Software
+ * Activated Report implies the shadow TRX. (The main reason is to not confuse non-osmocom BSCs into
+ * thinking a shadow TRX were an independent primary TRX.) */
+ if (!osmo_bts_has_feature(trx->bts->features, BTS_FEAT_VAMOS)
+ || TRX_PRIMARY(trx) == trx)
+ oml_mo_tx_sw_act_rep(&bb_transc->mo);
nm_bb_transc_fsm_state_chg(fi, NM_BBTRANSC_ST_OP_DISABLED_OFFLINE);
for (i = 0; i < TRX_NR_TS; i++) {
struct gsm_bts_trx_ts *ts = &trx->ts[i];
diff --git a/src/common/oml.c b/src/common/oml.c
index f836fd13..9fcb1d72 100644
--- a/src/common/oml.c
+++ b/src/common/oml.c
@@ -406,6 +406,10 @@ int oml_mo_statechg_ack(const struct gsm_abis_mo *mo)
return rc;
/* Emulate behaviour of ipaccess nanobts: Send a 'State Changed Event Report' as well. */
+ LOGP(DLGLOBAL, LOGL_ERROR, "XXX oml_mo_statechg_ack() oml_tx_state_changed(%u %u %u)\n",
+ mo->obj_inst.bts_nr,
+ mo->obj_inst.trx_nr,
+ mo->obj_inst.ts_nr);
return oml_tx_state_changed(mo);
}