diff options
author | Harald Welte <laforge@gnumonks.org> | 2016-11-17 16:40:17 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2016-11-17 18:11:20 +0100 |
commit | c2abdbb2be97f3586ad4a16e047bf28c8c03ffd5 (patch) | |
tree | 7cec456bb0dc8a3a6de4b993bf13796d59a643e1 | |
parent | be86e3cbe4f45e26093d669979f3b3d8b07ba82c (diff) |
HACK: re-activate dynamic PDCH after activation failure
Change-Id: Iaa6ace3da2439610e12804bdd1b3186c1d269be6
-rw-r--r-- | openbsc/src/libbsc/abis_rsl.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c index ce9e20eee..ee8745d35 100644 --- a/openbsc/src/libbsc/abis_rsl.c +++ b/openbsc/src/libbsc/abis_rsl.c @@ -1260,6 +1260,7 @@ static int rsl_rx_chan_act_nack(struct msgb *msg) { struct abis_rsl_dchan_hdr *dh = msgb_l2(msg); struct tlv_parsed tp; + struct gsm_bts_trx_ts *ts = msg->lchan->ts; osmo_timer_del(&msg->lchan->act_timer); @@ -1284,12 +1285,17 @@ static int rsl_rx_chan_act_nack(struct msgb *msg) TLVP_LEN(&tp, RSL_IE_CAUSE)); msg->lchan->error_cause = *cause; if (*cause != RSL_ERR_RCH_ALR_ACTV_ALLOC) { - rsl_lchan_mark_broken(msg->lchan, "NACK on activation"); + //rsl_lchan_mark_broken(msg->lchan, "NACK on activation"); } else rsl_rf_chan_release(msg->lchan, 1, SACCH_DEACTIVATE); } else { - rsl_lchan_mark_broken(msg->lchan, "NACK on activation no IE"); + //rsl_lchan_mark_broken(msg->lchan, "NACK on activation no IE"); + } + if (ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH) { + enum gsm_phys_chan_config want = ts->dyn.pchan_want; + ts->dyn.pchan_want = ts->dyn.pchan_is; + dyn_ts_switchover_start(ts, want); } LOGPC(DRSL, LOGL_ERROR, "\n"); |