Actions
Bug #4755
closedPremature OML Radio Carrier(00,00,ff) Opstart
Start date:
09/16/2020
Due date:
% Done:
100%
Spec Reference:
Description
During the A-bis/OML bootstrapping, osmo-bsc sends Opstart to the Radio Carrier MO twice:
$ tshark -r /tmp/oml.pcap -Y "gsm_abis_oml.fom.obj_class == 0x02" 14 0.009785 127.0.0.1 → 127.0.0.1 OML 88 OML Radio Carrier(00,00,ff) State Changed Event Report NULL Power off Locked 37 0.019692 127.0.0.1 → 127.0.0.1 OML 88 OML Radio Carrier(00,00,ff) State Changed Event Report Disabled OK Locked 39 0.021458 127.0.0.1 → 127.0.0.1 OML 80 OML Radio Carrier(00,00,ff) Software Activated Report 89 0.039537 127.0.0.1 → 127.0.0.1 OML 80 OML Radio Carrier(00,00,ff) Opstart (!) 90 0.039675 127.0.0.1 → 127.0.0.1 OML 80 OML Radio Carrier(00,00,ff) Opstart ACK 91 0.039967 127.0.0.1 → 127.0.0.1 OML 87 OML Radio Carrier(00,00,ff) Set Radio Carrier Attributes 92 0.041042 127.0.0.1 → 127.0.0.1 OML 87 OML Radio Carrier(00,00,ff) Set Radio Carrier Attributes ACK 101 0.045359 127.0.0.1 → 127.0.0.1 OML 82 OML Radio Carrier(00,00,ff) Change Administrative State Unlocked 102 0.046372 127.0.0.1 → 127.0.0.1 OML 82 OML Radio Carrier(00,00,ff) Change Administrative State ACK Unlocked 103 0.046480 127.0.0.1 → 127.0.0.1 OML 88 OML Radio Carrier(00,00,ff) State Changed Event Report Disabled OK Unlocked 105 0.047801 127.0.0.1 → 127.0.0.1 OML 80 OML Radio Carrier(00,00,ff) Opstart (!) 106 0.048047 127.0.0.1 → 127.0.0.1 OML 82 OML Radio Carrier(00,00,ff) Opstart NACK
According to 3GPP TS 12.21, figure 2, we shall send it once, after the "Attribute setting" step. Therefore, the first Opstart (packet 89) is premature, and shall not be sent. The code in osmo-bsc looks correct: we send the Opstart in sw_activ_rep() after sending of both Set Radio Carrier Attributes and Change Administrative State.
case NM_OC_RADIO_CARRIER: {
/*
* Locking the radio carrier will make it go
* offline again and we would come here. The
* framework should determine that there was
* no change and avoid recursion.
*
* This code is here to make sure that on start
* a TRX remains locked.
*/
int rc_state = trx->mo.nm_state.administrative;
/* Patch ARFCN into radio attribute */
struct msgb *msgb = nanobts_attr_radio_get(trx->bts, trx);
abis_nm_set_radio_attr(trx, msgb->data, msgb->len);
msgb_free(msgb);
abis_nm_chg_adm_state(trx->bts, foh->obj_class,
trx->bts->bts_nr, trx->nr, 0xff,
rc_state);
abis_nm_opstart(trx->bts, foh->obj_class, trx->bts->bts_nr,
trx->nr, 0xff);
break;
}
Related issues
Actions