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

Reply via email to