diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-07-08 18:41:05 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2014-04-06 08:58:18 +0200 |
commit | c7bc0fec8a780691546f912653f8cbd2433bbaed (patch) | |
tree | c8f7bccdc606aeaaa8e4d95c9ccebf542b74ca56 | |
parent | 2686a02f0eee73171063fed6add378b141c8bed2 (diff) |
Fix: Retrieve ARFCN (from OML) for TRX other than C0
-rw-r--r-- | src/common/oml.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/common/oml.c b/src/common/oml.c index 6d36b3db..f0d32de7 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -592,6 +592,25 @@ static int oml_rx_set_radio_attr(struct gsm_bts_trx *trx, struct msgb *msg) trx->arfcn_num = length; } else trx->arfcn_num = 0; +#else + if (trx != trx->bts->c0 && TLVP_PRESENT(&tp, NM_ATT_ARFCN_LIST)) { + const uint8_t *value = TLVP_VAL(&tp, NM_ATT_ARFCN_LIST); + uint16_t _value; + uint16_t length = TLVP_LEN(&tp, NM_ATT_ARFCN_LIST); + uint16_t arfcn; + if (length != 2) { + LOGP(DOML, LOGL_ERROR, "Expecting only one ARFCN, " + "because hopping not supported\n"); + /* FIXME: send NACK */ + return -ENOTSUP; + } + memcpy(&_value, value, 2); + arfcn = ntohs(_value); + value += 2; + if (arfcn > 1024) + return oml_fom_ack_nack(msg, NM_NACK_FREQ_NOTAVAIL); + trx->arfcn = arfcn; + } #endif /* call into BTS driver to apply new attributes to hardware */ return bts_model_apply_oml(trx->bts, msg, tp_merged, NM_OC_RADIO_CARRIER, trx); |