aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2023-04-03 19:13:26 +0200
committerpespin <pespin@sysmocom.de>2023-04-06 10:28:22 +0000
commitaebd2a21b5457a19fe79bc2fd3b54ca9eeb6c6ec (patch)
treeeaa3e18fe4593f871a17f6a0a12942cd86ec1ee9
parent8c397da917725bb3c648eecc34943bd4eef91a11 (diff)
nm: Drop NM_EV_SETATTR_{ACK/NACK}
Simply return error codes from lower layer implementations, and do the OML handling in the common NM TS 12.21 FSMs. As a result, we simplify the logic in the lower layers. Change-Id: I281c07bb5ad88ee03542f092141cebe036d10aee
-rw-r--r--include/osmo-bts/bts_model.h2
-rw-r--r--include/osmo-bts/nm_common_fsm.h5
-rw-r--r--src/common/nm_bb_transc_fsm.c13
-rw-r--r--src/common/nm_bts_fsm.c11
-rw-r--r--src/common/nm_bts_sm_fsm.c13
-rw-r--r--src/common/nm_channel_fsm.c22
-rw-r--r--src/common/nm_common_fsm.c4
-rw-r--r--src/common/nm_radio_carrier_fsm.c11
-rw-r--r--src/osmo-bts-lc15/oml.c13
-rw-r--r--src/osmo-bts-oc2g/oml.c13
-rw-r--r--src/osmo-bts-octphy/l1_oml.c14
-rw-r--r--src/osmo-bts-omldummy/bts_model.c19
-rw-r--r--src/osmo-bts-sysmo/oml.c13
-rw-r--r--src/osmo-bts-trx/l1_if.c19
-rw-r--r--src/osmo-bts-virtual/bts_model.c19
-rw-r--r--tests/stubs.c2
16 files changed, 55 insertions, 138 deletions
diff --git a/include/osmo-bts/bts_model.h b/include/osmo-bts/bts_model.h
index ef93fdad..23a36add 100644
--- a/include/osmo-bts/bts_model.h
+++ b/include/osmo-bts/bts_model.h
@@ -20,7 +20,7 @@ int bts_model_check_oml(struct gsm_bts *bts, uint8_t msg_type,
struct tlv_parsed *old_attr, struct tlv_parsed *new_attr,
void *obj);
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int obj_kind, void *obj);
int bts_model_opstart(struct gsm_bts *bts, struct gsm_abis_mo *mo,
diff --git a/include/osmo-bts/nm_common_fsm.h b/include/osmo-bts/nm_common_fsm.h
index 2363779f..fddc76e3 100644
--- a/include/osmo-bts/nm_common_fsm.h
+++ b/include/osmo-bts/nm_common_fsm.h
@@ -31,8 +31,6 @@
enum nm_fsm_events {
NM_EV_SW_ACT,
NM_EV_RX_SETATTR, /* data: struct nm_fsm_ev_setattr_data */
- NM_EV_SETATTR_ACK, /* data: struct nm_fsm_ev_setattr_data */
- NM_EV_SETATTR_NACK, /* data: struct nm_fsm_ev_setattr_data */
NM_EV_OPSTART_ACK,
NM_EV_OPSTART_NACK,
NM_EV_SHUTDOWN_START,
@@ -51,9 +49,8 @@ enum nm_fsm_events {
extern const struct value_string nm_fsm_event_names[];
struct nm_fsm_ev_setattr_data {
- struct msgb *msg;
+ const struct msgb *msg;
struct tlv_parsed *tp;
- int cause; /* set in NM_EV_SETATTR_(N)ACK */
};
diff --git a/src/common/nm_bb_transc_fsm.c b/src/common/nm_bb_transc_fsm.c
index 82ef89dc..32cbaea9 100644
--- a/src/common/nm_bb_transc_fsm.c
+++ b/src/common/nm_bb_transc_fsm.c
@@ -122,13 +122,15 @@ static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, voi
struct nm_fsm_ev_setattr_data *setattr_data;
bool phy_state_connected;
bool rsl_link_connected;
+ int rc;
switch (event) {
- case NM_EV_SETATTR_ACK:
- case NM_EV_SETATTR_NACK:
+ case NM_EV_RX_SETATTR:
setattr_data = (struct nm_fsm_ev_setattr_data *)data;
- bb_transc->mo.setattr_success = setattr_data->cause == 0;
- oml_fom_ack_nack_copy_msg(setattr_data->msg, setattr_data->cause);
+ rc = bts_model_apply_oml(trx->bts, setattr_data->msg, setattr_data->tp,
+ NM_OC_BASEB_TRANSC, bb_transc);
+ bb_transc->mo.setattr_success = rc == 0;
+ oml_fom_ack_nack_copy_msg(setattr_data->msg, rc);
break;
case NM_EV_OPSTART_ACK:
bb_transc->mo.opstart_success = true;
@@ -245,8 +247,7 @@ static struct osmo_fsm_state nm_bb_transc_fsm_states[] = {
},
[NM_BBTRANSC_ST_OP_DISABLED_OFFLINE] = {
.in_event_mask =
- X(NM_EV_SETATTR_ACK) |
- X(NM_EV_SETATTR_NACK) |
+ X(NM_EV_RX_SETATTR) |
X(NM_EV_OPSTART_ACK) |
X(NM_EV_OPSTART_NACK) |
X(NM_EV_RSL_UP) |
diff --git a/src/common/nm_bts_fsm.c b/src/common/nm_bts_fsm.c
index 8ff57feb..4fabbcd2 100644
--- a/src/common/nm_bts_fsm.c
+++ b/src/common/nm_bts_fsm.c
@@ -118,13 +118,8 @@ static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, voi
setattr_data = (struct nm_fsm_ev_setattr_data *)data;
rc = bts_model_apply_oml(bts, setattr_data->msg, setattr_data->tp,
NM_OC_BTS, bts);
- (void)rc;
- break;
- case NM_EV_SETATTR_ACK:
- case NM_EV_SETATTR_NACK:
- setattr_data = (struct nm_fsm_ev_setattr_data *)data;
- bts->mo.setattr_success = setattr_data->cause == 0;
- oml_fom_ack_nack_copy_msg(setattr_data->msg, setattr_data->cause);
+ bts->mo.setattr_success = rc == 0;
+ oml_fom_ack_nack_copy_msg(setattr_data->msg, rc);
break;
case NM_EV_OPSTART_ACK:
bts->mo.opstart_success = true;
@@ -186,8 +181,6 @@ static struct osmo_fsm_state nm_bts_fsm_states[] = {
[NM_BTS_ST_OP_DISABLED_OFFLINE] = {
.in_event_mask =
X(NM_EV_RX_SETATTR) |
- X(NM_EV_SETATTR_ACK) |
- X(NM_EV_SETATTR_NACK) |
X(NM_EV_OPSTART_ACK) |
X(NM_EV_OPSTART_NACK),
.out_state_mask =
diff --git a/src/common/nm_bts_sm_fsm.c b/src/common/nm_bts_sm_fsm.c
index 66c40770..708656f2 100644
--- a/src/common/nm_bts_sm_fsm.c
+++ b/src/common/nm_bts_sm_fsm.c
@@ -86,13 +86,15 @@ static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, voi
{
struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv;
struct nm_fsm_ev_setattr_data *setattr_data;
+ int rc;
switch (event) {
- case NM_EV_SETATTR_ACK:
- case NM_EV_SETATTR_NACK:
+ case NM_EV_RX_SETATTR:
setattr_data = (struct nm_fsm_ev_setattr_data *)data;
- site_mgr->mo.setattr_success = setattr_data->cause == 0;
- oml_fom_ack_nack_copy_msg(setattr_data->msg, setattr_data->cause);
+ /* No bts_model_apply_oml() needed yet for site_mgr obj yet: */
+ rc = 0;
+ site_mgr->mo.setattr_success = rc == 0;
+ oml_fom_ack_nack_copy_msg(setattr_data->msg, rc);
break;
case NM_EV_OPSTART_ACK:
site_mgr->mo.opstart_success = true;
@@ -153,8 +155,7 @@ static struct osmo_fsm_state nm_bts_sm_fsm_states[] = {
},
[NM_BTS_SM_ST_OP_DISABLED_OFFLINE] = {
.in_event_mask =
- X(NM_EV_SETATTR_ACK) |
- X(NM_EV_SETATTR_NACK) |
+ X(NM_EV_RX_SETATTR) |
X(NM_EV_OPSTART_ACK) |
X(NM_EV_OPSTART_NACK),
.out_state_mask =
diff --git a/src/common/nm_channel_fsm.c b/src/common/nm_channel_fsm.c
index 557d5b98..a2cf8079 100644
--- a/src/common/nm_channel_fsm.c
+++ b/src/common/nm_channel_fsm.c
@@ -101,13 +101,8 @@ static void st_op_disabled_dependency(struct osmo_fsm_inst *fi, uint32_t event,
setattr_data = (struct nm_fsm_ev_setattr_data *)data;
rc = bts_model_apply_oml(ts->trx->bts, setattr_data->msg, setattr_data->tp,
NM_OC_CHANNEL, ts);
- (void)rc;
- break;
- case NM_EV_SETATTR_ACK:
- case NM_EV_SETATTR_NACK:
- setattr_data = (struct nm_fsm_ev_setattr_data *)data;
- ts->mo.setattr_success = setattr_data->cause == 0;
- oml_fom_ack_nack_copy_msg(setattr_data->msg, setattr_data->cause);
+ ts->mo.setattr_success = rc == 0;
+ oml_fom_ack_nack_copy_msg(setattr_data->msg, rc);
break;
case NM_EV_OPSTART_ACK:
LOGPFSML(fi, LOGL_NOTICE, "BSC trying to activate TS while still in avail=dependency. "
@@ -152,13 +147,8 @@ static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, voi
setattr_data = (struct nm_fsm_ev_setattr_data *)data;
rc = bts_model_apply_oml(ts->trx->bts, setattr_data->msg, setattr_data->tp,
NM_OC_CHANNEL, ts);
- (void)rc;
- break;
- case NM_EV_SETATTR_ACK:
- case NM_EV_SETATTR_NACK:
- setattr_data = (struct nm_fsm_ev_setattr_data *)data;
- ts->mo.setattr_success = setattr_data->cause == 0;
- oml_fom_ack_nack_copy_msg(setattr_data->msg, setattr_data->cause);
+ ts->mo.setattr_success = rc == 0;
+ oml_fom_ack_nack_copy_msg(setattr_data->msg, rc);
break;
case NM_EV_OPSTART_ACK:
ts->mo.opstart_success = true;
@@ -235,8 +225,6 @@ static struct osmo_fsm_state nm_chan_fsm_states[] = {
[NM_CHAN_ST_OP_DISABLED_DEPENDENCY] = {
.in_event_mask =
X(NM_EV_RX_SETATTR) |
- X(NM_EV_SETATTR_ACK) |
- X(NM_EV_SETATTR_NACK) |
X(NM_EV_OPSTART_ACK) | /* backward compatibility, buggy BSC */
X(NM_EV_OPSTART_NACK) |
X(NM_EV_BBTRANSC_ENABLED) |
@@ -254,8 +242,6 @@ static struct osmo_fsm_state nm_chan_fsm_states[] = {
[NM_CHAN_ST_OP_DISABLED_OFFLINE] = {
.in_event_mask =
X(NM_EV_RX_SETATTR) |
- X(NM_EV_SETATTR_ACK) |
- X(NM_EV_SETATTR_NACK) |
X(NM_EV_OPSTART_ACK) |
X(NM_EV_OPSTART_NACK) |
X(NM_EV_BBTRANSC_DISABLED) |
diff --git a/src/common/nm_common_fsm.c b/src/common/nm_common_fsm.c
index 6a8d3d15..5298e4df 100644
--- a/src/common/nm_common_fsm.c
+++ b/src/common/nm_common_fsm.c
@@ -25,9 +25,7 @@
const struct value_string nm_fsm_event_names[] = {
{ NM_EV_SW_ACT, "SW_ACT" },
- { NM_EV_SETATTR_ACK, "RX_SETATTR" },
- { NM_EV_SETATTR_ACK, "SETATTR_ACK" },
- { NM_EV_SETATTR_NACK, "SETATTR_NACK" },
+ { NM_EV_RX_SETATTR, "RX_SETATTR" },
{ NM_EV_OPSTART_ACK, "OPSTART_ACK" },
{ NM_EV_OPSTART_NACK, "OPSTART_NACK" },
{ NM_EV_SHUTDOWN_START, "SHUTDOWN_START" },
diff --git a/src/common/nm_radio_carrier_fsm.c b/src/common/nm_radio_carrier_fsm.c
index 587847fe..40bccb5e 100644
--- a/src/common/nm_radio_carrier_fsm.c
+++ b/src/common/nm_radio_carrier_fsm.c
@@ -110,13 +110,8 @@ static void st_op_disabled_offline(struct osmo_fsm_inst *fi, uint32_t event, voi
setattr_data = (struct nm_fsm_ev_setattr_data *)data;
rc = bts_model_apply_oml(trx->bts, setattr_data->msg, setattr_data->tp,
NM_OC_RADIO_CARRIER, trx);
- (void)rc;
- break;
- case NM_EV_SETATTR_ACK:
- case NM_EV_SETATTR_NACK:
- setattr_data = (struct nm_fsm_ev_setattr_data *)data;
- trx->mo.setattr_success = setattr_data->cause == 0;
- oml_fom_ack_nack_copy_msg(setattr_data->msg, setattr_data->cause);
+ trx->mo.setattr_success = rc == 0;
+ oml_fom_ack_nack_copy_msg(setattr_data->msg, rc);
break;
case NM_EV_OPSTART_ACK:
trx->mo.opstart_success = true;
@@ -227,8 +222,6 @@ static struct osmo_fsm_state nm_rcarrier_fsm_states[] = {
[NM_RCARRIER_ST_OP_DISABLED_OFFLINE] = {
.in_event_mask =
X(NM_EV_RX_SETATTR) |
- X(NM_EV_SETATTR_ACK) |
- X(NM_EV_SETATTR_NACK) |
X(NM_EV_OPSTART_ACK) |
X(NM_EV_OPSTART_NACK) |
X(NM_EV_RSL_UP) |
diff --git a/src/osmo-bts-lc15/oml.c b/src/osmo-bts-lc15/oml.c
index 9502765c..ad2653b4 100644
--- a/src/osmo-bts-lc15/oml.c
+++ b/src/osmo-bts-lc15/oml.c
@@ -1801,16 +1801,10 @@ int bts_model_check_oml(struct gsm_bts *bts, uint8_t msg_type,
}
/* callback from OML */
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int kind, void *obj)
{
struct abis_om_fom_hdr *foh = msgb_l3(msg);
- struct gsm_abis_mo *mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
- struct nm_fsm_ev_setattr_data ev_data = {
- .msg = msg,
- .cause = 0,
- };
- int rc;
struct gsm_bts_trx *trx;
struct lc15l1_hdl *fl1h;
@@ -1856,10 +1850,7 @@ int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
break;
}
- rc = osmo_fsm_inst_dispatch(mo->fi,
- ev_data.cause == 0 ? NM_EV_SETATTR_ACK : NM_EV_SETATTR_NACK,
- &ev_data);
- return rc;
+ return 0;
}
/* callback from OML */
diff --git a/src/osmo-bts-oc2g/oml.c b/src/osmo-bts-oc2g/oml.c
index 40c1c85d..6e421542 100644
--- a/src/osmo-bts-oc2g/oml.c
+++ b/src/osmo-bts-oc2g/oml.c
@@ -1810,16 +1810,10 @@ int bts_model_check_oml(struct gsm_bts *bts, uint8_t msg_type,
}
/* callback from OML */
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int kind, void *obj)
{
struct abis_om_fom_hdr *foh = msgb_l3(msg);
- struct gsm_abis_mo *mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
- struct nm_fsm_ev_setattr_data ev_data = {
- .msg = msg,
- .cause = 0,
- };
- int rc;
struct gsm_bts_trx *trx;
struct oc2gl1_hdl *fl1h;
uint8_t cell_size;
@@ -1861,10 +1855,7 @@ int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
break;
}
- rc = osmo_fsm_inst_dispatch(mo->fi,
- ev_data.cause == 0 ? NM_EV_SETATTR_ACK : NM_EV_SETATTR_NACK,
- &ev_data);
- return rc;
+ return 0;
}
/* callback from OML */
diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c
index 8ffd1ac2..6b3148ca 100644
--- a/src/osmo-bts-octphy/l1_oml.c
+++ b/src/osmo-bts-octphy/l1_oml.c
@@ -1742,30 +1742,20 @@ int bts_model_check_oml(struct gsm_bts *bts, uint8_t msg_type,
}
/* callback from OML */
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int kind, void *obj)
{
struct abis_om_fom_hdr *foh = msgb_l3(msg);
- struct gsm_abis_mo *mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
- struct nm_fsm_ev_setattr_data ev_data = {
- .msg = msg,
- .cause = 0,
- };
- int rc;
struct gsm_bts_trx *trx;
switch (foh->msg_type) {
case NM_MT_SET_RADIO_ATTR:
trx = obj;
- /*struct octphy_hdl *fl1h = trx_octphy_hdl(trx); */
power_ramp_start(trx, get_p_target_mdBm(trx, 0), 0, NULL);
break;
}
- rc = osmo_fsm_inst_dispatch(mo->fi,
- ev_data.cause == 0 ? NM_EV_SETATTR_ACK : NM_EV_SETATTR_NACK,
- &ev_data);
- return rc;
+ return 0;
}
diff --git a/src/osmo-bts-omldummy/bts_model.c b/src/osmo-bts-omldummy/bts_model.c
index af358b6a..18f1b2c1 100644
--- a/src/osmo-bts-omldummy/bts_model.c
+++ b/src/osmo-bts-omldummy/bts_model.c
@@ -93,32 +93,27 @@ static uint8_t vbts_set_ts(struct gsm_bts_trx_ts *ts)
return 0;
}
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int kind, void *obj)
{
struct abis_om_fom_hdr *foh = msgb_l3(msg);
- struct gsm_abis_mo *mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
- struct nm_fsm_ev_setattr_data ev_data = {
- .msg = msg,
- .cause = 0,
- };
int rc;
switch (foh->msg_type) {
case NM_MT_SET_BTS_ATTR:
- ev_data.cause = vbts_set_bts(obj);
+ rc = vbts_set_bts(obj);
break;
case NM_MT_SET_RADIO_ATTR:
- ev_data.cause = vbts_set_trx(obj);
+ rc = vbts_set_trx(obj);
break;
case NM_MT_SET_CHAN_ATTR:
- ev_data.cause = vbts_set_ts(obj);
+ rc = vbts_set_ts(obj);
+ break;
+ default:
+ rc = 0;
break;
}
- rc = osmo_fsm_inst_dispatch(mo->fi,
- ev_data.cause == 0 ? NM_EV_SETATTR_ACK : NM_EV_SETATTR_NACK,
- &ev_data);
return rc;
}
diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c
index 12b50bfb..89f990c5 100644
--- a/src/osmo-bts-sysmo/oml.c
+++ b/src/osmo-bts-sysmo/oml.c
@@ -1714,16 +1714,10 @@ int bts_model_check_oml(struct gsm_bts *bts, uint8_t msg_type,
}
/* callback from OML */
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int kind, void *obj)
{
struct abis_om_fom_hdr *foh = msgb_l3(msg);
- struct gsm_abis_mo *mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
- struct nm_fsm_ev_setattr_data ev_data = {
- .msg = msg,
- .cause = 0,
- };
- int rc;
struct gsm_bts_trx *trx;
struct femtol1_hdl *fl1h;
@@ -1738,10 +1732,7 @@ int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
break;
}
- rc = osmo_fsm_inst_dispatch(mo->fi,
- ev_data.cause == 0 ? NM_EV_SETATTR_ACK : NM_EV_SETATTR_NACK,
- &ev_data);
- return rc;
+ return 0;
}
/* callback from OML */
diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c
index 1834cf5f..bf8c75e1 100644
--- a/src/osmo-bts-trx/l1_if.c
+++ b/src/osmo-bts-trx/l1_if.c
@@ -548,32 +548,27 @@ int bts_model_check_oml(struct gsm_bts *bts, uint8_t msg_type,
}
/* callback from OML */
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int kind, void *obj)
{
struct abis_om_fom_hdr *foh = msgb_l3(msg);
- struct gsm_abis_mo *mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
- struct nm_fsm_ev_setattr_data ev_data = {
- .msg = msg,
- .cause = 0,
- };
int rc;
switch (foh->msg_type) {
case NM_MT_SET_BTS_ATTR:
- ev_data.cause = trx_set_bts(obj);
+ rc = trx_set_bts(obj);
break;
case NM_MT_SET_RADIO_ATTR:
- ev_data.cause = trx_set_trx(obj);
+ rc = trx_set_trx(obj);
break;
case NM_MT_SET_CHAN_ATTR:
- ev_data.cause = trx_set_ts(obj);
+ rc = trx_set_ts(obj);
+ break;
+ default:
+ rc = 0;
break;
}
- rc = osmo_fsm_inst_dispatch(mo->fi,
- ev_data.cause == 0 ? NM_EV_SETATTR_ACK : NM_EV_SETATTR_NACK,
- &ev_data);
return rc;
}
diff --git a/src/osmo-bts-virtual/bts_model.c b/src/osmo-bts-virtual/bts_model.c
index 477ffb3f..7461ce61 100644
--- a/src/osmo-bts-virtual/bts_model.c
+++ b/src/osmo-bts-virtual/bts_model.c
@@ -128,32 +128,27 @@ static uint8_t vbts_set_ts(struct gsm_bts_trx_ts *ts)
return 0;
}
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int kind, void *obj)
{
struct abis_om_fom_hdr *foh = msgb_l3(msg);
- struct gsm_abis_mo *mo = gsm_objclass2mo(bts, foh->obj_class, &foh->obj_inst);
- struct nm_fsm_ev_setattr_data ev_data = {
- .msg = msg,
- .cause = 0,
- };
int rc;
switch (foh->msg_type) {
case NM_MT_SET_BTS_ATTR:
- ev_data.cause = vbts_set_bts(obj);
+ rc = vbts_set_bts(obj);
break;
case NM_MT_SET_RADIO_ATTR:
- ev_data.cause = vbts_set_trx(obj);
+ rc = vbts_set_trx(obj);
break;
case NM_MT_SET_CHAN_ATTR:
- ev_data.cause = vbts_set_ts(obj);
+ rc = vbts_set_ts(obj);
+ break;
+ default:
+ rc = 0;
break;
}
- rc = osmo_fsm_inst_dispatch(mo->fi,
- ev_data.cause == 0 ? NM_EV_SETATTR_ACK : NM_EV_SETATTR_NACK,
- &ev_data);
return rc;
}
diff --git a/tests/stubs.c b/tests/stubs.c
index b24dfc90..d05703ca 100644
--- a/tests/stubs.c
+++ b/tests/stubs.c
@@ -18,7 +18,7 @@ int bts_model_init(struct gsm_bts *bts)
{ return 0; }
int bts_model_trx_init(struct gsm_bts_trx *trx)
{ return 0; }
-int bts_model_apply_oml(struct gsm_bts *bts, struct msgb *msg,
+int bts_model_apply_oml(struct gsm_bts *bts, const struct msgb *msg,
struct tlv_parsed *new_attr, int kind, void *obj)
{ return 0; }