From 80ccb952676cb4a068410991c5d53d19f228f695 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Tue, 15 Nov 2016 23:23:42 +0100 Subject: [PATCH] OM2000: Fix missing dynamic TCH initialization When OM2000 has confirmed that a TS is started, call dyn_ts_init() on the timeslot to start the processing for fully dynamic (osmocom style) TCH/F_TCH/H_PDCH. This should in turn trigger the activation of idle timeslots as PDCH until we want to allocate any of them for TCH/F or TCH/H. Change-Id: I1a1fd61d6afd85449cacad4bacfb830252dab6b1 --- openbsc/src/libbsc/abis_om2000.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/openbsc/src/libbsc/abis_om2000.c b/openbsc/src/libbsc/abis_om2000.c index 6105fec4e..0dffb1537 100644 --- a/openbsc/src/libbsc/abis_om2000.c +++ b/openbsc/src/libbsc/abis_om2000.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -1282,6 +1283,8 @@ static uint8_t pchan2comb(enum gsm_phys_chan_config pchan) case GSM_PCHAN_TCH_F: case GSM_PCHAN_TCH_H: case GSM_PCHAN_PDCH: + case GSM_PCHAN_TCH_F_PDCH: + case GSM_PCHAN_TCH_F_TCH_H_PDCH: return 8; default: return 0; @@ -1674,6 +1677,15 @@ static void om2k_mo_st_wait_enable_res(struct osmo_fsm_inst *fi, uint32_t event, static void om2k_mo_st_wait_opinfo_accept(struct osmo_fsm_inst *fi, uint32_t event, void *data) { + struct om2k_mo_fsm_priv *omfp = fi->priv; + + /* if we have just received opinfo accept for the timeslot, + * start dynamic TCH switching procedures */ + if (omfp->mo->addr.class == OM2K_MO_CLS_TS) { + struct gsm_bts_trx_s *ts; + ts = mo2obj(omfp->trx->bts, &omfp->mo->addr); + dyn_ts_init(ts); + } osmo_fsm_inst_state_chg(fi, OM2K_ST_DONE, 0, 0); }