dyn PDCH: enable PDCH only after release due to error

In rsl_rx_rf_chan_rel_ack(), only activate PDCH when in NONE state.

For the case of REL_ERR state, do the PDCH activation in the error timeout
callback after T3111 is done.

Change-Id: I4c55479b252a12039bb3d8c30a9cbf0199ca410e
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index fc56862..db78fe3 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -644,6 +644,10 @@
 	/* go back to the none state */
 	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);
 }
 
 static int rsl_rx_rf_chan_rel_ack(struct gsm_lchan *lchan);
@@ -761,7 +765,8 @@
 	do_lchan_free(lchan);
 
 	/* Put PDCH channel back into PDCH mode first */
-	if (lchan->ts->pchan == GSM_PCHAN_TCH_F_PDCH)
+	if (lchan->ts->pchan == GSM_PCHAN_TCH_F_PDCH
+	    && lchan->state == LCHAN_S_NONE)
 		return rsl_ipacc_pdch_activate(lchan->ts, 1);
 
 	return 0;