diff --git a/openbsc/include/openbsc/paging.h b/openbsc/include/openbsc/paging.h
index 6cbdca9..b69d5e6 100644
--- a/openbsc/include/openbsc/paging.h
+++ b/openbsc/include/openbsc/paging.h
@@ -38,7 +38,7 @@
 
 /* stop paging requests */
 void paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr,
-			 struct gsm_lchan *lchan);
+			 struct gsm_subscriber_connection *conn);
 
 /* update paging load */
 void paging_update_buffer_space(struct gsm_bts *bts, u_int16_t);
diff --git a/openbsc/include/openbsc/signal.h b/openbsc/include/openbsc/signal.h
index 48f7946..0738f80 100644
--- a/openbsc/include/openbsc/signal.h
+++ b/openbsc/include/openbsc/signal.h
@@ -125,12 +125,12 @@
 	struct gsm_bts *bts;
 
 	/* NULL in case the paging didn't work */
-	struct gsm_lchan *lchan;
+	struct gsm_subscriber_connection *conn;
 };
 
 struct scall_signal_data {
 	struct gsm_subscriber *subscr;
-	struct gsm_lchan *lchan;
+	struct gsm_subscriber_connection *conn;
 	void *data;
 };
 
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index 297a2c9..9ec2bf9 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -1363,9 +1363,9 @@
 
 /* call-back from paging the B-end of the connection */
 static int setup_trig_pag_evt(unsigned int hooknum, unsigned int event,
-			      struct msgb *msg, void *_lchan, void *param)
+			      struct msgb *msg, void *_conn, void *param)
 {
-	struct gsm_lchan *lchan = _lchan;
+	struct gsm_subscriber_connection *conn = _conn;
 	struct gsm_subscriber *subscr = param;
 	struct gsm_trans *transt, *tmp;
 	struct gsm_network *net;
@@ -1387,13 +1387,13 @@
 			continue;
 		switch (event) {
 		case GSM_PAGING_SUCCEEDED:
-			if (!lchan) // paranoid
+			if (!conn) // paranoid
 				break;
 			DEBUGP(DCC, "Paging subscr %s succeeded!\n",
 				subscr->extension);
 			/* Assign lchan */
 			if (!transt->conn) {
-				transt->conn = &lchan->conn;
+				transt->conn = conn;
 				use_subscr_con(transt->conn);
 			}
 			/* send SETUP request to called party */
diff --git a/openbsc/src/gsm_04_08_utils.c b/openbsc/src/gsm_04_08_utils.c
index 952d724..3776565 100644
--- a/openbsc/src/gsm_04_08_utils.c
+++ b/openbsc/src/gsm_04_08_utils.c
@@ -268,14 +268,14 @@
 
 	sig_data.subscr = subscr;
 	sig_data.bts	= msg->lchan->ts->trx->bts;
-	sig_data.lchan	= msg->lchan;
+	sig_data.conn	= &msg->lchan->conn;
 
 	counter_inc(bts->network->stats.paging.completed);
 
 	dispatch_signal(SS_PAGING, S_PAGING_SUCCEEDED, &sig_data);
 
 	/* Stop paging on the bts we received the paging response */
-	paging_request_stop(msg->trx->bts, subscr, msg->lchan);
+	paging_request_stop(msg->trx->bts, subscr, &msg->lchan->conn);
 	return 0;
 }
 
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c
index ee0aba5..a9eee83 100644
--- a/openbsc/src/gsm_04_11.c
+++ b/openbsc/src/gsm_04_11.c
@@ -1108,22 +1108,22 @@
 /* paging callback. Here we get called if paging a subscriber has
  * succeeded or failed. */
 static int paging_cb_send_sms(unsigned int hooknum, unsigned int event,
-			      struct msgb *msg, void *_lchan, void *_sms)
+			      struct msgb *msg, void *_conn, void *_sms)
 {
-	struct gsm_lchan *lchan = _lchan;
+	struct gsm_subscriber_connection *conn = _conn;
 	struct gsm_sms *sms = _sms;
 	int rc = 0;
 
 	DEBUGP(DSMS, "paging_cb_send_sms(hooknum=%u, event=%u, msg=%p,"
-		"lchan=%p, sms=%p)\n", hooknum, event, msg, lchan, sms);
+		"conn=%p, sms=%p)\n", hooknum, event, msg, conn, sms);
 
 	if (hooknum != GSM_HOOK_RR_PAGING)
 		return -EINVAL;
 
 	switch (event) {
 	case GSM_PAGING_SUCCEEDED:
-		use_subscr_con(&lchan->conn);
-		gsm411_send_sms(&lchan->conn, sms);
+		use_subscr_con(conn);
+		gsm411_send_sms(conn, sms);
 		break;
 	case GSM_PAGING_EXPIRED:
 	case GSM_PAGING_OOM:
diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c
index ca37678..eee2aaf 100644
--- a/openbsc/src/paging.c
+++ b/openbsc/src/paging.c
@@ -194,7 +194,7 @@
 	
 	sig_data.subscr = req->subscr;
 	sig_data.bts	= req->bts;
-	sig_data.lchan	= NULL;
+	sig_data.conn	= NULL;
 
 	/* must be destroyed before calling cbfn, to prevent double free */
 	counter_inc(req->bts->network->stats.paging.expired);
@@ -276,7 +276,7 @@
 
 /* we consciously ignore the type of the request here */
 static void _paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr,
-				 struct gsm_lchan *lchan)
+				 struct gsm_subscriber_connection *conn)
 {
 	struct gsm_bts_paging_state *bts_entry = &bts->paging;
 	struct gsm_paging_request *req, *req2;
@@ -284,10 +284,10 @@
 	llist_for_each_entry_safe(req, req2, &bts_entry->pending_requests,
 				 entry) {
 		if (req->subscr == subscr) {
-			if (lchan && req->cbfn) {
+			if (conn && req->cbfn) {
 				LOGP(DPAG, LOGL_DEBUG, "Stop paging on bts %d, calling cbfn.\n", bts->nr);
 				req->cbfn(GSM_HOOK_RR_PAGING, GSM_PAGING_SUCCEEDED,
-					  NULL, lchan, req->cbfn_param);
+					  NULL, conn, req->cbfn_param);
 			} else
 				LOGP(DPAG, LOGL_DEBUG, "Stop paging on bts %d silently.\n", bts->nr);
 			paging_remove_request(&bts->paging, req);
@@ -298,12 +298,12 @@
 
 /* Stop paging on all other bts' */
 void paging_request_stop(struct gsm_bts *_bts, struct gsm_subscriber *subscr,
-			 struct gsm_lchan *lchan)
+			 struct gsm_subscriber_connection *conn)
 {
 	struct gsm_bts *bts = NULL;
 
 	if (_bts)
-		_paging_request_stop(_bts, subscr, lchan);
+		_paging_request_stop(_bts, subscr, conn);
 
 	do {
 		/*
diff --git a/openbsc/src/rrlp.c b/openbsc/src/rrlp.c
index b5c7daf..465d206 100644
--- a/openbsc/src/rrlp.c
+++ b/openbsc/src/rrlp.c
@@ -91,7 +91,7 @@
 	switch (signal) {
 	case S_PAGING_SUCCEEDED:
 		/* A subscriber has attached. */
-		send_rrlp_req(&psig_data->lchan->conn);
+		send_rrlp_req(psig_data->conn);
 		break;
 	case S_PAGING_EXPIRED:
 		break;
diff --git a/openbsc/src/silent_call.c b/openbsc/src/silent_call.c
index 00acc1d..0471bff 100644
--- a/openbsc/src/silent_call.c
+++ b/openbsc/src/silent_call.c
@@ -36,10 +36,9 @@
 
 /* paging of the requested subscriber has completed */
 static int paging_cb_silent(unsigned int hooknum, unsigned int event,
-			    struct msgb *msg, void *_lchan, void *_data)
+			    struct msgb *msg, void *_conn, void *_data)
 {
-	struct gsm_subscriber_connection *conn;
-	struct gsm_lchan *lchan = _lchan;
+	struct gsm_subscriber_connection *conn = _conn;
 	struct scall_signal_data sigdata;
 	int rc;
 
@@ -48,15 +47,13 @@
 
 	DEBUGP(DSMS, "paging_cb_silent: ");
 
-	conn = &lchan->conn;
-
-	sigdata.lchan = lchan;
+	sigdata.conn = conn;
 	sigdata.data = _data;
 
 	switch (event) {
 	case GSM_PAGING_SUCCEEDED:
 		DEBUGPC(DSMS, "success, using Timeslot %u on ARFCN %u\n",
-			lchan->ts->nr, lchan->ts->trx->arfcn);
+			conn->lchan->ts->nr, conn->lchan->ts->trx->arfcn);
 		conn->silent_call = 1;
 		/* increment lchan reference count */
 		dispatch_signal(SS_SCALL, S_SCALL_SUCCESS, &sigdata);
diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/vty_interface_layer3.c
index 7c32c05..2a31df6 100644
--- a/openbsc/src/vty_interface_layer3.c
+++ b/openbsc/src/vty_interface_layer3.c
@@ -513,7 +513,7 @@
 	switch (signal) {
 	case S_SCALL_SUCCESS:
 		vty_out(vty, "%% silent call on ARFCN %u timeslot %u%s",
-			sigdata->lchan->ts->trx->arfcn, sigdata->lchan->ts->nr,
+			sigdata->conn->lchan->ts->trx->arfcn, sigdata->conn->lchan->ts->nr,
 			VTY_NEWLINE);
 		break;
 	case S_SCALL_EXPIRED:
