diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-05-31 21:38:24 +0800 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-05-31 21:39:23 +0800 |
commit | 4b4dd100f8ca079134b780e0ca0879c1ab3e5ebb (patch) | |
tree | 08c3d37b638e6b1b1610681e4fb17263995bc21e /openbsc/include/openbsc/gsm_data.h | |
parent | f30c0dca0d82ff738a0b4e228f055181416bd7c6 (diff) |
[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.
Diffstat (limited to 'openbsc/include/openbsc/gsm_data.h')
-rw-r--r-- | openbsc/include/openbsc/gsm_data.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h index 39407e97d..90e8fc029 100644 --- a/openbsc/include/openbsc/gsm_data.h +++ b/openbsc/include/openbsc/gsm_data.h @@ -205,6 +205,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 */ }; @@ -257,6 +258,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; |