aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2017-06-27 10:02:59 +0200
committerHarald Welte <laforge@gnumonks.org>2017-09-02 19:44:54 +0000
commit9e36dca82aa139f10e25ca037cf4a7cc03eafea0 (patch)
treeb6314a422d9499a15933e544247a748fc56d3ed9
parentbbf6c435f60083b3e964843a6461df5bdc04fd85 (diff)
trx: avoid deactivating lchan on LCHAN_REL_ACT_REACT
* do not deactivate lchan when called with LCHAN_REL_ACT_REACT * add fixme comment It's unclear yet if any special steps are required for osmo-bts-trx so let's just make it compatible with setups [1] using BS_AG_BLKS_RES != 1 for now. Background: CCCH is auto activated by some OsmoBTS - before we receive SI3, see 4a8582846281322e8d7dfc577b18767cf35c24d1. To accommodate for that we deactivate CCCH in common/rsl.c, which triggers BTS-model specific callback sapi_deactivate_cb() which updates parameters and activates it again. In case of osmo-bts-trx there is no auto-activation and (seems to be) no need in special interaction with hw to activate channel (no lchan_activate()) hence we can just skip entire deactivate/setup/activate again routine. [1] "channel-descrption bs-ag-blks-res N" in OpenBSC config file. Related: OS#1575 Change-Id: I20b89ba1e43d1414180b083cd1e085eeffe5d513
-rw-r--r--include/osmo-bts/rsl.h2
-rw-r--r--src/osmo-bts-trx/l1_if.c6
2 files changed, 7 insertions, 1 deletions
diff --git a/include/osmo-bts/rsl.h b/include/osmo-bts/rsl.h
index d5d0f1a3..ddd756e8 100644
--- a/include/osmo-bts/rsl.h
+++ b/include/osmo-bts/rsl.h
@@ -9,7 +9,7 @@ enum {
LCHAN_REL_ACT_RSL,
LCHAN_REL_ACT_PCU,
LCHAN_REL_ACT_OML,
- LCHAN_REL_ACT_REACT,
+ LCHAN_REL_ACT_REACT, /* remove once auto-activation hack is removed from opstart_compl() */
};
#define LCHAN_FN_DUMMY 0xFFFFFFFF
diff --git a/src/osmo-bts-trx/l1_if.c b/src/osmo-bts-trx/l1_if.c
index c629a61b..3c11dfd5 100644
--- a/src/osmo-bts-trx/l1_if.c
+++ b/src/osmo-bts-trx/l1_if.c
@@ -109,6 +109,12 @@ int bts_model_lchan_deactivate(struct gsm_lchan *lchan)
struct phy_instance *pinst = trx_phy_instance(lchan->ts->trx);
struct trx_l1h *l1h = pinst->u.osmotrx.hdl;
+ if (lchan->rel_act_kind == LCHAN_REL_ACT_REACT) {
+ lchan->rel_act_kind = LCHAN_REL_ACT_RSL;
+ /* FIXME: perform whatever is needed (if any) to set proper PCH/AGCH allocation according to
+ 3GPP TS 44.018 Table 10.5.2.11.1 using num_agch(lchan->ts->trx, "TRX L1"); function */
+ return 0;
+ }
/* set lchan inactive */
lchan_set_state(lchan, LCHAN_S_NONE);