diff options
Diffstat (limited to 'src/tbf.txt')
-rw-r--r-- | src/tbf.txt | 111 |
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. + |