diff options
Diffstat (limited to 'doc/tbf.txt')
-rw-r--r-- | doc/tbf.txt | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/doc/tbf.txt b/doc/tbf.txt index 9d0db1ad..caddf63f 100644 --- a/doc/tbf.txt +++ b/doc/tbf.txt @@ -14,16 +14,16 @@ Notes: Queue of next frames to be transmitted. States: - GPRS_RLCMAC_ASSIGN + TBF_ST_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, + TBF_ST_FLOW, During packet flow, this state indicates downlink and uplink TBF block flow. - GPRS_RLCMAC_FINISHED, + TBF_ST_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 @@ -33,11 +33,11 @@ States: downlink blocks are acknowledged yet. (Counter N3015 is counted on each poll request.) - GPRS_RLCMAC_WAIT_RELEASE, + TBF_ST_WAIT_RELEASE, The all blocks on downlink TBF have been acked by mobile. The penalty timer T3192 is running on mobile. - GPRS_RLCMAC_RELEASING, + TBF_ST_RELEASING, Wait for TFI/USF to be re-used. This state is entered when a counter reaches it's maximum and T3169 is running. @@ -52,7 +52,7 @@ When downlink LLC PDU is received: 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: + If downlink 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: @@ -117,13 +117,17 @@ Control TS: 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. + frame number is stored at PDCH UL Controller. The scheduler reads that value + and will not assign uplink resource for other TBFs at that frame number. + + On receipt of an Uplink RLCMAC block, it's the duty of each specific message + handler to release the expectancies previously stored in the PDCH UL + Controller. After the specific handler returns, the generic return path will + expire all reserved events up to the curent FN for that PDCH, eventually + calling timeout functions on TBFs and SBAs owning those reservations. Hence, + the layer 1 interface is expected to provide DATA.ind for each FN block, + containing data=0 if decoding failed, in order to keep the clock up-to-date in + upper layers. Because polling requires uplink response from MS, the polling must be performed at control TS. @@ -131,13 +135,21 @@ Polling: Data structures of TBFs and PDCHs: - There is a global structure for BTS. + There is a global structure for PCU (struct gprs_pcu the_pcu). + + A BTS is created and put into PCU's list for each PCUIF INFO_IND with a unique + bts_nr received. - The BTS structure has 8 TRX structures. + Each BTS structure has 8 TRX structures. Each TRX structure has 8 PDCH structures, one for each timeslot. - There are two linked lists of TBF instances: + Each BTS structure has a list of MS (struct GprsMs). + + Each MS can have 1 UL TBF and 1 DL TBF, and 1 TBF is always assigned to an + existing GprsMS structure. + + Each BTS also has two linked lists of TBF instances: - uplink TBFs - downlink TBFs @@ -158,4 +170,6 @@ Data structures of TBFs and PDCHs: On release of a TBF, the link to this PDCH is removed from all assigned PDCHs. The TBF is removed from the list of TBFs. The TBF is destroyed. - + GprsMs structures are kept alive for a while once they become unused, in order to + have a cache of MS related information it would otherwise need to acquire + again once it interacts with the PCU again. |