aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Willmann <daniel@totalueberwachung.de>2015-05-14 11:30:07 +0200
committerDaniel Willmann <daniel@totalueberwachung.de>2015-05-14 11:30:07 +0200
commit78d0dffb8ff2d11c155ffbe2c9069db50cc34f74 (patch)
tree179e2605d785d657c0aa2cbc6082deb2d8cea96b
parentbf1ee561cd00addb152f723dee884e89be26a27e (diff)
common/oml: Ignore previous operational state for radio carrier opstartdaniel/oml-state-fixes
-rw-r--r--src/common/oml.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/common/oml.c b/src/common/oml.c
index 01c0bd7..c5b13e0 100644
--- a/src/common/oml.c
+++ b/src/common/oml.c
@@ -735,10 +735,20 @@ static int oml_rx_opstart(struct gsm_bts *bts, struct msgb *msg)
if (!mo || !obj)
return oml_fom_ack_nack(msg, NM_NACK_OBJINST_UNKN);
- /* Step 2: Do some global dependency/consistency checking */
+ /* Step 2: Do some global dependency/consistency checking
+ * The admin mode changes from commit c1f78e4de8d741c849b6
+ * chage the way the operational attribute is handled.
+ * When we get the admin unlocked command before the opstart the
+ * operational will be enabled here....
+ * FIXME: This should work differently, i.e. operational attribute should
+ * not change before opstart was sent */
if (mo->nm_state.operational == NM_OPSTATE_ENABLED) {
- LOGP(DOML, LOGL_NOTICE, "... automatic ACK, OP state already was Enabled\n");
- return oml_mo_opstart_ack(mo);
+ if (mo->obj_class == NM_OC_RADIO_CARRIER) {
+ LOGP(DOML, LOGL_NOTICE, "OP state already was Enabled for radio carrier, calling opstart anyway\n");
+ } else {
+ LOGP(DOML, LOGL_NOTICE, "... automatic ACK, OP state already was Enabled (skipping opstart)\n");
+ return oml_mo_opstart_ack(mo);
+ }
}
/* Step 3: Ask BTS driver to apply the opstart */