aboutsummaryrefslogtreecommitdiffstats
path: root/src/tbf.txt
diff options
context:
space:
mode:
authorIvan Kluchnikov <kluchnikovi@gmail.com>2012-07-12 14:49:15 +0400
committerIvan Kluchnikov <kluchnikovi@gmail.com>2012-07-12 14:49:15 +0400
commitef7f28cc7fe67e353821c5f88bc80d5120fec3ca (patch)
treeca1b24fafa82862b1d5cd38ce1434973033588f0 /src/tbf.txt
parentc7e7f6868b6f24346424dee904f4e76d3f216ff4 (diff)
parente13fa2d56936d6bed8febcc41508a30e4a1038f0 (diff)
Merge branch 'jolly_new'
Merge is based on jolly_new branch with two modifications. 1. Modified PCU L1 interface. pcu_l1_if.cpp - common functions for tx and rx messages on L1 interface. sysmo_sock.cpp - SYSMO-PCU socket functions. openbts_sock.cpp - OpenBTS-PCU socket functions. pcuif_proto.h - L1 interface's primitives. 2. Modified encoding of RLC/MAC Control messages, now we use structures and encode_gsm_rlcmac_downlink() function for encode control blocks (without hand-coding).
Diffstat (limited to 'src/tbf.txt')
-rw-r--r--src/tbf.txt111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/tbf.txt b/src/tbf.txt
new file mode 100644
index 00000000..3c06b39c
--- /dev/null
+++ b/src/tbf.txt
@@ -0,0 +1,111 @@
+This document describes the handling of TBFs
+--------------------------------------------
+
+Notes:
+ TBF
+ Instance for one temporary block flow.
+
+ LLC Frame
+ Current frame to be transmitted or received. If tbf->llc_length is not 0,
+ the frame exists, if 0, the frame does not exist. If tbf->llc_index is not
+ 0, parts of the frame have been transmitted or received so far.
+
+ LLC Queue
+ Queue of next frames to be transmitted.
+
+States:
+ GPRS_RLCMAC_ASSIGN
+ After a downlink TBF is created, it resides in this state until the
+ block flow can start. This is required to give the mobile time to listen
+ to connect to downlink PDCH.
+
+ GPRS_RLCMAC_FLOW,
+ During packet flow, this state indicates downlink and uplink TBF block
+ flow.
+
+ GPRS_RLCMAC_FINISHED,
+ Uplink TBF:
+ After final block is received AND all other blocks are completely
+ received, the state is entered. The PACKET CONTROL ACK is still not
+ received. (Counter N3103 is counted on each poll request.)
+ Downlink TBF:
+ All blocks including the final block has been transmitted. Not all
+ downlink blocks are acknowledged yet. (Counter N3015 is counted on each
+ poll request.)
+
+ GPRS_RLCMAC_WAIT_RELEASE,
+ The all blocks on downlink TBF have been acked by mobile. The penalty
+ timer T3192 is running on mobile.
+
+ GPRS_RLCMAC_RELEASING,
+ Wait for TFI/USF to be re-used. This state is entered when a counter
+ reaches it's maximum and T3169 is running.
+
+
+When downlink LLC PDU is received:
+
+ If downlink TBF exists for given TLLI, but not in RELEASING state:
+ If downlink TBF is in FLOW or FINISHED state:
+ Enqueue PDU to LLC Queue of TBF.
+ Done.
+ If downlink TBF is in WAIT RELEASE state:
+ Attach PDU to LLC Frame of TBF.
+ Put TBF back into FLOW state.
+ Done.
+ If dowlink TBF does not exists for given TLLI, or in RELEASING state:
+ Create new downlink TBF.
+ Attach PDU to LLC Frame of TBF.
+ If uplink TBF exists for given TLLI, but not in RELEASING state:
+ Assign packet channel PACCH.
+ Done.
+ If uplink TBF does not exists for given TLLI, or in RELEASING state:
+ Assign packet channel AGCH.
+ Done.
+
+When channel request for uplink TBF is received:
+
+ Create new uplink TBF.
+ If channel request was received on RACH
+ Assign packet channel AGCH.
+ Done
+ If channel request was received on PACCH
+ Assign packet channel PACCH.
+ Done
+
+Handling of LLC Frame of downlink TBF and LLC Queue of downlink TBF:
+
+ If a downlink TBF is created, the LLC PDU is attached to LLC Frame of TBF
+ (downlink flow is assigned to MS).
+
+ If a downlink TBF exists, the LLC PDU is enqueued to LLC Queue of TBF.
+
+ During transfer of downlink blocks, the LLC Queue is dequeued whenever all
+ segments of LLC Frame were used for generation of downlink blocks. (If a
+ block is partly filled with LLC Frame segment, its remaining space is filled
+ with the next LLC Frame from the Queue.)
+
+ If the transfer is finished, no more LLC Frames are dequeued from the LLC
+ Queue, in case a new frame has arrived during lifetime of TBF.
+
+ If the all downlink blocks have been acknowledged, the LLC Queue is
+ dequeued and an existing frame is attached to LLC Frame. If so, the new
+ state is FLOW (downlink flow is assigned to MS), otherwise WAIT RELEASE.
+
+ If a new LLC PDU is attached to LLC Frame during WAIT RELEASE state, the
+ state is changed to FLOW (downlink flow is assigned to MS).
+
+Handling of LLC Frame on uplink TBF:
+
+ Received uplink blocks are appended to LLC Frame of TBF. If the PDU is
+ complete, it is forwarded to the upper layer.
+
+Polling:
+ In order to poll uplink control block from MS, a special poll state and
+ frame number is stored at TBF. The scheduler reads that value and will not
+ assign uplink ressource for other TBFs at that frame number.
+
+ When there is no uplink transmission received on the block, a timeout is
+ indicated by layer 1 interface. There are two ways of checking timeout:
+ - The received frame is bad (BFI).
+ - The GSM indicates that the block should have been already received.
+