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