diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2015-05-14 11:30:07 +0200 |
---|---|---|
committer | Daniel Willmann <daniel@totalueberwachung.de> | 2015-05-14 11:30:07 +0200 |
commit | 78d0dffb8ff2d11c155ffbe2c9069db50cc34f74 (patch) | |
tree | 179e2605d785d657c0aa2cbc6082deb2d8cea96b | |
parent | bf1ee561cd00addb152f723dee884e89be26a27e (diff) |
common/oml: Ignore previous operational state for radio carrier opstartdaniel/oml-state-fixes
-rw-r--r-- | src/common/oml.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/common/oml.c b/src/common/oml.c index 01c0bd71..c5b13e05 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 */ |