fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/34470?usp=email )
Change subject: abis_nm: handle NM_EV_SW_ACT_REP in ST_OP_DISABLED_{DEPENDENCY,OFFLINE} ...................................................................... abis_nm: handle NM_EV_SW_ACT_REP in ST_OP_DISABLED_{DEPENDENCY,OFFLINE} 3GPP TS 52.021 does not strictly mandate that the SW Activated Report can only be received in state DISABLED/OFFLINE. The only requirement is that the software load procedure (if needed) and activation is to be performed in this state. The successful outcome of software activation procedure is indicated by the BTS using the above-mentioned SW Activated Report message, which may be received in ST_OP_DISABLED_{DEPENDENCY,OFFLINE} too. The MO state changes are triggered by the State Changed Event Report messages, and happen asynchronously with the software activation. This patch fixes the following warnings seen with a nanoBTS: NM_BTS_OP(bts2){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_GPRS_NSE_OP(nse2){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_GPRS_CELL_OP(gprs-cell2){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_GPRS_NSVC_OP(nsvc0){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_GPRS_NSVC_OP(nsvc1){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_BB_TRANSC_OP(bts2-trx0){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_CHAN_OP(bts2-trx0-ts0){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_CHAN_OP(bts2-trx0-ts1){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_CHAN_OP(bts2-trx0-ts2){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_CHAN_OP(bts2-trx0-ts3){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_CHAN_OP(bts2-trx0-ts4){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_CHAN_OP(bts2-trx0-ts5){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_CHAN_OP(bts2-trx0-ts6){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_CHAN_OP(bts2-trx0-ts7){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted NM_RCARRIER_OP(bts2-trx0){DISABLED_OFFLINE}: Event SW_ACT_REP not permitted The following warning is still expected to show up though: NM_BTS_SM_OP(bts_sm){ENABLED}: Event SW_ACT_REP not permitted but is caused by a different problem, which is to be fixed later. Change-Id: I00a423adcde5c34977f4c4dad920874687fa493c --- M src/osmo-bsc/nm_bb_transc_fsm.c M src/osmo-bsc/nm_bts_fsm.c M src/osmo-bsc/nm_bts_sm_fsm.c M src/osmo-bsc/nm_channel_fsm.c M src/osmo-bsc/nm_gprs_cell_fsm.c M src/osmo-bsc/nm_gprs_nse_fsm.c M src/osmo-bsc/nm_gprs_nsvc_fsm.c M src/osmo-bsc/nm_rcarrier_fsm.c 8 files changed, 103 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/70/34470/1 diff --git a/src/osmo-bsc/nm_bb_transc_fsm.c b/src/osmo-bsc/nm_bb_transc_fsm.c index b68dc67..ce2f3e9 100644 --- a/src/osmo-bsc/nm_bb_transc_fsm.c +++ b/src/osmo-bsc/nm_bb_transc_fsm.c @@ -175,6 +175,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(bb_transc, &bb_transc->mo.nm_state, false); + break; case NM_EV_GET_ATTR_REP: bb_transc->mo.get_attr_rep_received = true; bb_transc->mo.get_attr_sent = false; @@ -234,6 +237,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(bb_transc, &bb_transc->mo.nm_state, true); + break; case NM_EV_GET_ATTR_REP: bb_transc->mo.get_attr_rep_received = true; bb_transc->mo.get_attr_sent = false; @@ -375,6 +381,7 @@ }, [NM_BB_TRANSC_ST_OP_DISABLED_DEPENDENCY] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_GET_ATTR_REP) | X(NM_EV_RSL_CONNECT_ACK) | @@ -390,6 +397,7 @@ }, [NM_BB_TRANSC_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_GET_ATTR_REP) | X(NM_EV_RSL_CONNECT_ACK) | diff --git a/src/osmo-bsc/nm_bts_fsm.c b/src/osmo-bsc/nm_bts_fsm.c index 544efb4..937b63d 100644 --- a/src/osmo-bsc/nm_bts_fsm.c +++ b/src/osmo-bsc/nm_bts_fsm.c @@ -179,6 +179,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(bts, &bts->mo.nm_state, false); + break; case NM_EV_GET_ATTR_REP: rx_get_attr_rep(bts, false); return; @@ -232,6 +235,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(bts, &bts->mo.nm_state, true); + break; case NM_EV_GET_ATTR_REP: rx_get_attr_rep(bts, true); return; @@ -366,6 +372,7 @@ }, [NM_BTS_ST_OP_DISABLED_DEPENDENCY] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_GET_ATTR_REP) | X(NM_EV_SET_ATTR_ACK) | @@ -380,6 +387,7 @@ }, [NM_BTS_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_GET_ATTR_REP) | X(NM_EV_SET_ATTR_ACK) | diff --git a/src/osmo-bsc/nm_bts_sm_fsm.c b/src/osmo-bsc/nm_bts_sm_fsm.c index cb67099..70b0656 100644 --- a/src/osmo-bsc/nm_bts_sm_fsm.c +++ b/src/osmo-bsc/nm_bts_sm_fsm.c @@ -120,6 +120,7 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: case NM_EV_SETUP_RAMP_READY: break; case NM_EV_STATE_CHG_REP: @@ -160,6 +161,9 @@ struct gsm_bts_sm *site_mgr = (struct gsm_bts_sm *)fi->priv; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(site_mgr, &site_mgr->mo.nm_state, true); + break; case NM_EV_STATE_CHG_REP: nsd = (struct nm_statechg_signal_data *)data; new_state = &nsd->new_state; @@ -255,6 +259,7 @@ }, [NM_BTS_SM_ST_OP_DISABLED_DEPENDENCY] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SETUP_RAMP_READY), .out_state_mask = @@ -266,6 +271,7 @@ }, [NM_BTS_SM_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SETUP_RAMP_READY), .out_state_mask = diff --git a/src/osmo-bsc/nm_channel_fsm.c b/src/osmo-bsc/nm_channel_fsm.c index af201cf..1309ebd 100644 --- a/src/osmo-bsc/nm_channel_fsm.c +++ b/src/osmo-bsc/nm_channel_fsm.c @@ -136,6 +136,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(ts, &ts->mo.nm_state, false); + break; case NM_EV_SET_ATTR_ACK: ts->mo.set_attr_ack_received = true; ts->mo.set_attr_sent = false; @@ -186,6 +189,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(ts, &ts->mo.nm_state, true); + break; case NM_EV_SET_ATTR_ACK: ts->mo.set_attr_ack_received = true; ts->mo.set_attr_sent = false; @@ -312,6 +318,7 @@ }, [NM_CHAN_ST_OP_DISABLED_DEPENDENCY] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SET_ATTR_ACK) | X(NM_EV_SETUP_RAMP_READY), @@ -325,6 +332,7 @@ }, [NM_CHAN_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SET_ATTR_ACK) | X(NM_EV_SETUP_RAMP_READY), diff --git a/src/osmo-bsc/nm_gprs_cell_fsm.c b/src/osmo-bsc/nm_gprs_cell_fsm.c index 2f139a6..40514a8 100644 --- a/src/osmo-bsc/nm_gprs_cell_fsm.c +++ b/src/osmo-bsc/nm_gprs_cell_fsm.c @@ -145,6 +145,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(cell, &cell->mo.nm_state, false); + break; case NM_EV_SET_ATTR_ACK: cell->mo.set_attr_ack_received = true; cell->mo.set_attr_sent = false; @@ -196,6 +199,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(cell, &cell->mo.nm_state, true); + break; case NM_EV_SET_ATTR_ACK: cell->mo.set_attr_ack_received = true; cell->mo.set_attr_sent = false; @@ -325,6 +331,7 @@ }, [NM_GPRS_CELL_ST_OP_DISABLED_DEPENDENCY] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SET_ATTR_ACK) | X(NM_EV_SETUP_RAMP_READY), @@ -338,6 +345,7 @@ }, [NM_GPRS_CELL_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SET_ATTR_ACK) | X(NM_EV_SETUP_RAMP_READY), diff --git a/src/osmo-bsc/nm_gprs_nse_fsm.c b/src/osmo-bsc/nm_gprs_nse_fsm.c index 882dbaf..df4113c 100644 --- a/src/osmo-bsc/nm_gprs_nse_fsm.c +++ b/src/osmo-bsc/nm_gprs_nse_fsm.c @@ -146,6 +146,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(nse, &nse->mo.nm_state, false); + break; case NM_EV_SET_ATTR_ACK: nse->mo.set_attr_ack_received = true; nse->mo.set_attr_sent = false; @@ -197,6 +200,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(nse, &nse->mo.nm_state, true); + break; case NM_EV_SET_ATTR_ACK: nse->mo.set_attr_ack_received = true; nse->mo.set_attr_sent = false; @@ -327,6 +333,7 @@ }, [NM_GPRS_NSE_ST_OP_DISABLED_DEPENDENCY] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SET_ATTR_ACK) | X(NM_EV_SETUP_RAMP_READY), @@ -340,6 +347,7 @@ }, [NM_GPRS_NSE_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SET_ATTR_ACK) | X(NM_EV_SETUP_RAMP_READY), diff --git a/src/osmo-bsc/nm_gprs_nsvc_fsm.c b/src/osmo-bsc/nm_gprs_nsvc_fsm.c index d441f58..e6e3b39 100644 --- a/src/osmo-bsc/nm_gprs_nsvc_fsm.c +++ b/src/osmo-bsc/nm_gprs_nsvc_fsm.c @@ -176,6 +176,7 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: case NM_EV_FEATURE_NEGOTIATED: configure_loop(nsvc, &nsvc->mo.nm_state, false); return; @@ -229,6 +230,7 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: case NM_EV_FEATURE_NEGOTIATED: configure_loop(nsvc, &nsvc->mo.nm_state, true); return; @@ -355,6 +357,7 @@ }, [NM_GPRS_NSVC_ST_OP_DISABLED_DEPENDENCY] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_FEATURE_NEGOTIATED) | X(NM_EV_SET_ATTR_ACK) | @@ -369,6 +372,7 @@ }, [NM_GPRS_NSVC_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_FEATURE_NEGOTIATED) | X(NM_EV_SET_ATTR_ACK) | diff --git a/src/osmo-bsc/nm_rcarrier_fsm.c b/src/osmo-bsc/nm_rcarrier_fsm.c index 824b2ed..15e7c9f 100644 --- a/src/osmo-bsc/nm_rcarrier_fsm.c +++ b/src/osmo-bsc/nm_rcarrier_fsm.c @@ -151,6 +151,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(trx, &trx->mo.nm_state, false); + break; case NM_EV_SET_ATTR_ACK: trx->mo.set_attr_ack_received = true; trx->mo.set_attr_sent = false; @@ -201,6 +204,9 @@ const struct gsm_nm_state *new_state; switch (event) { + case NM_EV_SW_ACT_REP: + configure_loop(trx, &trx->mo.nm_state, true); + break; case NM_EV_SET_ATTR_ACK: trx->mo.set_attr_ack_received = true; trx->mo.set_attr_sent = false; @@ -348,6 +354,7 @@ }, [NM_RCARRIER_ST_OP_DISABLED_DEPENDENCY] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SET_ATTR_ACK) | X(NM_EV_SETUP_RAMP_READY), @@ -361,6 +368,7 @@ }, [NM_RCARRIER_ST_OP_DISABLED_OFFLINE] = { .in_event_mask = + X(NM_EV_SW_ACT_REP) | X(NM_EV_STATE_CHG_REP) | X(NM_EV_SET_ATTR_ACK) | X(NM_EV_SETUP_RAMP_READY), -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/34470?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I00a423adcde5c34977f4c4dad920874687fa493c Gerrit-Change-Number: 34470 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanits...@sysmocom.de> Gerrit-MessageType: newchange