From afe017961a971f977f814fdd96abe2b916a5d429 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Tue, 31 May 2016 14:43:25 +0200 Subject: trigger pdch defrag on do_lchan_free() Change-Id: Ibc003e35bd0720fa1a37da2b4bafbac8abf96cfc --- openbsc/src/libbsc/abis_rsl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c index db78fe328..7becb3b29 100644 --- a/openbsc/src/libbsc/abis_rsl.c +++ b/openbsc/src/libbsc/abis_rsl.c @@ -44,6 +44,7 @@ #include #include #include +#include #define RSL_ALLOC_SIZE 1024 #define RSL_ALLOC_HEADROOM 128 @@ -75,6 +76,8 @@ static void do_lchan_free(struct gsm_lchan *lchan) lchan->ts->trx->bts->network->T3111 + 2, 0); } else { rsl_lchan_set_state(lchan, LCHAN_S_NONE); + /* defragment TCH/F+PDCH shared channels */ + do_pdch_defrag(lchan->ts->trx->bts); } lchan_free(lchan); } @@ -645,9 +648,9 @@ static void error_timeout_cb(void *data) LOGP(DRSL, LOGL_INFO, "%s is back in operation.\n", gsm_lchan_name(lchan)); rsl_lchan_set_state(lchan, LCHAN_S_NONE); - /* Put PDCH channel back into PDCH mode */ - if (lchan->ts->pchan == GSM_PCHAN_TCH_F_PDCH) - rsl_ipacc_pdch_activate(lchan->ts, 1); + /* defragment TCH/F+PDCH shared channels */ + do_pdch_defrag(lchan->ts->trx->bts); + /* TODO: Put PDCH channel back into PDCH mode? */ } static int rsl_rx_rf_chan_rel_ack(struct gsm_lchan *lchan); -- cgit v1.2.3