TBF acknowledged mode is now working
andreas at eversberg.eu
Tue Jul 3 11:38:10 UTC 2012
finally the TBF acknowledge mode works in up- and downlink. i have
tested it with attachment/detachment and routing area update. changes
are commited to jolly branch.
don't be shocked, but there great changes to previous gprs_rlcmac.cpp
code. it is split into three sources:
- gprs_rlcmac.cpp: general functions to handle TBF instances,
- gprs_rlcmac_data.cpp: handling of uplink and downlink TBF
- gprs_rlcmac_sched.cpp: scheduler to handle ready-to-send requests.
during packet idle mode, assignment of up- or downlink TBF is performed
using IMMEDIATE ASSIGMENT on AGCH. during TBF uplink, downlink
assignment is performed using PACKET DOWNLINK ASSIGNMENT on PACCH. after
TBF downlink, further downlink assignment is performed using PACKET
DOWNLINK ASSIGNMENT. during TBF downlink, uplink assignment is performed
using PACKET UPLINK assignment. this way an attachment / RA update /
detach will complete while staying in packet transfer mode, so no
further assignment must be done on AGCH.
the acknowledged mode keeps states about transmitted and received
blocks, so unreceived or unacknowledged block are retransmitted as
defined in TS 04.60. downlink RLC/MAC data and control blocks are not
queued, but generated at ready-to-send request from layer 1.
a scheduler is used to schedule next RLC/MAC block. it uses round-robin
scheduling, if more than two flows are active in one direction. in
downlink direction, control blocks are prioized. in uplink direction,
polling of mobile is priorized. (USF is set to apply uplink ressource to
MS.) only one timeslot (first PDCH) is used to share the ressources,
there is a short description (tbf.txt) about states and the process of
in order to detect missing responses on polling MS, a
gprs_rlcmac_poll_timeout() function is called. layer 1 interface must
implement detection of missed polled uplink control blocks. there are
two ways to perform this:
- The received frame is bad (BFI).
- The GSM indicates that the block should have been already received.
currently pcu_l1_if.c is broken, because none of the detection above is
More information about the osmocom-net-gprs