diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h
index 8f21524..99634f4 100644
--- a/include/openbsc/gsm_data.h
+++ b/include/openbsc/gsm_data.h
@@ -84,6 +84,9 @@
 
 	/* local end of a call, if any */
 	struct gsm_call call;
+
+	/* temporary user data, to be removed... and merged into gsm_call */
+	void *user_data;
 };
 
 #define BTS_TRX_F_ACTIVATED	0x0001
@@ -146,6 +149,7 @@
 	struct gsm_subscriber *subscriber;
 
 	void (*update_request_accepted)(struct gsm_bts *, u_int32_t);
+	void (*channel_allocated)(struct gsm_lchan *bts, enum gsm_chreq_reason_t);
 };
 
 struct gsm_network *gsm_network_init(unsigned int num_bts, u_int16_t country_code,
diff --git a/src/abis_rsl.c b/src/abis_rsl.c
index 31b43c7..03498e9 100644
--- a/src/abis_rsl.c
+++ b/src/abis_rsl.c
@@ -579,6 +579,7 @@
 	enum gsm_chreq_reason_t chreq_reason;
 	struct gsm_lchan *lchan;
 	u_int8_t rqd_ta;
+	int ret;
 
 	u_int16_t arfcn;
 	u_int8_t ts_number, subch;
@@ -599,10 +600,6 @@
 	lctype = get_ctype_by_chreq(bts, rqd_ref->ra);
 	chreq_reason = get_reason_by_chreq(bts, rqd_ref->ra);
 
-	if (chreq_reason == GSM_CHREQ_REASON_PAG) {
-		DEBUGP(DPAG, "CHAN RQD due PAG %d\n", lctype);
-	}
-
 	/* check availability / allocate channel */
 	lchan = lchan_alloc(bts, lctype);
 	if (!lchan) {
@@ -636,8 +633,13 @@
 	DEBUGP(DRSL, "Activating ARFCN(%u) TS(%u) SS(%u) lctype %u chan_nr=0x%02x r%d\n",
 		arfcn, ts_number, subch, lchan->type, ia.chan_desc.chan_nr, chreq_reason);
 
+
 	/* send IMMEDIATE ASSIGN CMD on RSL to BTS (to send on CCCH to MS) */
-	return rsl_imm_assign_cmd(bts, sizeof(ia), (u_int8_t *) &ia);
+	ret = rsl_imm_assign_cmd(bts, sizeof(ia), (u_int8_t *) &ia);
+
+	/* inform the bsc that a channel has been allocated */
+	if (bts->network->channel_allocated)
+		(*bts->network->channel_allocated)(lchan, chreq_reason);
 }
 
 static int abis_rsl_rx_cchan(struct msgb *msg)
diff --git a/src/bsc_hack.c b/src/bsc_hack.c
index e409c72..1cf0731 100644
--- a/src/bsc_hack.c
+++ b/src/bsc_hack.c
@@ -50,6 +50,8 @@
 
 /* forward declarations */
 static void bsc_hack_update_request_accepted(struct gsm_bts *bts, u_int32_t assigned_tmi);
+static void bsc_hack_channel_allocated(struct gsm_lchan *chan,
+			enum gsm_chreq_reason_t reason);
 
 
 /* The following definitions are for OM and NM packets that we cannot yet
@@ -640,6 +642,7 @@
 	bts->location_area_code = 1;
 	bts->trx[0].arfcn = HARDCODED_ARFCN;
 	gsmnet->update_request_accepted = bsc_hack_update_request_accepted;
+	gsmnet->channel_allocated = bsc_hack_channel_allocated;
 
 	if (mi_setup(bts, 0, mi_cb) < 0)
 		return -EIO;
@@ -812,6 +815,27 @@
 		schedule_timer(&station_timer, 1, 0);
 }
 
+static void bsc_hack_channel_allocated(struct gsm_lchan *chan,
+									enum gsm_chreq_reason_t chreq_reason)
+{
+	struct pending_registered_station *station;
+	if (chreq_reason != GSM_CHREQ_REASON_PAG)
+		return;
+
+	if (llist_empty(&pending_stations)) {
+		DEBUGP(DPAG, "Channel allocated for pag but not waitin for it\n");
+		return;
+	}
+
+	station = (struct pending_registered_station*) pending_stations.next;
+
+	DEBUGP(DPAG, "CHAN RQD due PAG %d on %d for %u\n", chan->type, chan->nr, station->tmsi);
+
+	/* allocate some token in the chan for us */
+	chan->user_data = (void*)station->tmsi;
+	del_timer(&pag_timer);
+}
+
 int main(int argc, char **argv)
 {
 	/* parse options */
