
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, sach_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()
	
