ARQ procedure is performed by RCL AM entity.
This is initiated when the transmitting side RLC entity starts the polling procedure.
Polling procedure will trigger STATUS reporting from receiving side AM RLC entity.
For ARQ procedure, we need to concentrate on 3 topics:
1. Retransmission
2. Polling
3. Status Reporting
1. Retransmission:
The transmitting side of RLC AM entity receives STATUS PDU with ACK_SN, it is understood that all the PDU with SN < ACK_SN have been received correctly.
If a STATUS PSU contains NACK information, then it is understood that some of the PDU are missing and they need to be retransmitted.
Below is the algorithm of the retransmission:
1. The Tx side of AM RLC entity can receive NACK for an AMD PDU or a portion of AMD PDU in the STATUS PDU from its peer AM RLC entity.
2. Once Tx side receives a NACK, if the SN is between the Tx window, if it is a 1st time re-transmission set RETX_COUNT = 0 and re-transmit the AMD PDU.
If it is not the first time, then increment the count of RETX_COUNT.
If the RETX_COUNT = maxRetxThreshold, indicate to upper layer.
3. While retransmitting, if the AMD PDU entirely fit within the total size of RLC PDU as indicated by lower layer, then update P-bit otherwise segmentation is done before delivering to lower layer.
4. while retransmitting a portion of an AMD PDU, the Tx RLC entity shall, the data field is copied but RLC header us updated according to new segment and P-bit is also updated accordingly.
2. Polling
Polling is raised to trigger STATUS reporting.
1. The Tx side of AM RLC entity, upon transmission of AMD PDU, update PDU_WITHOUT_POLL, BYTE_WITHOUT_POLL.
2. If PDU_WITHOUT_POLL >= pollPDU or BYTE_WITHOUT_POLL >= pollByte, then poll bit is inserted. Then reset the PDU_WITHOUT_POLL, BYTE_WITHOUT_POLL.
3. Poll bit is also included if both the transmission buffer and retransmission buffer becomes empty or if no new RLC data PDU can be transmitted.
4. After delivering a RLC data PDU including a poll to lower layer, update POLL_SN = VT(S) – 1 and start/restart t-PollRetransmit.
5. Upon reception of STATUS report from the receiving RLC AM entity, the transmitting side of AM RLC entity shall, stop and reset the t-PollRetransmit timer.
Below are some of the reasons that will start polling:
- Number of AMD PDU >= pollPDU
- Number of byte of AMD PDU >= pollByte
- Both transmission and reception buffers are empty.
3. Status Reporting
Once RLC PDU with polling bit set to 1 is received, then receiving RLC AM entity provides the status information of all the previously received AMD PDU that are not acknowledged.
RRC configured whether or not the status prohibit function is to be used for an AM RLC entity.
Status Reporting is triggered by:
1. Polling from peer AM entity
2. AMD DPU with p-bit = 1
Once STATUS_REPORT is sent, AM Rx entity sets the status prohibit.