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/+/25491 ) Change subject: nm_*_fsm: Move to state Disabled NotInstalled Locked when shtudown proc ends ...................................................................... nm_*_fsm: Move to state Disabled NotInstalled Locked when shtudown proc ends Change-Id: I5c070adbba6b4abb19467a02d6449a443657ae2b --- 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, 85 insertions(+), 20 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/91/25491/1 diff --git a/include/osmo-bts/nm_common_fsm.h b/include/osmo-bts/nm_common_fsm.h index 4dab0ea..13d7e0c 100644 --- a/include/osmo-bts/nm_common_fsm.h +++ b/include/osmo-bts/nm_common_fsm.h @@ -32,6 +32,7 @@ NM_EV_OPSTART_ACK, NM_EV_OPSTART_NACK, NM_EV_SHUTDOWN_START, + NM_EV_SHUTDOWN_FINISH, 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 cffe7cd..a9db76f 100644 --- a/src/common/bts_shutdown_fsm.c +++ b/src/common/bts_shutdown_fsm.c @@ -152,6 +152,10 @@ static void st_exit_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) { + struct gsm_bts *bts = (struct gsm_bts *)fi->priv; + + osmo_fsm_inst_dispatch(bts->site_mgr.mo.fi, NM_EV_SHUTDOWN_FINISH, NULL); + LOGPFSML(fi, LOGL_NOTICE, "Shutdown process completed successfuly, exiting process\n"); exit(0); } diff --git a/src/common/nm_bb_transc_fsm.c b/src/common/nm_bb_transc_fsm.c index 342699c..c270f7d 100644 --- a/src/common/nm_bb_transc_fsm.c +++ b/src/common/nm_bb_transc_fsm.c @@ -41,6 +41,17 @@ #define nm_bb_transc_fsm_state_chg(fi, NEXT_STATE) \ osmo_fsm_inst_state_chg(fi, NEXT_STATE, 0, 0) +static void ev_dispatch_children(struct gsm_bts_bb_trx *bb_transc, uint32_t event) +{ + struct gsm_bts_trx *trx = gsm_bts_bb_trx_get_trx(bb_transc); + uint8_t tn; + + for (tn = 0; tn < TRX_NR_TS; tn++) { + struct gsm_bts_trx_ts *ts = &trx->ts[tn]; + osmo_fsm_inst_dispatch(ts->mo.fi, event, NULL); + } +} + ////////////////////////// // FSM STATE ACTIONS ////////////////////////// @@ -184,8 +195,6 @@ 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: @@ -193,10 +202,12 @@ 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); - } + ev_dispatch_children(bb_transc, event); + break; + case NM_EV_SHUTDOWN_FINISH: + /* Propagate event to children: */ + ev_dispatch_children(bb_transc, event); + nm_bb_transc_fsm_state_chg(fi, NM_BBTRANSC_ST_OP_DISABLED_NOTINSTALLED); break; default: OSMO_ASSERT(false); @@ -213,6 +224,7 @@ X(NM_EV_PHYLINK_DOWN) | X(NM_EV_DISABLE), .out_state_mask = + X(NM_BBTRANSC_ST_OP_DISABLED_NOTINSTALLED) | X(NM_BBTRANSC_ST_OP_DISABLED_OFFLINE), .name = "DISABLED_NOTINSTALLED", .onenter = st_op_disabled_notinstalled_on_enter, @@ -228,6 +240,7 @@ X(NM_EV_PHYLINK_DOWN) | X(NM_EV_DISABLE), .out_state_mask = + X(NM_BBTRANSC_ST_OP_DISABLED_NOTINSTALLED) | X(NM_BBTRANSC_ST_OP_ENABLED), .name = "DISABLED_OFFLINE", .onenter = st_op_disabled_offline_on_enter, @@ -239,6 +252,7 @@ X(NM_EV_PHYLINK_DOWN) | X(NM_EV_DISABLE), .out_state_mask = + X(NM_BBTRANSC_ST_OP_DISABLED_NOTINSTALLED) | X(NM_BBTRANSC_ST_OP_DISABLED_OFFLINE), .name = "ENABLED", .onenter = st_op_enabled_on_enter, @@ -252,7 +266,8 @@ .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), + .allstate_event_mask = X(NM_EV_SHUTDOWN_START) | + X(NM_EV_SHUTDOWN_FINISH), .log_subsys = DOML, }; diff --git a/src/common/nm_bts_fsm.c b/src/common/nm_bts_fsm.c index 93e5740..9210e7a 100644 --- a/src/common/nm_bts_fsm.c +++ b/src/common/nm_bts_fsm.c @@ -41,6 +41,15 @@ #define nm_bts_fsm_state_chg(fi, NEXT_STATE) \ osmo_fsm_inst_state_chg(fi, NEXT_STATE, 0, 0) +static void ev_dispatch_children(struct gsm_bts *bts, uint32_t event) +{ + struct gsm_bts_trx *trx; + llist_for_each_entry(trx, &bts->trx_list, list) { + osmo_fsm_inst_dispatch(trx->mo.fi, event, NULL); + osmo_fsm_inst_dispatch(trx->bb_transc.mo.fi, event, NULL); + } +} + ////////////////////////// // FSM STATE ACTIONS ////////////////////////// @@ -105,7 +114,6 @@ 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: @@ -113,10 +121,12 @@ 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); - } + ev_dispatch_children(bts, event); + break; + case NM_EV_SHUTDOWN_FINISH: + /* Propagate event to children: */ + ev_dispatch_children(bts, event); + nm_bts_fsm_state_chg(fi, NM_BTS_ST_OP_DISABLED_NOTINSTALLED); break; default: OSMO_ASSERT(false); @@ -128,6 +138,7 @@ .in_event_mask = X(NM_EV_SW_ACT), .out_state_mask = + X(NM_BTS_ST_OP_DISABLED_NOTINSTALLED) | X(NM_BTS_ST_OP_DISABLED_OFFLINE), .name = "DISABLED_NOTINSTALLED", .onenter = st_op_disabled_notinstalled_on_enter, @@ -138,6 +149,7 @@ X(NM_EV_OPSTART_ACK) | X(NM_EV_OPSTART_NACK), .out_state_mask = + X(NM_BTS_ST_OP_DISABLED_NOTINSTALLED) | X(NM_BTS_ST_OP_ENABLED), .name = "DISABLED_OFFLINE", .onenter = st_op_disabled_offline_on_enter, @@ -145,7 +157,8 @@ }, [NM_BTS_ST_OP_ENABLED] = { .in_event_mask = 0, - .out_state_mask = 0, + .out_state_mask = + X(NM_BTS_ST_OP_DISABLED_NOTINSTALLED), .name = "ENABLED", .onenter = st_op_enabled_on_enter, .action = st_op_enabled, @@ -158,7 +171,8 @@ .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), + .allstate_event_mask = X(NM_EV_SHUTDOWN_START) | + X(NM_EV_SHUTDOWN_FINISH), .log_subsys = DOML, }; diff --git a/src/common/nm_bts_sm_fsm.c b/src/common/nm_bts_sm_fsm.c index e958917..267341e 100644 --- a/src/common/nm_bts_sm_fsm.c +++ b/src/common/nm_bts_sm_fsm.c @@ -41,6 +41,13 @@ #define nm_bts_sm_fsm_state_chg(fi, NEXT_STATE) \ osmo_fsm_inst_state_chg(fi, NEXT_STATE, 0, 0) + +static void ev_dispatch_children(struct gsm_bts_sm *site_mgr, uint32_t event) +{ + struct gsm_bts *bts = gsm_bts_sm_get_bts(site_mgr); + osmo_fsm_inst_dispatch(bts->mo.fi, event, NULL); +} + ////////////////////////// // FSM STATE ACTIONS ////////////////////////// @@ -105,7 +112,6 @@ 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: @@ -113,7 +119,12 @@ 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); + ev_dispatch_children(site_mgr, event); + break; + case NM_EV_SHUTDOWN_FINISH: + /* Propagate event to children: */ + ev_dispatch_children(site_mgr, event); + nm_bts_sm_fsm_state_chg(fi, NM_BTS_SM_ST_OP_DISABLED_NOTINSTALLED); break; default: OSMO_ASSERT(false); @@ -125,6 +136,7 @@ .in_event_mask = X(NM_EV_SW_ACT), .out_state_mask = + X(NM_BTS_SM_ST_OP_DISABLED_NOTINSTALLED) | X(NM_BTS_SM_ST_OP_DISABLED_OFFLINE), .name = "DISABLED_NOTINSTALLED", .onenter = st_op_disabled_notinstalled_on_enter, @@ -135,6 +147,7 @@ X(NM_EV_OPSTART_ACK) | X(NM_EV_OPSTART_NACK), .out_state_mask = + X(NM_BTS_SM_ST_OP_DISABLED_NOTINSTALLED) | X(NM_BTS_SM_ST_OP_ENABLED), .name = "DISABLED_OFFLINE", .onenter = st_op_disabled_offline_on_enter, @@ -142,7 +155,8 @@ }, [NM_BTS_SM_ST_OP_ENABLED] = { .in_event_mask = 0, - .out_state_mask = 0, + .out_state_mask = + X(NM_BTS_SM_ST_OP_DISABLED_NOTINSTALLED), .name = "ENABLED", .onenter = st_op_enabled_on_enter, .action = st_op_enabled, @@ -155,7 +169,8 @@ .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), + .allstate_event_mask = X(NM_EV_SHUTDOWN_START) | + X(NM_EV_SHUTDOWN_FINISH), .log_subsys = DOML, }; diff --git a/src/common/nm_channel_fsm.c b/src/common/nm_channel_fsm.c index fc3c8a9..e6c296f 100644 --- a/src/common/nm_channel_fsm.c +++ b/src/common/nm_channel_fsm.c @@ -177,6 +177,9 @@ /* Announce we start shutting down */ oml_mo_state_chg(&ts->mo, -1, -1, NM_STATE_SHUTDOWN); break; + case NM_EV_SHUTDOWN_FINISH: + nm_chan_fsm_state_chg(fi, NM_CHAN_ST_OP_DISABLED_NOTINSTALLED); + break; default: OSMO_ASSERT(false); } @@ -187,6 +190,7 @@ .in_event_mask = X(NM_EV_BBTRANSC_INSTALLED), .out_state_mask = + X(NM_CHAN_ST_OP_DISABLED_NOTINSTALLED) | X(NM_CHAN_ST_OP_DISABLED_OFFLINE) | X(NM_CHAN_ST_OP_DISABLED_DEPENDENCY), .name = "DISABLED_NOTINSTALLED", @@ -202,6 +206,7 @@ X(NM_EV_BBTRANSC_DISABLED) | X(NM_EV_RCARRIER_DISABLED), .out_state_mask = + X(NM_CHAN_ST_OP_DISABLED_NOTINSTALLED) | X(NM_CHAN_ST_OP_DISABLED_OFFLINE) | X(NM_CHAN_ST_OP_ENABLED), /* backward compatibility, buggy BSC */ .name = "DISABLED_DEPENDENCY", @@ -215,6 +220,7 @@ X(NM_EV_BBTRANSC_DISABLED) | X(NM_EV_RCARRIER_DISABLED), .out_state_mask = + X(NM_CHAN_ST_OP_DISABLED_NOTINSTALLED) | X(NM_CHAN_ST_OP_ENABLED) | X(NM_CHAN_ST_OP_DISABLED_DEPENDENCY), .name = "DISABLED_OFFLINE", @@ -227,6 +233,7 @@ X(NM_EV_RCARRIER_DISABLED) | X(NM_EV_DISABLE), .out_state_mask = + X(NM_CHAN_ST_OP_DISABLED_NOTINSTALLED) | X(NM_CHAN_ST_OP_DISABLED_OFFLINE) | X(NM_CHAN_ST_OP_DISABLED_DEPENDENCY), .name = "ENABLED", @@ -241,7 +248,8 @@ .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), + .allstate_event_mask = X(NM_EV_SHUTDOWN_START) | + X(NM_EV_SHUTDOWN_FINISH), .log_subsys = DOML, }; diff --git a/src/common/nm_common_fsm.c b/src/common/nm_common_fsm.c index 3b73605..2182fef 100644 --- a/src/common/nm_common_fsm.c +++ b/src/common/nm_common_fsm.c @@ -28,6 +28,7 @@ { NM_EV_OPSTART_ACK, "OPSTART_ACK" }, { NM_EV_OPSTART_NACK, "OPSTART_NACK" }, { NM_EV_SHUTDOWN_START, "SHUTDOWN_START" }, + { NM_EV_SHUTDOWN_FINISH, "SHUTDOWN_FINISH" }, { 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 daae6a6..2772f19 100644 --- a/src/common/nm_radio_carrier_fsm.c +++ b/src/common/nm_radio_carrier_fsm.c @@ -180,6 +180,9 @@ /* Announce we start shutting down */ oml_mo_state_chg(&trx->mo, -1, -1, NM_STATE_SHUTDOWN); break; + case NM_EV_SHUTDOWN_FINISH: + nm_rcarrier_fsm_state_chg(fi, NM_RCARRIER_ST_OP_DISABLED_NOTINSTALLED); + break; default: OSMO_ASSERT(false); } @@ -195,6 +198,7 @@ X(NM_EV_PHYLINK_DOWN) | X(NM_EV_DISABLE), .out_state_mask = + X(NM_RCARRIER_ST_OP_DISABLED_NOTINSTALLED) | X(NM_RCARRIER_ST_OP_DISABLED_OFFLINE), .name = "DISABLED_NOTINSTALLED", .onenter = st_op_disabled_notinstalled_on_enter, @@ -210,6 +214,7 @@ X(NM_EV_PHYLINK_DOWN) | X(NM_EV_DISABLE), .out_state_mask = + X(NM_RCARRIER_ST_OP_DISABLED_NOTINSTALLED) | X(NM_RCARRIER_ST_OP_ENABLED), .name = "DISABLED_OFFLINE", .onenter = st_op_disabled_offline_on_enter, @@ -221,6 +226,7 @@ X(NM_EV_PHYLINK_DOWN) | X(NM_EV_DISABLE), .out_state_mask = + X(NM_RCARRIER_ST_OP_DISABLED_NOTINSTALLED) | X(NM_RCARRIER_ST_OP_DISABLED_OFFLINE), .name = "ENABLED", .onenter = st_op_enabled_on_enter, @@ -234,7 +240,8 @@ .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), + .allstate_event_mask = X(NM_EV_SHUTDOWN_START) | + X(NM_EV_SHUTDOWN_FINISH), .log_subsys = DOML, }; -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/25491 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: I5c070adbba6b4abb19467a02d6449a443657ae2b Gerrit-Change-Number: 25491 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/c1f16c67/attachment.htm>