fixeria has uploaded this change for review.

View Change

abis_nm: send Get Attributes to Rado Carrier MO(s)

Change-Id: If7b75689c12a253377f2747babd4d7ebd1db5f87
Related: OS#4505
---
M src/osmo-bsc/nm_rcarrier_fsm.c
1 file changed, 40 insertions(+), 0 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/59/34359/1
diff --git a/src/osmo-bsc/nm_rcarrier_fsm.c b/src/osmo-bsc/nm_rcarrier_fsm.c
index 824b2ed..71cb47f 100644
--- a/src/osmo-bsc/nm_rcarrier_fsm.c
+++ b/src/osmo-bsc/nm_rcarrier_fsm.c
@@ -58,6 +58,8 @@
{
struct gsm_bts_trx *trx = (struct gsm_bts_trx *)fi->priv;

+ trx->mo.get_attr_sent = false;
+ trx->mo.get_attr_rep_received = false;
trx->mo.set_attr_sent = false;
trx->mo.set_attr_ack_received = false;
trx->mo.adm_unlock_sent = false;
@@ -104,6 +106,22 @@
if (bts_setup_ramp_wait(trx->bts))
return;

+ if (!trx->mo.get_attr_sent && !trx->mo.get_attr_rep_received) {
+ uint8_t attr_buf[2]; /* enlarge if needed */
+ uint8_t *ptr = &attr_buf[0];
+
+ *(ptr++) = NM_ATT_SW_CONFIG;
+ if (is_ipa_abisip_bts(trx->bts))
+ *(ptr++) = NM_ATT_IPACC_SUPP_FEATURES;
+
+ OSMO_ASSERT((ptr - attr_buf) <= sizeof(attr_buf));
+ abis_nm_get_attr(trx->bts, NM_OC_RADIO_CARRIER, 0, trx->nr, 0xff,
+ &attr_buf[0], (ptr - attr_buf));
+ trx->mo.get_attr_sent = true;
+ }
+
+ /* OS#6172: old osmo-bts versions do NACK Get Attributes for Radio Carrier,
+ * so we do not check if trx->mo.get_attr_rep_received is set here. */
if (!trx->mo.set_attr_sent && !trx->mo.set_attr_ack_received) {
trx->mo.set_attr_sent = true;
msgb = nanobts_gen_set_radio_attr(trx->bts, trx);
@@ -151,6 +169,11 @@
const struct gsm_nm_state *new_state;

switch (event) {
+ case NM_EV_GET_ATTR_REP:
+ trx->mo.get_attr_rep_received = true;
+ trx->mo.get_attr_sent = false;
+ configure_loop(trx, &trx->mo.nm_state, false);
+ return;
case NM_EV_SET_ATTR_ACK:
trx->mo.set_attr_ack_received = true;
trx->mo.set_attr_sent = false;
@@ -201,6 +224,11 @@
const struct gsm_nm_state *new_state;

switch (event) {
+ case NM_EV_GET_ATTR_REP:
+ trx->mo.get_attr_rep_received = true;
+ trx->mo.get_attr_sent = false;
+ configure_loop(trx, &trx->mo.nm_state, true);
+ return;
case NM_EV_SET_ATTR_ACK:
trx->mo.set_attr_ack_received = true;
trx->mo.set_attr_sent = false;
@@ -349,6 +377,7 @@
[NM_RCARRIER_ST_OP_DISABLED_DEPENDENCY] = {
.in_event_mask =
X(NM_EV_STATE_CHG_REP) |
+ X(NM_EV_GET_ATTR_REP) |
X(NM_EV_SET_ATTR_ACK) |
X(NM_EV_SETUP_RAMP_READY),
.out_state_mask =
@@ -362,6 +391,7 @@
[NM_RCARRIER_ST_OP_DISABLED_OFFLINE] = {
.in_event_mask =
X(NM_EV_STATE_CHG_REP) |
+ X(NM_EV_GET_ATTR_REP) |
X(NM_EV_SET_ATTR_ACK) |
X(NM_EV_SETUP_RAMP_READY),
.out_state_mask =

To view, visit change 34359. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: If7b75689c12a253377f2747babd4d7ebd1db5f87
Gerrit-Change-Number: 34359
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-MessageType: newchange