<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/25473">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Allow setting administrative state through oml_mo_state_chg()<br><br>This way it can be changed together with operative/availability state,<br>and changes announced to the BSC if present.<br><br>This commit presents no real change in osmo-bts behavior, since the only<br>place where adm_state is passed different than -1 is in<br>st_op_disabled_notinstalled_on_enter(), which is actually never called<br>(yet) since it's the initial state and no other states transition later<br>to it.<br><br>However, this will change in the future once we support re-connecting to<br>a (possibly different) BSC, which means objects will need to be moved to<br>that state to restart the whole OML install procedure on the new BSC.<br><br>Change-Id: Ifdc6a1dfb673c0ab915ddf2a9d372928f4f86b4c<br>---<br>M include/osmo-bts/oml.h<br>M src/common/nm_bb_transc_fsm.c<br>M src/common/nm_bts_fsm.c<br>M src/common/nm_bts_sm_fsm.c<br>M src/common/nm_channel_fsm.c<br>M src/common/nm_radio_carrier_fsm.c<br>M src/common/oml.c<br>M src/osmo-bts-lc15/oml.c<br>M src/osmo-bts-oc2g/oml.c<br>M src/osmo-bts-octphy/l1_oml.c<br>M src/osmo-bts-omldummy/bts_model.c<br>M src/osmo-bts-sysmo/oml.c<br>M src/osmo-bts-trx/l1_if.c<br>M src/osmo-bts-virtual/bts_model.c<br>14 files changed, 47 insertions(+), 38 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmo-bts/oml.h b/include/osmo-bts/oml.h</span><br><span>index 27afc53..42284f9 100644</span><br><span>--- a/include/osmo-bts/oml.h</span><br><span>+++ b/include/osmo-bts/oml.h</span><br><span>@@ -47,7 +47,7 @@</span><br><span> int oml_mo_statechg_nack(const struct gsm_abis_mo *mo, uint8_t nack_cause);</span><br><span> </span><br><span> /* Change the state and send STATE CHG REP */</span><br><span style="color: hsl(0, 100%, 40%);">-int oml_mo_state_chg(struct gsm_abis_mo *mo, int op_state, int avail_state);</span><br><span style="color: hsl(120, 100%, 40%);">+int oml_mo_state_chg(struct gsm_abis_mo *mo, int op_state, int avail_state, int adm_state);</span><br><span> </span><br><span> /* First initialization of MO, does _not_ generate state changes */</span><br><span> void oml_mo_state_init(struct gsm_abis_mo *mo, int op_state, int avail_state);</span><br><span>diff --git a/src/common/nm_bb_transc_fsm.c b/src/common/nm_bb_transc_fsm.c</span><br><span>index cffd9ea..75ff1aa 100644</span><br><span>--- a/src/common/nm_bb_transc_fsm.c</span><br><span>+++ b/src/common/nm_bb_transc_fsm.c</span><br><span>@@ -49,7 +49,7 @@</span><br><span> {</span><br><span>      struct gsm_bts_bb_trx *bb_transc = (struct gsm_bts_bb_trx *)fi->priv;</span><br><span>     bb_transc->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-       oml_mo_state_chg(&bb_transc->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED);</span><br><span style="color: hsl(120, 100%, 40%);">+       oml_mo_state_chg(&bb_transc->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED, NM_STATE_LOCKED);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -89,7 +89,7 @@</span><br><span>       int i;</span><br><span> </span><br><span>   bb_transc->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-       oml_mo_state_chg(&bb_transc->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE);</span><br><span style="color: hsl(120, 100%, 40%);">+    oml_mo_state_chg(&bb_transc->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE, -1);</span><br><span> </span><br><span>   if (prev_state == NM_BBTRANSC_ST_OP_ENABLED) {</span><br><span>               for (i = 0; i < TRX_NR_TS; i++) {</span><br><span>@@ -157,7 +157,7 @@</span><br><span>   struct gsm_bts_trx *trx = gsm_bts_bb_trx_get_trx(bb_transc);</span><br><span>         uint8_t tn;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- oml_mo_state_chg(&bb_transc->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+   oml_mo_state_chg(&bb_transc->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1);</span><br><span>      /* Mark Dependency TS as Offline (ready to be Opstarted) */</span><br><span>  for (tn = 0; tn < TRX_NR_TS; tn++) {</span><br><span>              struct gsm_bts_trx_ts *ts = &trx->ts[tn];</span><br><span>diff --git a/src/common/nm_bts_fsm.c b/src/common/nm_bts_fsm.c</span><br><span>index 12f1a61..6575b54 100644</span><br><span>--- a/src/common/nm_bts_fsm.c</span><br><span>+++ b/src/common/nm_bts_fsm.c</span><br><span>@@ -49,7 +49,7 @@</span><br><span> {</span><br><span>   struct gsm_bts *bts = (struct gsm_bts *)fi->priv;</span><br><span>         bts->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-     oml_mo_state_chg(&bts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED);</span><br><span style="color: hsl(120, 100%, 40%);">+     oml_mo_state_chg(&bts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED, NM_STATE_LOCKED);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -70,7 +70,7 @@</span><br><span> {</span><br><span>        struct gsm_bts *bts = (struct gsm_bts *)fi->priv;</span><br><span>         bts->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-     oml_mo_state_chg(&bts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE);</span><br><span style="color: hsl(120, 100%, 40%);">+  oml_mo_state_chg(&bts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE, -1);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -95,7 +95,7 @@</span><br><span> static void st_op_enabled_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)</span><br><span> {</span><br><span>  struct gsm_bts *bts = (struct gsm_bts *)fi->priv;</span><br><span style="color: hsl(0, 100%, 40%);">-    oml_mo_state_chg(&bts->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+ oml_mo_state_chg(&bts->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1);</span><br><span> }</span><br><span> </span><br><span> static void st_op_enabled(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>diff --git a/src/common/nm_bts_sm_fsm.c b/src/common/nm_bts_sm_fsm.c</span><br><span>index dedbacb..864aeab 100644</span><br><span>--- a/src/common/nm_bts_sm_fsm.c</span><br><span>+++ b/src/common/nm_bts_sm_fsm.c</span><br><span>@@ -49,7 +49,7 @@</span><br><span> {</span><br><span>  struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv;</span><br><span>      site_mgr->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-        oml_mo_state_chg(&site_mgr->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED);</span><br><span style="color: hsl(120, 100%, 40%);">+        oml_mo_state_chg(&site_mgr->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED, NM_STATE_LOCKED);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -70,7 +70,7 @@</span><br><span> {</span><br><span>   struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv;</span><br><span>      site_mgr->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-        oml_mo_state_chg(&site_mgr->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE);</span><br><span style="color: hsl(120, 100%, 40%);">+     oml_mo_state_chg(&site_mgr->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE, -1);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -95,7 +95,7 @@</span><br><span> static void st_op_enabled_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)</span><br><span> {</span><br><span>     struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv;</span><br><span style="color: hsl(0, 100%, 40%);">- oml_mo_state_chg(&site_mgr->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+    oml_mo_state_chg(&site_mgr->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1);</span><br><span> }</span><br><span> </span><br><span> static void st_op_enabled(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>diff --git a/src/common/nm_channel_fsm.c b/src/common/nm_channel_fsm.c</span><br><span>index 15be6c6..4983c27 100644</span><br><span>--- a/src/common/nm_channel_fsm.c</span><br><span>+++ b/src/common/nm_channel_fsm.c</span><br><span>@@ -56,7 +56,7 @@</span><br><span> {</span><br><span>         struct gsm_bts_trx_ts *ts = (struct gsm_bts_trx_ts *)fi->priv;</span><br><span>    ts->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-      oml_mo_state_chg(&ts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED);</span><br><span style="color: hsl(120, 100%, 40%);">+      oml_mo_state_chg(&ts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED, NM_STATE_LOCKED);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -80,7 +80,7 @@</span><br><span> {</span><br><span>         struct gsm_bts_trx_ts *ts = (struct gsm_bts_trx_ts *)fi->priv;</span><br><span>    ts->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-      oml_mo_state_chg(&ts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_DEPENDENCY);</span><br><span style="color: hsl(120, 100%, 40%);">+ oml_mo_state_chg(&ts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_DEPENDENCY, -1);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_dependency(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -117,7 +117,7 @@</span><br><span> {</span><br><span>         struct gsm_bts_trx_ts *ts = (struct gsm_bts_trx_ts *)fi->priv;</span><br><span>    ts->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-      oml_mo_state_chg(&ts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE);</span><br><span style="color: hsl(120, 100%, 40%);">+   oml_mo_state_chg(&ts->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE, -1);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -147,7 +147,7 @@</span><br><span> static void st_op_enabled_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state)</span><br><span> {</span><br><span>         struct gsm_bts_trx_ts *ts = (struct gsm_bts_trx_ts *)fi->priv;</span><br><span style="color: hsl(0, 100%, 40%);">-       oml_mo_state_chg(&ts->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+  oml_mo_state_chg(&ts->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1);</span><br><span> }</span><br><span> </span><br><span> static void st_op_enabled(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>diff --git a/src/common/nm_radio_carrier_fsm.c b/src/common/nm_radio_carrier_fsm.c</span><br><span>index ad5fc04..2bae273 100644</span><br><span>--- a/src/common/nm_radio_carrier_fsm.c</span><br><span>+++ b/src/common/nm_radio_carrier_fsm.c</span><br><span>@@ -49,7 +49,7 @@</span><br><span> {</span><br><span>       struct gsm_bts_trx *trx = (struct gsm_bts_trx *)fi->priv;</span><br><span>         trx->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-     oml_mo_state_chg(&trx->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED);</span><br><span style="color: hsl(120, 100%, 40%);">+     oml_mo_state_chg(&trx->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_NOT_INSTALLED, NM_STATE_LOCKED);</span><br><span> }</span><br><span> </span><br><span> static void st_op_disabled_notinstalled(struct osmo_fsm_inst *fi, uint32_t event, void *data)</span><br><span>@@ -82,7 +82,7 @@</span><br><span>     unsigned int i;</span><br><span> </span><br><span>  trx->mo.opstart_success = false;</span><br><span style="color: hsl(0, 100%, 40%);">-     oml_mo_state_chg(&trx->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE);</span><br><span style="color: hsl(120, 100%, 40%);">+  oml_mo_state_chg(&trx->mo, NM_OPSTATE_DISABLED, NM_AVSTATE_OFF_LINE, -1);</span><br><span> </span><br><span>         if (prev_state == NM_RCARRIER_ST_OP_ENABLED) {</span><br><span>               for (i = 0; i < TRX_NR_TS; i++) {</span><br><span>@@ -147,7 +147,7 @@</span><br><span>   struct gsm_bts_trx *trx = (struct gsm_bts_trx *)fi->priv;</span><br><span>         unsigned int tn;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    oml_mo_state_chg(&trx->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+ oml_mo_state_chg(&trx->mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1);</span><br><span>    /* Mark Dependency TS as Offline (ready to be Opstarted) */</span><br><span>  for (tn = 0; tn < TRX_NR_TS; tn++) {</span><br><span>              struct gsm_bts_trx_ts *ts = &trx->ts[tn];</span><br><span>diff --git a/src/common/oml.c b/src/common/oml.c</span><br><span>index 819b033..d2cf877 100644</span><br><span>--- a/src/common/oml.c</span><br><span>+++ b/src/common/oml.c</span><br><span>@@ -340,12 +340,13 @@</span><br><span>        mo->nm_state.operational = op_state;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int oml_mo_state_chg(struct gsm_abis_mo *mo, int op_state, int avail_state)</span><br><span style="color: hsl(120, 100%, 40%);">+int oml_mo_state_chg(struct gsm_abis_mo *mo, int op_state, int avail_state, int adm_state)</span><br><span> {</span><br><span>         int rc = 0;</span><br><span> </span><br><span>      if ((op_state != -1 && mo->nm_state.operational != op_state) ||</span><br><span style="color: hsl(0, 100%, 40%);">-          (avail_state != -1 && mo->nm_state.availability != avail_state)) {</span><br><span style="color: hsl(120, 100%, 40%);">+         (avail_state != -1 && mo->nm_state.availability != avail_state) ||</span><br><span style="color: hsl(120, 100%, 40%);">+         (adm_state != -1 && mo->nm_state.administrative != adm_state)) {</span><br><span>              if (avail_state != -1) {</span><br><span>                     LOGP(DOML, LOGL_INFO, "%s AVAIL STATE %s -> %s\n",</span><br><span>                              gsm_abis_mo_name(mo),</span><br><span>@@ -361,6 +362,14 @@</span><br><span>                         mo->nm_state.operational = op_state;</span><br><span>                      osmo_signal_dispatch(SS_GLOBAL, S_NEW_OP_STATE, NULL);</span><br><span>               }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (adm_state != -1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGP(DOML, LOGL_INFO, "%s ADMIN STATE %s -> %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                               gsm_abis_mo_name(mo),</span><br><span style="color: hsl(120, 100%, 40%);">+                         abis_nm_admin_name(mo->nm_state.administrative),</span><br><span style="color: hsl(120, 100%, 40%);">+                           abis_nm_admin_name(adm_state));</span><br><span style="color: hsl(120, 100%, 40%);">+                       mo->nm_state.administrative = adm_state;</span><br><span style="color: hsl(120, 100%, 40%);">+           }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span>              /* send state change report */</span><br><span>               rc = oml_tx_state_changed(mo);</span><br><span>diff --git a/src/osmo-bts-lc15/oml.c b/src/osmo-bts-lc15/oml.c</span><br><span>index b4945be..9d0d99a 100644</span><br><span>--- a/src/osmo-bts-lc15/oml.c</span><br><span>+++ b/src/osmo-bts-lc15/oml.c</span><br><span>@@ -1906,13 +1906,13 @@</span><br><span>    case NM_OC_GPRS_NSE:</span><br><span>         case NM_OC_GPRS_CELL:</span><br><span>        case NM_OC_GPRS_NSVC:</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+         oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1, -1);</span><br><span>            rc = oml_mo_opstart_ack(mo);</span><br><span>                 if (mo->obj_class == NM_OC_BTS) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    oml_mo_state_chg(&bts->mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-                   oml_mo_state_chg(&bts->gprs.nse.mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-                  oml_mo_state_chg(&bts->gprs.cell.mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-                 oml_mo_state_chg(&bts->gprs.nsvc[0].mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+                    oml_mo_state_chg(&bts->mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+                     oml_mo_state_chg(&bts->gprs.nse.mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+                    oml_mo_state_chg(&bts->gprs.cell.mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+                   oml_mo_state_chg(&bts->gprs.nsvc[0].mo, -1, NM_AVSTATE_OK, -1);</span><br><span>               }</span><br><span>            break;</span><br><span>       default:</span><br><span>diff --git a/src/osmo-bts-oc2g/oml.c b/src/osmo-bts-oc2g/oml.c</span><br><span>index 9791ab8..b50e151 100644</span><br><span>--- a/src/osmo-bts-oc2g/oml.c</span><br><span>+++ b/src/osmo-bts-oc2g/oml.c</span><br><span>@@ -1898,10 +1898,10 @@</span><br><span>          break;</span><br><span>       case NM_OC_BTS:</span><br><span>              rc = osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_OPSTART_ACK, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-            oml_mo_state_chg(&bts->mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(&bts->gprs.nse.mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-          oml_mo_state_chg(&bts->gprs.cell.mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-         oml_mo_state_chg(&bts->gprs.nsvc[0].mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+            oml_mo_state_chg(&bts->mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+             oml_mo_state_chg(&bts->gprs.nse.mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+            oml_mo_state_chg(&bts->gprs.cell.mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+           oml_mo_state_chg(&bts->gprs.nsvc[0].mo, -1, NM_AVSTATE_OK, -1);</span><br><span>               break;</span><br><span>       case NM_OC_RADIO_CARRIER:</span><br><span>            trx = (struct gsm_bts_trx *) obj;</span><br><span>@@ -1918,7 +1918,7 @@</span><br><span>    case NM_OC_GPRS_NSE:</span><br><span>         case NM_OC_GPRS_CELL:</span><br><span>        case NM_OC_GPRS_NSVC:</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+         oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1, -1);</span><br><span>            rc = oml_mo_opstart_ack(mo);</span><br><span>                 break;</span><br><span>       default:</span><br><span>diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c</span><br><span>index 1e2f89d..1830599 100644</span><br><span>--- a/src/osmo-bts-octphy/l1_oml.c</span><br><span>+++ b/src/osmo-bts-octphy/l1_oml.c</span><br><span>@@ -1788,7 +1788,7 @@</span><br><span>        case NM_OC_GPRS_NSE:</span><br><span>         case NM_OC_GPRS_CELL:</span><br><span>        case NM_OC_GPRS_NSVC:</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+         oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1, -1);</span><br><span>            rc = oml_mo_opstart_ack(mo);</span><br><span>                 break;</span><br><span>       default:</span><br><span>diff --git a/src/osmo-bts-omldummy/bts_model.c b/src/osmo-bts-omldummy/bts_model.c</span><br><span>index 46558a1..5bfcfca 100644</span><br><span>--- a/src/osmo-bts-omldummy/bts_model.c</span><br><span>+++ b/src/osmo-bts-omldummy/bts_model.c</span><br><span>@@ -143,7 +143,7 @@</span><br><span>      case NM_OC_GPRS_NSE:</span><br><span>         case NM_OC_GPRS_CELL:</span><br><span>        case NM_OC_GPRS_NSVC:</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+              oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1);</span><br><span>                 rc = oml_mo_opstart_ack(mo);</span><br><span>                 break;</span><br><span>       default:</span><br><span>diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c</span><br><span>index 93ecf90..194afcd 100644</span><br><span>--- a/src/osmo-bts-sysmo/oml.c</span><br><span>+++ b/src/osmo-bts-sysmo/oml.c</span><br><span>@@ -1776,10 +1776,10 @@</span><br><span>              break;</span><br><span>       case NM_OC_BTS:</span><br><span>              rc = osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_OPSTART_ACK, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-            oml_mo_state_chg(&bts->mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(&bts->gprs.nse.mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-          oml_mo_state_chg(&bts->gprs.cell.mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(0, 100%, 40%);">-         oml_mo_state_chg(&bts->gprs.nsvc[0].mo, -1, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+            oml_mo_state_chg(&bts->mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+             oml_mo_state_chg(&bts->gprs.nse.mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+            oml_mo_state_chg(&bts->gprs.cell.mo, -1, NM_AVSTATE_OK, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+           oml_mo_state_chg(&bts->gprs.nsvc[0].mo, -1, NM_AVSTATE_OK, -1);</span><br><span>               break;</span><br><span>       case NM_OC_RADIO_CARRIER:</span><br><span>            trx = (struct gsm_bts_trx *) obj;</span><br><span>@@ -1796,7 +1796,7 @@</span><br><span>    case NM_OC_GPRS_NSE:</span><br><span>         case NM_OC_GPRS_CELL:</span><br><span>        case NM_OC_GPRS_NSVC:</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+         oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, -1, -1);</span><br><span>            rc = oml_mo_opstart_ack(mo);</span><br><span>                 break;</span><br><span>       default:</span><br><span>diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c</span><br><span>index 754e9d7..6b417f4 100644</span><br><span>--- a/src/osmo-bts-trx/l1_if.c</span><br><span>+++ b/src/osmo-bts-trx/l1_if.c</span><br><span>@@ -604,7 +604,7 @@</span><br><span>  case NM_OC_GPRS_NSE:</span><br><span>         case NM_OC_GPRS_CELL:</span><br><span>        case NM_OC_GPRS_NSVC:</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+              oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1);</span><br><span>                 rc = oml_mo_opstart_ack(mo);</span><br><span>                 break;</span><br><span>       default:</span><br><span>diff --git a/src/osmo-bts-virtual/bts_model.c b/src/osmo-bts-virtual/bts_model.c</span><br><span>index af8a6f2..48e9400 100644</span><br><span>--- a/src/osmo-bts-virtual/bts_model.c</span><br><span>+++ b/src/osmo-bts-virtual/bts_model.c</span><br><span>@@ -156,7 +156,7 @@</span><br><span>  case NM_OC_GPRS_NSE:</span><br><span>         case NM_OC_GPRS_CELL:</span><br><span>        case NM_OC_GPRS_NSVC:</span><br><span style="color: hsl(0, 100%, 40%);">-           oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK);</span><br><span style="color: hsl(120, 100%, 40%);">+              oml_mo_state_chg(mo, NM_OPSTATE_ENABLED, NM_AVSTATE_OK, -1);</span><br><span>                 rc = oml_mo_opstart_ack(mo);</span><br><span>                 break;</span><br><span>       default:</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/25473">change 25473</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bts/+/25473"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ifdc6a1dfb673c0ab915ddf2a9d372928f4f86b4c </div>
<div style="display:none"> Gerrit-Change-Number: 25473 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>