aboutsummaryrefslogtreecommitdiffstats
path: root/src/rlc.h
AgeCommit message (Collapse)AuthorFilesLines
2015-06-08tbf: Add adaptive DL CS adjustmentJacob Erlbeck1-0/+2
To cope with transmission failures due to bad radio conditions, a different coding scheme with more redundance can be used. This commit adds an implemenation that is based on the Ack/Nack ratio per PACKET DOWNLINK ACK/NACK message received from the MS. Basically the CS level is decreased, if the block error rate goes above cs_adj_upper_limit (default 33%), and it is increased, if the rate drops below cs_adj_lower_limit (default 10%). Only blocks that have been encoded with the current CS are taken into account. Note that this approach doesn't measure the MS->BTS conditions and that the measurement values reported by the MS are not taken into account. Ticket: #1739 Sponsored-by: On-Waves ehf
2014-08-07tbf, ...: Make the fields in the dl/ul struct member variablesDaniel Willmann1-0/+1
There is no need for the union/struct anymore. Make the variable members of the UL/DL class. As a result gprs_rlc_dl_window gets a reset() method because memset(&dir.dl, 0, sizeof(dir.dl)) doesn't work anymore in reuse_tbf(). Ticket: SYS#389 Sponsored by: On-Waves ehf
2014-07-02misc: Do not mix struct/class in the forward declarationHolger Hans Peter Freyther1-1/+1
2014-01-15rlc: Rename state() to show_state() to better reflect its functionDaniel Willmann1-1/+1
show_state() is only used for debugging output to make the v(b) array human readable.
2014-01-15rlc: Use an enum for the state array instead of charsDaniel Willmann1-31/+45
gprs_rlc_bsn_state is now used to hold the ACK state of sent/received rlc packets.
2014-01-15rlc/tbf: Move v_b into DL windowDaniel Willmann1-38/+46
Move functions resend_needed(), mark_for_resend(), update(), move_window(), state(), count_unacked() out of v_b directly into the UL window and provide a function get_state in v_b to access the v_b elements.
2014-01-15rlc/tbf: Add function receive_bsn that updates v_r, v_q, v_nDaniel Willmann1-0/+2
We don't need to expose the mecanics of updating the variables to the outside.
2014-01-15rlc/tbf: Move v_n into gprs_rlc_ul_window and adapt the testsDaniel Willmann1-18/+20
v_n is part of the UL window handling so move it inside the ul_window
2014-01-15rlc: Rename the simple raise_v_r method to avoid naming conflictsDaniel Willmann1-2/+2
2013-12-12rlc: Manage the received block bitmap in the ul_windowDaniel Willmann1-0/+8
Added two methods to gprs_rlc_ul_window * ssn() returns the starting sequence number * update_rbb() returns an array of chars representing the state of the received block bitmap. Each element is either 'I'nvalid or 'R'eceived. The rbb is generated from v_n rbb[63] relates to BSN ssn-1 ... rbb[0] relates to BSN ssn-64
2013-12-04rlc: Make the RLC types only operate on the BSNHolger Hans Peter Freyther1-71/+77
The code has an internal optimization to only use window_size space. This means that the caller needed to know that only half of the size was used. Change the API to work on the BSN and do the mapping internally. The compiler should have plenty of opportunity to propagate the constant(s) but this has not been verified.
2013-11-26tbf/rlc: Move raising of V(Q) into the ul window codeHolger Hans Peter Freyther1-5/+6
2013-11-26rlc/tbf: Move the code to raise V(R) into the ul_window handlingHolger Hans Peter Freyther1-0/+3
2013-11-26tbf/rlc: Move the putting of a block into the rlc codeHolger Hans Peter Freyther1-0/+1
2013-11-26tbf/rlc: Move the check if something is in the window out.Holger Hans Peter Freyther1-0/+13
2013-11-26rlc: The bsn has never been used. Remove it from the Xl_windowHolger Hans Peter Freyther1-2/+0
2013-11-26rlc: Test the basic of the gprs_rlc_v_n code for remembering the stateHolger Hans Peter Freyther1-1/+6
2013-11-26tbf/rlc: Move the v_n handling into a dedicated objectHolger Hans Peter Freyther1-0/+30
2013-11-26tbf/rlc: Big change and move the window handling out to the rlcHolger Hans Peter Freyther1-12/+161
The send and receive window is now managed by an external object. There are some issues that can only be solved with C++11 but it is progres and removes some of the spaghetti code. For GPRS the sns and ws is hardcoded. Move that into the window code.
2013-11-26tbf/rlc: Move the counting of unacked frames into the RLC V_B classHolger Hans Peter Freyther1-0/+2
Whenwe receive a final ack we assume that all the unacked frames have been acked now. Move the counting to V_B and now the caller can remove the BSN and the "lost" variable which has always been zero.
2013-11-26tbf/rlc: Change the code and generate the entire state in the V_BHolger Hans Peter Freyther1-7/+2
2013-11-26tbf/rlc: Move the moving of V(A) into the V_B codeHolger Hans Peter Freyther1-0/+2
Move the code that moves the V_B to the first not acked frame. Return how many indexes the V_B was moved and update the V_A in the caller.
2013-11-26tbf/rlc: Move the parsing of RBB to Decoding, move window marking outHolger Hans Peter Freyther1-0/+8
Move the parsing of the bitbmap out of the TBF code into Decoding. Move the updating of the V_B into the V_B class. Add some comments about handling the mod_sns, mod_sns_half parameters by using template code.
2013-11-26tbf/rlc: Move the marking of frames for resend into the v_bHolger Hans Peter Freyther1-0/+2
2013-11-26rlc/tbf: Move the loop into the gprs_rlc_v_b classHolger Hans Peter Freyther1-0/+5
2013-11-23rlc: Create a basic test that mark/is is talking about the sameHolger Hans Peter Freyther1-1/+7
2013-11-23rlc: Move the rlc headers into a separate header fileHolger Hans Peter Freyther1-0/+106
2013-10-30pdch/tbf: Move gprs_rlcmac_rcv_data_block_acknowledged into the pdchHolger Hans Peter Freyther1-0/+56
Move the method into the PDCH. Extract the finding of TLLI into a new class called Decoding. Move the assemble and forward LLC frames into the TBF as it is poking in the internals of the TBF.