Holger Hans Peter Freyther
3c95776805
tbf: Separate the handling for rh->si and call in case of re-transmission
...
In case of a retransmission ack the window again..
2013-12-04 13:51:43 +01:00
Holger Hans Peter Freyther
7a5f3c2153
tbf/sched: We pick the _last_ entry, rotate the lists
...
We always pick the _last_ entry from the lists. Let's rotate
so we make it a bit more fair.
2013-11-26 21:00:52 +01:00
Holger Hans Peter Freyther
7f3e662b34
tbf/rlc: Move raising of V(Q) into the ul window code
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
cbb00ebd04
rlc/tbf: Move the code to raise V(R) into the ul_window handling
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
423dd2286b
tbf/rlc: Move the putting of a block into the rlc code
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
4c06d9155c
tbf: Move the extraction of the TLLI into a separate method
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
c15d5cc230
tbf/rlc: Remove the side-effect from the loop.
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
9977e1545a
tbf: Reduce complexity and deal with only one way of assignment
...
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-26 21:00:51 +01:00
Holger Hans Peter Freyther
6ab5b24be4
tbf/rlc: Move the check if something is in the window out.
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
7decedcbf8
rlc: The bsn has never been used. Remove it from the Xl_window
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
e9b1ebba9d
rlc: Test the basic of the gprs_rlc_v_n code for remembering the state
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
270f7fce1d
tbf/rlc: Move the v_n handling into a dedicated object
2013-11-26 21:00:51 +01:00
Holger Hans Peter Freyther
f1593b7c49
tbf/rlc: Big change and move the window handling out to the rlc
...
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-26 21:00:51 +01:00
Holger Hans Peter Freyther
ab6cd921e3
tbf: Update the legend and mention invalid as well
...
We should not see it but the legend should be complete.
2013-11-26 20:57:42 +01:00
Holger Hans Peter Freyther
9a76968ec4
rlc: Use uint16_t for the BSN in all cases.
...
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-26 20:57:40 +01:00
Holger Hans Peter Freyther
9c5539d46d
tbf/rlc: Move the counting of unacked frames into the RLC V_B class
...
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-26 20:57:24 +01:00
Holger Hans Peter Freyther
86dc355a33
tbf: Split the handling of DL ACK/NACK into two separate parts
...
Split the handling of the final ack and the handling of frames
that is moving frames.
2013-11-26 20:57:24 +01:00
Holger Hans Peter Freyther
bc15570651
tbf/rlc: Change the code and generate the entire state in the V_B
2013-11-26 20:57:24 +01:00
Holger Hans Peter Freyther
e358ff8fa4
tbf/rlc: Move the moving of V(A) into the V_B code
...
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-26 20:57:24 +01:00
Holger Hans Peter Freyther
df6b4f52e0
tbf/rlc: Move the parsing of RBB to Decoding, move window marking out
...
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-26 20:57:24 +01:00
Holger Hans Peter Freyther
9eb8ace260
tbf: Fix the indention of this routine
2013-11-26 20:57:24 +01:00
Holger Hans Peter Freyther
12c039cdb2
debug_diagram: Remove the special debug_diagram compilation mode
...
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-26 20:57:24 +01:00
Holger Hans Peter Freyther
a6ba67cb3a
tbf: Simplify the create_dl_acked_block into two parts
...
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-26 20:57:24 +01:00
Holger Hans Peter Freyther
8b16ae30fe
tbf/rlc: Move the marking of frames for resend into the v_b
2013-11-26 20:57:24 +01:00
Holger Hans Peter Freyther
c03e38291a
tbf: Move the check if the window is stalled to a separate method
2013-11-26 20:57:24 +01:00
Holger Hans Peter Freyther
1577779526
rlc/tbf: Move the loop into the gprs_rlc_v_b class
2013-11-26 20:57:19 +01:00
Holger Hans Peter Freyther
ef93bdb19b
tbf: Count how often we re-start a BSN in the send routine
...
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-24 00:01:50 +01:00
Holger Hans Peter Freyther
64b49bc3ce
tbf: Always increase the tx_counter when we transmit a frame
...
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-23 23:16:07 +01:00
Holger Hans Peter Freyther
40fc8f9e46
sched: Make internal methods static
2013-11-23 23:03:14 +01:00
Holger Hans Peter Freyther
b18aedcc50
tbf: Make the ws and sns number "private" (they should also be const)
2013-11-23 16:27:50 +01:00
Holger Hans Peter Freyther
9525567d77
rlc: Create a basic test that mark/is is talking about the same
2013-11-23 16:19:17 +01:00
Holger Hans Peter Freyther
6b5660c19f
rlc: Move the rlc headers into a separate header file
2013-11-23 16:19:17 +01:00
Holger Hans Peter Freyther
321f3c3104
rlc: Move the ack state array into a separate class that can be tested
2013-11-23 16:19:17 +01:00
Holger Hans Peter Freyther
092478f294
rlc: Count nacked frames in the statistics too
2013-11-23 01:01:19 +01:00
Holger Hans Peter Freyther
5a7f636ce4
llc: FIx a typo in the message
2013-11-21 21:59:32 +01:00
Holger Hans Peter Freyther
c6382ddd6e
rlc: Add a simple test for the RLC data structure for the init
2013-11-21 21:42:20 +01:00
Holger Hans Peter Freyther
6058220d2a
types: Add a simple testcase for basic types and fix the LLC code
...
* 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-21 21:30:23 +01:00
Holger Hans Peter Freyther
58db60c68e
rlc: Start to move things out of the tbf into the rlc
...
Add remarks of possible broken behavior inside the tbf
routines. Move the preparation (and init) into the new
rlc.cpp file.
2013-11-19 21:26:43 +01:00
Daniel Willmann
c3d5325fc8
tbf: The memory regions overlap so memmove should be used
2013-11-19 21:26:43 +01:00
Holger Hans Peter Freyther
c70aae4697
rlc: Count the window stalls on the RLC level
2013-11-19 17:09:37 +01:00
Holger Hans Peter Freyther
937e2a6919
meas: Add a warning for flow control handling here
2013-11-19 17:01:49 +01:00
Holger Hans Peter Freyther
e5dc2a0ac5
rlc: Pass the gprs_rlc_data to the assemble function for assembly
2013-11-13 20:17:06 +01:00
Holger Hans Peter Freyther
796270bf83
rlc: Put a block and the length into a separate object
...
This will ease passing things around.
2013-11-13 20:05:00 +01:00
Holger Hans Peter Freyther
9241fd0957
rlc: Begin to move the rlc block handling into a separate object
...
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.
2013-11-13 19:51:55 +01:00
Holger Hans Peter Freyther
e9429b5d3e
rlc: Count the sent and resent RLC blocks
2013-11-13 19:36:57 +01:00
Holger Hans Peter Freyther
55cf994c29
tbf: Re-use the code that is re-using the tbf
...
Address the fixme and re-use the code. Fix the counting in the
final ack case and provide a log message in the other case. Prefix
it with the tbf name
2013-11-13 18:15:45 +01:00
Holger Hans Peter Freyther
b1302b083e
llc: Move the decision if a frame has expired into the LLC
...
This way the generation of the expiry information and the check
is at the same place. This should make reading the code more easy.
2013-11-13 17:16:28 +01:00
Holger Hans Peter Freyther
32f9a59ab4
llc: Make the index 'private' by appending a m_ to it.
...
At some point in the future we can start using the private/protected
keywords in this struct.
2013-11-13 17:14:42 +01:00
Holger Hans Peter Freyther
e23102602c
llc: Move some more secrets from the TBF into the LLC
...
Introduce a method to append data to a TBF and then reset the
read pointer when the frame has been sent.
2013-11-13 17:08:07 +01:00
Holger Hans Peter Freyther
b3d5ee2934
bts: Count the number of llc frames that were "scheduled" to be sent
...
This does not mean that they have been successfully transferred
to the SGSN/MS but at least that they have reached a certain point
in the message flow.
2013-11-13 16:43:26 +01:00