From 25cb84be128ad1d7f9ccf09286d8eaa09dbd2c2c Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Fri, 9 Apr 2010 12:26:32 +0200 Subject: [rsl] Introduce an error state for the lchan and set it on release When we issue a RF Channel Release in case of a failure we receive RLL release indications after the channel was tearn down and we issue another RF Channel Release as a result. The channel allocator might have already allocated this channel and we release the channel again with another MS on it. Make rsl_rf_chan_release take an error argument and make it set a new state in case of an error and change the RF Channel Release ack to not set the state back to none in case of an error but wait for a timeout that is a bit higher than T3111. I tested this with removing the battery during a phonecall and waiting for the channel failure. With this test we only send the release once. --- openbsc/include/openbsc/gsm_data.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'openbsc/include') diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h index eed29b1da..fc4241ada 100644 --- a/openbsc/include/openbsc/gsm_data.h +++ b/openbsc/include/openbsc/gsm_data.h @@ -198,6 +198,7 @@ enum gsm_lchan_state { LCHAN_S_ACT_REQ, /* channel activatin requested */ LCHAN_S_ACTIVE, /* channel is active and operational */ LCHAN_S_REL_REQ, /* channel release has been requested */ + LCHAN_S_REL_ERR, /* channel is in an error state */ LCHAN_S_INACTIVE, /* channel is set inactive */ }; @@ -247,6 +248,7 @@ struct gsm_lchan { struct timer_list T3101; struct timer_list T3111; + struct timer_list error_timer; /* AMR bits */ struct gsm48_multi_rate_conf mr_conf; -- cgit v1.2.3