AgeCommit message (Collapse)AuthorFilesLines
2013-11-26rlc: Create a testcase for the uplink windowzecke/features/clean-upHolger Hans Peter Freyther1-0/+98
2013-11-26rlc: Make the RLC types only operate on the BSNHolger Hans Peter Freyther4-116/+112
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: Separate the handling for rh->si and call in case of re-transmissionHolger Hans Peter Freyther2-8/+15
In case of a retransmission ack the window again..
2013-11-26WIP/FIX rlc: Use sizeof() for the memset instead of ARRAY_SIZEHolger Hans Peter Freyther1-1/+1
In this case both will give the same result but it is better to use sizeof
2013-11-26wipHolger Hans Peter Freyther1-0/+2
2013-11-26scheduling hacks..Holger Hans Peter Freyther2-16/+25
2013-11-26tbf/sched: We pick the _last_ entry, rotate the listsHolger Hans Peter Freyther3-0/+13
We always pick the _last_ entry from the lists. Let's rotate so we make it a bit more fair.
2013-11-26tbf/rlc: Move raising of V(Q) into the ul window codeHolger Hans Peter Freyther3-18/+36
2013-11-26rlc/tbf: Move the code to raise V(R) into the ul_window handlingHolger Hans Peter Freyther3-14/+22
2013-11-26tbf/rlc: Move the putting of a block into the rlc codeHolger Hans Peter Freyther3-2/+8
2013-11-26tbf: Move the extraction of the TLLI into a separate methodHolger Hans Peter Freyther2-38/+49
2013-11-26tbf/rlc: Remove the side-effect from the loop.Holger Hans Peter Freyther1-7/+8
2013-11-26tbf: Reduce complexity and deal with only one way of assignmentHolger Hans Peter Freyther1-16/+4
The normal mode of the PCU doesn't really work right now. There is no place to have certain kind of features that are not built and not unit-tested.
2013-11-26tbf/rlc: Move the check if something is in the window out.Holger Hans Peter Freyther2-6/+16
2013-11-26rlc: The bsn has never been used. Remove it from the Xl_windowHolger Hans Peter Freyther1-2/+0
2013-11-26rlc: Add a basic test for the DL Window and moving the windowHolger Hans Peter Freyther1-0/+49
2013-11-26rlc: Test the basic of the gprs_rlc_v_n code for remembering the stateHolger Hans Peter Freyther4-3/+31
2013-11-26tbf/rlc: Move the v_n handling into a dedicated objectHolger Hans Peter Freyther4-7/+36
2013-11-26tbf/rlc: Big change and move the window handling out to the rlcHolger Hans Peter Freyther5-119/+242
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: Update the legend and mention invalid as wellHolger Hans Peter Freyther1-1/+1
We should not see it but the legend should be complete.
2013-11-26rlc: Use uint16_t for the BSN in all cases.Holger Hans Peter Freyther1-2/+2
The sns is only 128 for GPRS (it can be bigger for EDGE) so the uint8_t was enough but it is bad to have inconsistencies for both of them.
2013-11-26tbf/rlc: Move the counting of unacked frames into the RLC V_B classHolger Hans Peter Freyther3-8/+21
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: Split the handling of DL ACK/NACK into two separate partsHolger Hans Peter Freyther2-59/+69
Split the handling of the final ack and the handling of frames that is moving frames.
2013-11-26tbf/rlc: Change the code and generate the entire state in the V_BHolger Hans Peter Freyther3-15/+21
2013-11-26tbf/rlc: Move the moving of V(A) into the V_B codeHolger Hans Peter Freyther3-8/+23
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 Freyther5-26/+61
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: Fix the indention of this routineHolger Hans Peter Freyther1-1/+1
2013-11-26debug_diagram: Remove the special debug_diagram compilation modeHolger Hans Peter Freyther6-175/+0
This approach is somehow flawed. We need/want to debug problems on systems with real traffic and re-compiling it with debug_diagram is not an option. All internal logging needs to be expressive enough so we can understand what is going on (e.g. create a script to post-process the output).
2013-11-26tbf: Simplify the create_dl_acked_block into two partsHolger Hans Peter Freyther2-13/+22
Separate the resend from creating a new block. It shows that the first_fin_ack is always set to FALSE for re-sending. This might not be what we want.
2013-11-26tbf/rlc: Move the marking of frames for resend into the v_bHolger Hans Peter Freyther3-12/+24
2013-11-26tbf: Move the check if the window is stalled to a separate methodHolger Hans Peter Freyther2-2/+8
2013-11-26rlc/tbf: Move the loop into the gprs_rlc_v_b classHolger Hans Peter Freyther3-13/+30
2013-11-24tbf: Count how often we re-start a BSN in the send routineHolger Hans Peter Freyther3-2/+7
There appears to be a scheduling issue. Even without any NACKs we are re-transmitting a lot of frames. It might be because of this.
2013-11-23tbf: Always increase the tx_counter when we transmit a frameHolger Hans Peter Freyther1-6/+4
In case the ACK could not be scheduled we were not increasing the tx_counter. Change the code flow to always increase the tx_counter after we have created a frame.
2013-11-23sched: Make internal methods staticHolger Hans Peter Freyther1-3/+4
2013-11-23tbf: Make the ws and sns number "private" (they should also be const)Holger Hans Peter Freyther3-16/+23
2013-11-23rlc: Create a basic test that mark/is is talking about the sameHolger Hans Peter Freyther2-1/+34
2013-11-23rlc: Move the rlc headers into a separate header fileHolger Hans Peter Freyther2-103/+107
2013-11-23rlc: Move the ack state array into a separate class that can be testedHolger Hans Peter Freyther3-18/+104
2013-11-23rlc: Count nacked frames in the statistics tooHolger Hans Peter Freyther3-0/+5
2013-11-21llc: FIx a typo in the messageHolger Hans Peter Freyther1-1/+1
2013-11-21rlc: Add a simple test for the RLC data structure for the initHolger Hans Peter Freyther2-1/+16
2013-11-21types: Add a simple testcase for basic types and fix the LLC codeHolger Hans Peter Freyther8-5/+117
* Make append_data, remaining_space and fits_in_current.. work on m_length and not the index. This ways things can't overflow. * The current API consumer was moving the m_index so it should have worked okay.
2013-11-19rlc: Start to move things out of the tbf into the rlcHolger Hans Peter Freyther4-11/+50
Add remarks of possible broken behavior inside the tbf routines. Move the preparation (and init) into the new rlc.cpp file.
2013-11-19tbf: The memory regions overlap so memmove should be usedDaniel Willmann1-2/+2
2013-11-19rlc: Count the window stalls on the RLC levelHolger Hans Peter Freyther3-1/+7
2013-11-19meas: Add a warning for flow control handling hereHolger Hans Peter Freyther1-0/+1
2013-11-13rlc: Pass the gprs_rlc_data to the assemble function for assemblyHolger Hans Peter Freyther2-4/+6
2013-11-13rlc: Put a block and the length into a separate objectHolger Hans Peter Freyther2-11/+17
This will ease passing things around.
2013-11-13rlc: Begin to move the rlc block handling into a separate objectHolger Hans Peter Freyther2-11/+20
The secret of gprs_rlc will be the manipulation of the blocks for the current window. We might add the window handling in this class as well.