aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2016-11-17 16:40:17 +0100
committerHarald Welte <laforge@gnumonks.org>2016-11-17 18:11:20 +0100
commitc2abdbb2be97f3586ad4a16e047bf28c8c03ffd5 (patch)
tree7cec456bb0dc8a3a6de4b993bf13796d59a643e1
parentbe86e3cbe4f45e26093d669979f3b3d8b07ba82c (diff)
HACK: re-activate dynamic PDCH after activation failure
-rw-r--r--openbsc/src/libbsc/abis_rsl.c10
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");