• Cedric Roux's avatar
    rlc v2: implement SOstart/SOend in NACK reporting · d262d152
    Cedric Roux authored
    The necessity of SOstart/SOend was understood after email exchanges with
    David Breaux <davidbreaux67@gmail.com>.
    
    See openair2/LAYER2/rlc_v2/tests/test46.h for some details.
    
    Basically if we NACK without SOstart/SOend then the other end of the RLC
    channel will consider all the bytes as NACKed and will have to resend them
    all. If another status is then reported before all the bytes are sent,
    and because we don't use SOstart/SOend this status will NACK all the bytes
    again, then all the bytes are to be sent again. And the cycle repeats.
    It will end with a max retx reached (which triggers RLF, Radio Link Failure).
    
    The function put_bit in openair2/LAYER2/rlc_v2/rlc_pdu.c has been changed
    too, maybe introducing some performance issues.
    d262d152
TODO 578 Bytes
RLC AM
======

- 36.322 5.4 Re-establishment procedure
  when possible, reassemble RLC SDUs from any byte segments of AMD PDUs
  with SN < VR(MR) in the receiving side, remove RLC headers when doing
  so and deliver all reassembled RLC SDUs to upper layer in ascending order
  of the RLC SN, if not delivered before;

- 36.322 5.2.3 Status reporting
  delay triggering the STATUS report until x < VR(MS) or x >= VR(MR)

- 36.322 5.1.3.2.3 Actions when a RLC data PDU is placed in the reception
  buffer
  [...] and in-sequence byte segments of the AMD PDU with SN = VR(R) [...]