lchan release in error state: SACCH deact only for SACCH pchans

This is useful particularly in case where we deactivate PDCHs
which don't have a SACCH associated.  The existin code would
always attempt to deactivate a SACCH even in those cases, leading
to the BTS responsding with related error messages.

Change-Id: Iaf46782329b38ba8f3d438e6c75c2d467b852734
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index b7f7a75..2c016a6 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -898,9 +898,23 @@
  */
 static int rsl_rf_chan_release_err(struct gsm_lchan *lchan)
 {
+	enum sacch_deact sacch_deact;
 	if (lchan->state != LCHAN_S_ACTIVE)
 		return 0;
-	return rsl_rf_chan_release(lchan, 1, SACCH_DEACTIVATE);
+	switch (ts_pchan(lchan->ts)) {
+	case GSM_PCHAN_TCH_F:
+	case GSM_PCHAN_TCH_H:
+	case GSM_PCHAN_CCCH_SDCCH4:
+	case GSM_PCHAN_CCCH_SDCCH4_CBCH:
+	case GSM_PCHAN_SDCCH8_SACCH8C:
+	case GSM_PCHAN_SDCCH8_SACCH8C_CBCH:
+		sacch_deact = SACCH_DEACTIVATE;
+		break;
+	default:
+		sacch_deact = SACCH_NONE;
+		break;
+	}
+	return rsl_rf_chan_release(lchan, 1, sacch_deact);
 }
 
 static int rsl_rx_rf_chan_rel_ack(struct gsm_lchan *lchan)