This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
pespin gerrit-no-reply at lists.osmocom.orgpespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/25490 ) Change subject: nm_*_fsm: Set adminsitrative state 'shutting down' when shutdown procedure starts ...................................................................... nm_*_fsm: Set adminsitrative state 'shutting down' when shutdown procedure starts Change-Id: I0d14840a55642812b865687a6cb208e7ffd22829 --- M include/osmo-bts/nm_common_fsm.h M src/common/bts_shutdown_fsm.c M src/common/nm_bb_transc_fsm.c M src/common/nm_bts_fsm.c M src/common/nm_bts_sm_fsm.c M src/common/nm_channel_fsm.c M src/common/nm_common_fsm.c M src/common/nm_radio_carrier_fsm.c 8 files changed, 105 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/90/25490/1 diff --git a/include/osmo-bts/nm_common_fsm.h b/include/osmo-bts/nm_common_fsm.h index 4679b23..4dab0ea 100644 --- a/include/osmo-bts/nm_common_fsm.h +++ b/include/osmo-bts/nm_common_fsm.h @@ -31,6 +31,7 @@ NM_EV_SW_ACT, NM_EV_OPSTART_ACK, NM_EV_OPSTART_NACK, + NM_EV_SHUTDOWN_START, NM_EV_RSL_UP, /* RadioCarrier and BaseBand Transceiver only */ NM_EV_RSL_DOWN, /* RadioCarrier and BaseBand Transceiver only */ NM_EV_PHYLINK_UP, /* RadioCarrier and BaseBand Transceiver only */ diff --git a/src/common/bts_shutdown_fsm.c b/src/common/bts_shutdown_fsm.c index 0ac3078..cffe7cd 100644 --- a/src/common/bts_shutdown_fsm.c +++ b/src/common/bts_shutdown_fsm.c @@ -29,6 +29,7 @@ #include <osmo-bts/gsm_data.h> #include <osmo-bts/bts_model.h> #include <osmo-bts/bts.h> +#include <osmo-bts/nm_common_fsm.h> #define X(s) (1 << (s)) @@ -58,6 +59,9 @@ unsigned int count; switch(event) { case BTS_SHUTDOWN_EV_START: + /* Firt announce to NM objects that we are starting a shutdown procedure: */ + osmo_fsm_inst_dispatch(bts->site_mgr.mo.fi, NM_EV_SHUTDOWN_START, NULL); + count = count_trx_operational(bts); if (count) { bts_shutdown_fsm_state_chg(fi, BTS_SHUTDOWN_ST_WAIT_RAMP_DOWN_COMPL); diff --git a/src/common/nm_bb_transc_fsm.c b/src/common/nm_bb_transc_fsm.c index 2897675..342699c 100644 --- a/src/common/nm_bb_transc_fsm.c +++ b/src/common/nm_bb_transc_fsm.c @@ -181,6 +181,28 @@ nm_bb_transc_fsm_state_chg(fi, NM_BBTRANSC_ST_OP_DISABLED_OFFLINE); } +static void nm_bb_transc_allstate(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_bts_bb_trx *bb_transc = (struct gsm_bts_bb_trx *)fi->priv; + struct gsm_bts_trx *trx = gsm_bts_bb_trx_get_trx(bb_transc); + uint8_t tn; + + switch (event) { + case NM_EV_SHUTDOWN_START: + /* Announce we start shutting down */ + oml_mo_state_chg(&bb_transc->mo, -1, -1, NM_STATE_SHUTDOWN); + + /* Propagate event to children: */ + for (tn = 0; tn < TRX_NR_TS; tn++) { + struct gsm_bts_trx_ts *ts = &trx->ts[tn]; + osmo_fsm_inst_dispatch(ts->mo.fi, NM_EV_SHUTDOWN_START, NULL); + } + break; + default: + OSMO_ASSERT(false); + } +} + static struct osmo_fsm_state nm_bb_transc_fsm_states[] = { [NM_BBTRANSC_ST_OP_DISABLED_NOTINSTALLED] = { .in_event_mask = @@ -229,6 +251,8 @@ .states = nm_bb_transc_fsm_states, .num_states = ARRAY_SIZE(nm_bb_transc_fsm_states), .event_names = nm_fsm_event_names, + .allstate_action = nm_bb_transc_allstate, + .allstate_event_mask = X(NM_EV_SHUTDOWN_START), .log_subsys = DOML, }; diff --git a/src/common/nm_bts_fsm.c b/src/common/nm_bts_fsm.c index 6575b54..93e5740 100644 --- a/src/common/nm_bts_fsm.c +++ b/src/common/nm_bts_fsm.c @@ -102,6 +102,27 @@ { } +static void nm_bts_allstate(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_bts *bts = (struct gsm_bts *)fi->priv; + struct gsm_bts_trx *trx; + + switch (event) { + case NM_EV_SHUTDOWN_START: + /* Announce we start shutting down */ + oml_mo_state_chg(&bts->mo, -1, -1, NM_STATE_SHUTDOWN); + + /* Propagate event to children: */ + llist_for_each_entry(trx, &bts->trx_list, list) { + osmo_fsm_inst_dispatch(trx->mo.fi, NM_EV_SHUTDOWN_START, NULL); + osmo_fsm_inst_dispatch(trx->bb_transc.mo.fi, NM_EV_SHUTDOWN_START, NULL); + } + break; + default: + OSMO_ASSERT(false); + } +} + static struct osmo_fsm_state nm_bts_fsm_states[] = { [NM_BTS_ST_OP_DISABLED_NOTINSTALLED] = { .in_event_mask = @@ -136,6 +157,8 @@ .states = nm_bts_fsm_states, .num_states = ARRAY_SIZE(nm_bts_fsm_states), .event_names = nm_fsm_event_names, + .allstate_action = nm_bts_allstate, + .allstate_event_mask = X(NM_EV_SHUTDOWN_START), .log_subsys = DOML, }; diff --git a/src/common/nm_bts_sm_fsm.c b/src/common/nm_bts_sm_fsm.c index 864aeab..e958917 100644 --- a/src/common/nm_bts_sm_fsm.c +++ b/src/common/nm_bts_sm_fsm.c @@ -102,6 +102,24 @@ { } +static void nm_bts_sm_allstate(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv; + struct gsm_bts *bts = gsm_bts_sm_get_bts(site_mgr); + + switch (event) { + case NM_EV_SHUTDOWN_START: + /* Announce we start shutting down */ + oml_mo_state_chg(&site_mgr->mo, -1, -1, NM_STATE_SHUTDOWN); + + /* Propagate event to children: */ + osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_SHUTDOWN_START, NULL); + break; + default: + OSMO_ASSERT(false); + } +} + static struct osmo_fsm_state nm_bts_sm_fsm_states[] = { [NM_BTS_SM_ST_OP_DISABLED_NOTINSTALLED] = { .in_event_mask = @@ -136,6 +154,8 @@ .states = nm_bts_sm_fsm_states, .num_states = ARRAY_SIZE(nm_bts_sm_fsm_states), .event_names = nm_fsm_event_names, + .allstate_action = nm_bts_sm_allstate, + .allstate_event_mask = X(NM_EV_SHUTDOWN_START), .log_subsys = DOML, }; diff --git a/src/common/nm_channel_fsm.c b/src/common/nm_channel_fsm.c index 4983c27..fc3c8a9 100644 --- a/src/common/nm_channel_fsm.c +++ b/src/common/nm_channel_fsm.c @@ -168,6 +168,20 @@ } } +static void nm_chan_allstate(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_bts_trx_ts *ts = (struct gsm_bts_trx_ts *)fi->priv; + + switch (event) { + case NM_EV_SHUTDOWN_START: + /* Announce we start shutting down */ + oml_mo_state_chg(&ts->mo, -1, -1, NM_STATE_SHUTDOWN); + break; + default: + OSMO_ASSERT(false); + } +} + static struct osmo_fsm_state nm_chan_fsm_states[] = { [NM_CHAN_ST_OP_DISABLED_NOTINSTALLED] = { .in_event_mask = @@ -226,6 +240,8 @@ .states = nm_chan_fsm_states, .num_states = ARRAY_SIZE(nm_chan_fsm_states), .event_names = nm_fsm_event_names, + .allstate_action = nm_chan_allstate, + .allstate_event_mask = X(NM_EV_SHUTDOWN_START), .log_subsys = DOML, }; diff --git a/src/common/nm_common_fsm.c b/src/common/nm_common_fsm.c index 7273e22..3b73605 100644 --- a/src/common/nm_common_fsm.c +++ b/src/common/nm_common_fsm.c @@ -27,6 +27,7 @@ { NM_EV_SW_ACT, "SW_ACT" }, { NM_EV_OPSTART_ACK, "OPSTART_ACK" }, { NM_EV_OPSTART_NACK, "OPSTART_NACK" }, + { NM_EV_SHUTDOWN_START, "SHUTDOWN_START" }, { NM_EV_RSL_UP, "RSL_UP" }, { NM_EV_RSL_DOWN, "RSL_DOWN" }, { NM_EV_PHYLINK_UP, "PHYLINK_UP" }, diff --git a/src/common/nm_radio_carrier_fsm.c b/src/common/nm_radio_carrier_fsm.c index 9070737..daae6a6 100644 --- a/src/common/nm_radio_carrier_fsm.c +++ b/src/common/nm_radio_carrier_fsm.c @@ -171,6 +171,20 @@ nm_rcarrier_fsm_state_chg(fi, NM_RCARRIER_ST_OP_DISABLED_OFFLINE); } +static void nm_rcarrier_allstate(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + struct gsm_bts_trx *trx = (struct gsm_bts_trx *)fi->priv; + + switch (event) { + case NM_EV_SHUTDOWN_START: + /* Announce we start shutting down */ + oml_mo_state_chg(&trx->mo, -1, -1, NM_STATE_SHUTDOWN); + break; + default: + OSMO_ASSERT(false); + } +} + static struct osmo_fsm_state nm_rcarrier_fsm_states[] = { [NM_RCARRIER_ST_OP_DISABLED_NOTINSTALLED] = { .in_event_mask = @@ -219,6 +233,8 @@ .states = nm_rcarrier_fsm_states, .num_states = ARRAY_SIZE(nm_rcarrier_fsm_states), .event_names = nm_fsm_event_names, + .allstate_action = nm_rcarrier_allstate, + .allstate_event_mask = X(NM_EV_SHUTDOWN_START), .log_subsys = DOML, }; -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/25490 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I0d14840a55642812b865687a6cb208e7ffd22829 Gerrit-Change-Number: 25490 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210916/61458ed9/attachment.htm>