From 4f5848dc91a1bf035cee3cf031c919dbd7943371 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 8 Jun 2010 11:57:45 +0800 Subject: abis_rsl: Allow to specify the release mode for a given channel. This can be used by handover, early assignment to indicate the close of the old channel... --- openbsc/src/abis_rsl.c | 5 +++-- openbsc/src/chan_alloc.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'openbsc/src') diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c index f305bb1d4..451c80db2 100644 --- a/openbsc/src/abis_rsl.c +++ b/openbsc/src/abis_rsl.c @@ -752,14 +752,15 @@ int rsl_establish_request(struct gsm_lchan *lchan, u_int8_t link_id) RELEASE CONFIRM, which we in turn use to trigger RSL CHANNEL RELEASE, which in turn is acknowledged by RSL CHANNEL RELEASE ACK, which calls lchan_free() */ -int rsl_release_request(struct gsm_lchan *lchan, u_int8_t link_id) +int rsl_release_request(struct gsm_lchan *lchan, u_int8_t link_id, u_int8_t reason) { struct msgb *msg; msg = rsl_rll_simple(RSL_MT_REL_REQ, lchan2chan_nr(lchan), link_id, 0); - msgb_tv_put(msg, RSL_IE_RELEASE_MODE, 0); /* normal release */ + /* 0 is normal release, 1 is local end */ + msgb_tv_put(msg, RSL_IE_RELEASE_MODE, reason); /* FIXME: start some timer in case we don't receive a REL ACK ? */ diff --git a/openbsc/src/chan_alloc.c b/openbsc/src/chan_alloc.c index 107abdc92..5a3e72771 100644 --- a/openbsc/src/chan_alloc.c +++ b/openbsc/src/chan_alloc.c @@ -363,7 +363,7 @@ int lchan_auto_release(struct gsm_lchan *lchan) DEBUGP(DRLL, "%s Recycling Channel\n", gsm_lchan_name(lchan)); rsl_lchan_set_state(lchan, LCHAN_S_REL_REQ); - rsl_release_request(lchan, 0); + rsl_release_request(lchan, 0, 0); return 1; } -- cgit v1.2.3