The transmitting side of an AM RLC entity can receive a negative acknowledgement (notification of reception failure by its peer AM RLC entity) for an RLC SDU or an RLC SDU segment by the following:
STATUS PDU from its peer AM RLC entity.
When receiving a negative acknowledgement for an RLC SDU or an RLC SDU segment by a STATUS PDU from its peer AM RLC entity, the transmitting side of the AM RLC entity shall:
if the SN of the corresponding RLC SDU falls within the range TX_Next_Ack ≤ SN < = the highest SN of the AMD PDU among the AMD PDUs submitted to lower layer:
consider the RLC SDU or the RLC SDU segment for which a negative acknowledgement was received for retransmission.
When an RLC SDU or an RLC SDU segment is considered for retransmission, the transmitting side of the AM RLC entity shall:
if the RLC SDU or RLC SDU segment is considered for retransmission for the first time:
set the RETX_COUNT associated with the RLC SDU to zero.
else, if it (the RLC SDU or the RLC SDU segment that is considered for retransmission) is not pending for retransmission already and the RETX_COUNT associated with the RLC SDU has not been incremented due to another negative acknowledgment in the same STATUS PDU:
increment the RETX_COUNT.
if RETX_COUNT = maxRetxThreshold:
indicate to upper layers that max retransmission has been reached.
When retransmitting an RLC SDU or an RLC SDU segment, the transmitting side of an AM RLC entity shall:
if needed, segment the RLC SDU or the RLC SDU segment;
form a new AMD PDU which will fit within the total size of AMD PDU(s) indicated by lower layer at the particular transmission opportunity;
submit the new AMD PDU to lower layer.
When forming a new AMD PDU, the transmitting side of an AM RLC entity shall:
only map the original RLC SDU or RLC SDU segment to the Data field of the new AMD PDU;
modify the header of the new AMD PDU in accordance with the description in clause 6.2.2.4;
Upon notification of a transmission opportunity by lower layer, for each AMD PDU submitted for transmission such that the AMD PDU contains either a not previously transmitted RLC SDU or an RLC SDU segment containing not previously transmitted byte segment, the transmitting side of an AM RLC entity shall:
increment PDU_WITHOUT_POLL by one;
increment BYTE_WITHOUT_POLL by every new byte of Data field element that it maps to the Data field of the AMD PDU;
if PDU_WITHOUT_POLL >= pollPDU; or
if BYTE_WITHOUT_POLL >= pollByte:
include a poll in the AMD PDU as described below.
Upon notification of a transmission opportunity by lower layer, for each AMD PDU submitted for transmission, the transmitting side of an AM RLC entity shall:
if both the transmission buffer and the retransmission buffer becomes empty (excluding transmitted RLC SDUs or RLC SDU segments awaiting acknowledgements) after the transmission of the AMD PDU; or
if no new RLC SDU can be transmitted after the transmission of the AMD PDU (e.g. due to window stalling);
include a poll in the AMD PDU as described below.
To include a poll in an AMD PDU, the transmitting side of an AM RLC entity shall:
set the P field of the AMD PDU to "1";
set PDU_WITHOUT_POLL to 0;
set BYTE_WITHOUT_POLL to 0.
Upon submission of an AMD PDU including a poll to lower layer, the transmitting side of an AM RLC entity shall:
set POLL_SN to the highest SN of the AMD PDU among the AMD PDUs submitted to lower layer;
Upon expiry of t-PollRetransmit, the transmitting side of an AM RLC entity shall:
if both the transmission buffer and the retransmission buffer are empty (excluding transmitted RLC SDU or RLC SDU segment awaiting acknowledgements); or
if no new RLC SDU or RLC SDU segment can be transmitted (e.g. due to window stalling):
consider the RLC SDU with the highest SN among the RLC SDUs submitted to lower layer for retransmission; or
consider any RLC SDU which has not been positively acknowledged for retransmission.
include a poll in an AMD PDU as described in clause 5.3.3.2.
An AM RLC entity sends STATUS PDUs to its peer AM RLC entity in order to provide positive and/or negative acknowledgements of RLC SDUs (or portions of them).
Triggers to initiate STATUS reporting include:
Polling from its peer AM RLC entity:
When an AMD PDU with SN = x and the P field set to "1" is received from lower layer, the receiving side of an AM RLC entity shall:
if the AMD PDU is to be discarded as specified in clause 5.2.3.2.2; or
if x < RX_Highest_Status or x >= RX_Next + AM_Window_Size:
trigger a STATUS report.
else:
delay triggering the STATUS report until x < RX_Highest_Status or x >= RX_Next + AM_Window_Size.
Detection of reception failure of an AMD PDU
The receiving side of an AM RLC entity shall trigger a STATUS report when t-Reassembly expires.
When STATUS reporting has been triggered, the receiving side of an AM RLC entity shall:
if t-StatusProhibit is not running:
at the first transmission opportunity indicated by lower layer, construct a STATUS PDU and submit it to lower layer.
else:
at the first transmission opportunity indicated by lower layer after t-StatusProhibit expires, construct a single STATUS PDU even if status reporting was triggered several times while t-StatusProhibit was running and submit it to lower layer.
When a STATUS PDU has been submitted to lower layer, the receiving side of an AM RLC entity shall:
start t-StatusProhibit.
When constructing a STATUS PDU, the AM RLC entity shall:
for the RLC SDUs with SN such that RX_Next ≤ SN < RX_Highest_Status that has not been completely received yet, in increasing SN order of RLC SDUs and increasing byte segment order within RLC SDUs, starting with SN = RX_Next up to the point where the resulting STATUS PDU still fits to the total size of RLC PDU(s) indicated by lower layer:
for an RLC SDU for which no byte segments have been received yet:
include in the STATUS PDU a NACK_SN which is set to the SN of the RLC SDU.
for a continuous sequence of byte segments of a partly received RLC SDU that have not been received yet:
include in the STATUS PDU a set of NACK_SN, SOstart and SOend.
for a continuous sequence of RLC SDUs that have not been received yet:
include in the STATUS PDU a set of NACK_SN and NACK range;
include in the STATUS PDU, if required, a pair of SOstart and SOend.
set the ACK_SN to the SN of the next not received RLC SDU which is not indicated as missing in the resulting STATUS PDU.
When indicated from upper layer (e.g. PDCP) to discard a particular RLC SDU, the transmitting side of an AM RLC entity or the transmitting UM RLC entity shall discard the indicated RLC SDU, if neither the RLC SDU nor a segment thereof has been submitted to the lower layers. The transmitting side of an AM RLC entity shall not introduce an RLC SN gap when discarding an RLC SDU.
For the purpose of MAC buffer status reporting, the UE shall consider the following as RLC data volume:
RLC SDUs and RLC SDU segments that have not yet been included in an RLC data PDU;
RLC data PDUs that are pending for initial transmission;
RLC data PDUs that are pending for retransmission (RLC AM).
For the purpose of MAC delay status reporting, the UE shall consider the following as delay-critical RLC data volume:
delay-critical RLC SDUs and delay-critical RLC SDU segments that have not yet been included in an RLC data PDU;
RLC data PDUs pending for initial transmission, and containing a delay-critical RLC SDU or a delay-critical RLC SDU segment;
RLC data PDUs that are pending for retransmission (RLC AM).
In addition, if a STATUS PDU has been triggered and t-StatusProhibit is not running or has expired, the UE shall estimate the size of the STATUS PDU that will be transmitted in the next transmission opportunity, and consider this as part of RLC data volume for MAC buffer status reporting and as part of delay-critical RLC data volume for MAC delay status reporting.