Merge commit 'origin/master'
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index 5c4fbda..f107216 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -879,16 +879,6 @@
 		print_rsl_cause(TLVP_VAL(&tp, RSL_IE_CAUSE),
 				TLVP_LEN(&tp, RSL_IE_CAUSE));
 
-	if (msg->trx->bts->type == GSM_BTS_TYPE_BS11) {
-		/* FIXME: we have no idea what cause 0x18 is !!! */
-		if (TLVP_PRESENT(&tp, RSL_IE_CAUSE) &&
-		    TLVP_LEN(&tp, RSL_IE_CAUSE) >= 1 &&
-		    *TLVP_VAL(&tp, RSL_IE_CAUSE) == 0x18) {
-			DEBUGPC(DRSL, "Cause 0x18 IGNORING\n");
-			return 0;
-		}
-	}
-
 	DEBUGPC(DRSL, "RELEASING.\n");
 
 	/* FIXME: only free it after channel release ACK */
diff --git a/openbsc/src/bsc_hack.c b/openbsc/src/bsc_hack.c
index 3a3f0d6..d08c145 100644
--- a/openbsc/src/bsc_hack.c
+++ b/openbsc/src/bsc_hack.c
@@ -333,7 +333,7 @@
 {
 		NM_ATT_ARFCN_LIST, 0x01, 0x00, HARDCODED_ARFCN /*0x01*/,
 		NM_ATT_RF_MAXPOWR_R, 0x00,
-		NM_ATT_BS11_RADIO_MEAS_GRAN, 0x01, 0xFE, 
+		NM_ATT_BS11_RADIO_MEAS_GRAN, 0x01, 0x05,
 		NM_ATT_BS11_RADIO_MEAS_REP, 0x01, 0x01,
 		NM_ATT_BS11_EMRG_CFG_MEMBER, 0x01, 0x01,
 		NM_ATT_BS11_TRX_AREA, 0x01, 0x00, 
diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c
index 0cf567f..48c728c 100644
--- a/openbsc/src/chan_alloc.c
+++ b/openbsc/src/chan_alloc.c
@@ -182,12 +182,21 @@
 struct gsm_lchan *lchan_alloc(struct gsm_bts *bts, enum gsm_chan_t type)
 {
 	struct gsm_lchan *lchan = NULL;
+	enum gsm_phys_chan_config first, second;
 
 	switch (type) {
 	case GSM_LCHAN_SDCCH:
-		lchan = _lc_find_bts(bts, GSM_PCHAN_CCCH_SDCCH4);
+		if (bts->chan_alloc_reverse) {
+			first = GSM_PCHAN_SDCCH8_SACCH8C;
+			second = GSM_PCHAN_CCCH_SDCCH4;
+		} else {
+			first = GSM_PCHAN_CCCH_SDCCH4;
+			second = GSM_PCHAN_SDCCH8_SACCH8C;
+		}
+
+		lchan = _lc_find_bts(bts, first);
 		if (lchan == NULL)
-			lchan = _lc_find_bts(bts, GSM_PCHAN_SDCCH8_SACCH8C);
+			lchan = _lc_find_bts(bts, second);
 		break;
 	case GSM_LCHAN_TCH_F:
 		lchan = _lc_find_bts(bts, GSM_PCHAN_TCH_F);