aboutsummaryrefslogtreecommitdiffstats
path: root/src/tbf.txt
blob: 82bf05ac34944cf0783c3472620b0356598a4c62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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 resource 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.