aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-08-09 14:13:58 +0200
committerHarald Welte <laforge@gnumonks.org>2009-08-09 14:13:58 +0200
commit1c409273555bfcdd02a58e95c53d3a71a00c7b86 (patch)
tree8333b14ce99ac971dadcc45c0676661db1fe50db
parentedcc5273713b92b37b02ae95e5ff70d44af63e76 (diff)
fix timer and linked list handling of new RLL code
-rw-r--r--openbsc/src/abis_rsl.c4
-rw-r--r--openbsc/src/bsc_rll.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index 1e828a98f..f5a0f6dcb 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -849,7 +849,7 @@ int rsl_establish_request(struct gsm_lchan *lchan, u_int8_t link_id)
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 @@ static int abis_rsl_rx_rll(struct msgb *msg)
}
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 09c3bc254..57e8c15ce 100644
--- a/openbsc/src/bsc_rll.c
+++ b/openbsc/src/bsc_rll.c
@@ -80,8 +80,11 @@ int rll_establish(struct gsm_lchan *lchan, u_int8_t link_id,
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 @@ void rll_indication(struct gsm_lchan *lchan, u_int8_t link_id, u_int8_t type)
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;
}