From: Max <msuraev(a)sysmocom.de>
Explicitly store and use "center" arfcn used by each dsp (1 dsp
corresponds to 1 phy link).
---
include/osmo-bts/phy_link.h | 3 ++-
src/osmo-bts-octphy/l1_oml.c | 9 ++++++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/include/osmo-bts/phy_link.h b/include/osmo-bts/phy_link.h
index e31971e..a559aa3 100644
--- a/include/osmo-bts/phy_link.h
+++ b/include/osmo-bts/phy_link.h
@@ -62,7 +62,8 @@ struct phy_link {
uint32_t rf_port_index;
uint32_t rx_gain_db;
uint32_t tx_atten_db;
-
+ /* arfcn used by TRX with id 0 */
+ uint16_t center_arfcn;
struct octphy_hdl *hdl;
} octphy;
} u;
diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c
index bdf39bf..14181dc 100644
--- a/src/osmo-bts-octphy/l1_oml.c
+++ b/src/osmo-bts-octphy/l1_oml.c
@@ -1304,7 +1304,14 @@ int l1if_trx_open(struct gsm_bts_trx *trx)
oc->TrxId.byTrxId = pinst->u.octphy.trx_id;
oc->Config.ulBand = osmocom_to_octphy_band(trx->bts->band, trx->arfcn);
oc->Config.usArfcn = trx->arfcn;
- oc->Config.usCentreArfcn = trx->bts->c0->arfcn;
+
+ if (pinst->u.octphy.trx_id)
+ oc->Config.usCentreArfcn = plink->u.octphy.center_arfcn;
+ else {
+ oc->Config.usCentreArfcn = trx->arfcn;
+ plink->u.octphy.center_arfcn = trx->arfcn;
+ }
+
oc->Config.usTsc = trx->bts->bsic & 0x7;
oc->Config.usBcchArfcn = trx->bts->c0->arfcn;
oc->RfConfig.ulRxGainDb = plink->u.octphy.rx_gain_db;
--
2.7.4