fix timer and linked list handling of new RLL code
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index 1e828a9..f5a0f6d 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -849,7 +849,7 @@
 	struct abis_rsl_rll_hdr *rh;
 
 	rh = (struct abis_rsl_rll_hdr *) msgb_put(msg, sizeof(*rh));
-	init_llm_hdr(rh, RSL_MT_REL_REQ);
+	init_llm_hdr(rh, RSL_MT_EST_REQ);
 	//rh->c.msg_discr |= ABIS_RSL_MDISC_TRANSP;
 	rh->chan_nr = lchan2chan_nr(lchan);
 	rh->link_id = link_id;
@@ -1276,7 +1276,7 @@
 		}
 		break;
 	case RSL_MT_EST_CONF:
-		DEBUGPC(DRLL, "ESTABLISH CONFIRMATION\n");
+		DEBUGPC(DRLL, "ESTABLISH CONFIRM\n");
 		rll_indication(msg->lchan, rllh->link_id,
 				  BSC_RLLR_IND_EST_CONF);
 		break;
diff --git a/openbsc/src/bsc_rll.c b/openbsc/src/bsc_rll.c
index 09c3bc2..57e8c15 100644
--- a/openbsc/src/bsc_rll.c
+++ b/openbsc/src/bsc_rll.c
@@ -80,8 +80,11 @@
 	rllr->cb = cb;
 	rllr->data = data;
 
+	llist_add(&rllr->list, &bsc_rll_reqs);
+
 	rllr->timer.cb = &timer_cb;
-	/* start some timer? */
+	rllr->timer.data = rllr;
+
 	bsc_schedule_timer(&rllr->timer, 10, 0);
 
 	/* send the RSL RLL ESTablish REQuest */
@@ -97,6 +100,7 @@
 	llist_for_each_entry_safe(rllr, rllr2, &bsc_rll_reqs, list) {
 		if (rllr->lchan == lchan &&
 		    (rllr->link_id & LINKID_MASK) == (link_id & LINKID_MASK)) {
+			bsc_del_timer(&rllr->timer);
 			complete_rllr(rllr, type);
 			return;
 		}