aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmo-bts/gsm_data.h2
-rw-r--r--src/common/oml.c15
2 files changed, 13 insertions, 4 deletions
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h
index 7a486670..c75f8284 100644
--- a/include/osmo-bts/gsm_data.h
+++ b/include/osmo-bts/gsm_data.h
@@ -127,6 +127,8 @@ enum lchan_ciph_state {
#include "openbsc/gsm_data_shared.h"
void lchan_set_state(struct gsm_lchan *lchan, enum gsm_lchan_state state);
+int conf_lchans_as_pchan(struct gsm_bts_trx_ts *ts,
+ enum gsm_phys_chan_config pchan);
/* cipher code */
#define CIPHER_A5(x) (1 << (x-1))
diff --git a/src/common/oml.c b/src/common/oml.c
index 38df11ae..89708583 100644
--- a/src/common/oml.c
+++ b/src/common/oml.c
@@ -685,10 +685,8 @@ static int oml_rx_set_radio_attr(struct gsm_bts_trx *trx, struct msgb *msg)
return bts_model_apply_oml(trx->bts, msg, tp_merged, NM_OC_RADIO_CARRIER, trx);
}
-static int conf_lchans_for_pchan(struct gsm_bts_trx_ts *ts)
+static int conf_lchans(struct gsm_bts_trx_ts *ts)
{
- struct gsm_lchan *lchan;
- unsigned int i;
enum gsm_phys_chan_config pchan = ts->pchan;
/* RSL_MT_IPAC_PDCH_ACT style dyn PDCH */
@@ -696,6 +694,15 @@ static int conf_lchans_for_pchan(struct gsm_bts_trx_ts *ts)
pchan = ts->flags & TS_F_PDCH_ACTIVE? GSM_PCHAN_PDCH
: GSM_PCHAN_TCH_F;
+ return conf_lchans_as_pchan(ts, pchan);
+}
+
+int conf_lchans_as_pchan(struct gsm_bts_trx_ts *ts,
+ enum gsm_phys_chan_config pchan)
+{
+ struct gsm_lchan *lchan;
+ unsigned int i;
+
switch (pchan) {
case GSM_PCHAN_CCCH_SDCCH4_CBCH:
/* fallthrough */
@@ -797,7 +804,7 @@ static int oml_rx_set_chan_attr(struct gsm_bts_trx_ts *ts, struct msgb *msg)
if (TLVP_PRESENT(&tp, NM_ATT_CHAN_COMB)) {
uint8_t comb = *TLVP_VAL(&tp, NM_ATT_CHAN_COMB);
ts->pchan = abis_nm_pchan4chcomb(comb);
- rc = conf_lchans_for_pchan(ts);
+ rc = conf_lchans(ts);
if (rc < 0) {
talloc_free(tp_merged);
/* Send NACK */