96 lines
3.1 KiB
Plaintext
96 lines
3.1 KiB
Plaintext
|
|
GSM 04.08 7.1.7 / 9.1.7 RR CHANNEL RELESE
|
|
|
|
RSL 08.58 3.4 / ? RLL Link Release Request
|
|
|
|
RSL 08.58 4.6 / 8.4.5 DEACTivate SACCH
|
|
* Deactivate SACCH according to Channel Release Proc 04.08
|
|
* to be sent after RR CHANNEL RELEASE is sent to MS
|
|
|
|
RSL 08.58 4.7 / 8.4.14 RF CHANnel RELease
|
|
* tells the BTS to release a radio channel
|
|
* "when an activated radio channel is no longer needed"
|
|
* BTS responds with RF CHANnel RELease ACKnowledge
|
|
|
|
|
|
GSM 04.08 3.4.13: RR connection release procedure
|
|
|
|
* network sends RR CHANNEL RELEASE to MS on the DCCH
|
|
* start T3109
|
|
* deactivate SACCH
|
|
* MS disconnects main signalling link (by sending DISC)
|
|
* all other data links are disconnected by local end link release
|
|
* network receives DISC (BTS sends RLL REL IND to BSC)
|
|
* stop T3109
|
|
* start T3111
|
|
* when T3111 times out, the network can reuse the channls
|
|
* if T3109 times out, the network deactivates the channels
|
|
and can reuse them
|
|
* this probably means simply RF CHANnel RELease
|
|
|
|
|
|
== Implementation in OpenBSC ==
|
|
|
|
There are two possible reasons a gsm_subscriber_connection
|
|
will be released. One is a network failure, the other is
|
|
the completion of an operation/transaction.
|
|
|
|
=== Failure ===
|
|
The BSC API will call the gsm_04_08.c:gsm0408_clear_request callback
|
|
and the MSC part will release all transactions, operations and such
|
|
and the channels will be released as error case.
|
|
|
|
=== Success ===
|
|
Every time an 'operation' or 'transaction' is finished msc_release_connection
|
|
will be called and it will determine if the gsm_subscriber_connection can
|
|
be released.
|
|
|
|
In case it can be released bsc_api.c:gsm0808_clear will be called
|
|
which will release all lchan's associated with the connection. For the
|
|
primary channel a SACH Deactivate will be send with the release
|
|
reason NORMAL RELEASE.
|
|
|
|
|
|
bsc_api.c:gsm0808_clear
|
|
* Release a channel used for handover
|
|
* Release the primary lchan with normal release, SACH deactivate
|
|
|
|
chan_alloc.c:lchan_release(chan, sacch_deactivate, reason)
|
|
* Start release procedure. It is working in steps with callbacks
|
|
coming from the abis_rsl.c code.
|
|
* Release all SAPI's > 0, wait for them to be released
|
|
* Send SACH Deactivate on SAPI=0
|
|
* Finally Release the channel
|
|
|
|
RX of RELease INDication:
|
|
* Calls internal rsl_handle_release which might release the RF.
|
|
* Informs chan_alloc.c about the release with
|
|
rsl_lchan_rll_release.
|
|
|
|
RX of RELease CONFimem:
|
|
* Calls internal rsl_handle_release which might release the RF.
|
|
* Informs chan_alloc.c about the release with
|
|
rsl_lchan_rll_release.
|
|
|
|
* RX of RF_CHAN_REL_ACK
|
|
* call lchan_free()
|
|
|
|
|
|
=== Integration with SMS ===
|
|
|
|
* RX of CP_ERROR or unimplemented MT
|
|
* trigger trans_free() which will msc_release_connection()
|
|
|
|
* CP TC1* expired while waiting for CP-ACK
|
|
* trigger trans_free() which will msc_release_connection()
|
|
|
|
* RX of RP_ERROR
|
|
* trigger trans_free() which will msc_release_connection()
|
|
|
|
* TX of CP-ACK in MT DELIVER
|
|
* trigger trans_free() which will msc_release_connection()
|
|
|
|
* RX of CP-ACK in MO SUBMIT
|
|
* trigger trans_free() which will msc_release_connection()
|
|
|