For DAPS bearers, when upper layers request uplink data switching, the transmitting PDCP entity shall:
-
for AM DRBs, from the first PDCP SDU for which the successful delivery of the corresponding PDCP Data PDU has not been confirmed by the RLC entity associated with the source cell, perform retransmission or transmission of all the PDCP SDUs already associated with PDCP SNs in ascending order of the COUNT values associated to the PDCP SDU prior to uplink data switching to the RLC entity associated with the target cell as specified below:
-
perform header compression of the PDCP SDU using ROHC as specified in the clause 5.7.4;
-
perform integrity protection and ciphering of the PDCP SDU using the COUNT value associated with this PDCP SDU as specified in the clause 5.9 and 5.8, respectively;
-
submit the resulting PDCP Data PDU to lower layer, as specified in clause 5.2.1.
-
for UM DRBs, for all PDCP SDUs which have been processed by PDCP but which have not yet been submitted to lower layers, perform transmission of the PDCP SDUs in ascending order of the COUNT values to the RLC entity associated with the target cell as specified below:
-
perform header compression of the PDCP SDU using ROHC as specified in the clause 5.7.4;
-
perform integrity protection and ciphering of the PDCP SDU using the COUNT value associated with this PDCP SDU as specified in the clause 5.9 and 5.8, respectively;
-
submit the resulting PDCP Data PDU to lower layer, as specified in clause 5.2.1.
The UDC protocol is based on
RFC 1951 (DEFLATE Compressed Data Format Specification).
Static Huffman coding tree defined in
RFC 1951 is used as the DEFLATE compression strategy.
UDC Data Block should be byte-alignment. Z_SYNC_FLUSH is used as the DEFLATE byte-alignment with corresponding reference
RFC 1979, wherein the fixed last four bytes, 0x00 0x00 0xFF 0xFF, are removed before transmission.
The PDCP entities associated with DRBs can be configured by upper layers, see
TS 38.331, to use UDC. If UDC is configured, the UE shall apply UDC compression function (details see
Annex B) to process the received PDCP SDU from upper layers corresponding to the configured DRB. The size of compression buffer is configured by upper layers via bufferSize. If pre-defined dictionary is configured by upper layers, the UE shall first set the compression buffer to all zeros and then prefill the configured pre-defined dictionary in the compression buffer upon configuration of UDC. If pre-defined dictionary is not configured by upper layers, UE shall set the compression buffer to all zeros.
UDC header (1 byte) is added in UDC compression function followed by UDC data block. The UDC header contains the information about whether the current PDCP SDU is compressed by UDC protocol or not. Only the compressed packets are stored in the buffer. The UDC header also contains a reset bit to inform the decompressor that the compression buffer has been reset. The validation bits (checksum) of the compression buffer are also contained in UDC header. Checksum mechanism could be used to resolve miss-match (if any) between the compression and de-compression buffers. If both SDAP and UDC are configured for a DRB, the UDC header shall be located after the SDAP header.
Figure 5.14.3-1 shows the location of the UDC header in a PDCP data PDU.
The UDC protocol generates UDC packets, each associated with one PDCP SDU.
A UDC packet is associated with the same PDCP SN and COUNT values as the related PDCP SDU. The uplink data compression is not applicable to the SDAP header and the SDAP Control PDU if included in the PDCP Data PDU.
At reception of a PDCP Control PDU for UDC feedback from lower layers, the receiving PDCP entity shall:
-
deliver the corresponding UDC feedback to the UDC protocol without performing deciphering/integrity verification.
One standard dictionary for SIP and SDP and one operator defined dictionary can be used as pre-defined dictionaries in UDC. The standard dictionary for SIP and SDP consists of the first 3468 bytes of the dictionary for SigComp defined in
RFC 3485. When UDC is configured, at most one dictionary, configured by upper layers, is put into the tail of the compression buffer. Also, the compression buffer acts as a FIFO and hence the content of the dictionary is to be totally pushed out of the compression buffer after the size of transmitted uncompressed packets compressed by UDC exceeds the compression buffer size. If the size of dictionary is larger than the compression buffer size, only the tail of the dictionary is inserted in the compression buffer.
UDC works on the condition that compression buffer and de-compression buffer are synchronized. UDC buffer reset mechanism is to resynchronize buffer when error is detected. For resynchronization, UE shall reset the compression buffer to all zeros.
UDC checksum error notification PDCP control PDU indicates the compression buffer and de-compression buffer are out of synchronization. When receiving the notification, the UE shall trigger UDC buffer reset procedure to resynchonize the compression buffer.
For the purpose of MAC delay status reporting, the transmitting PDCP entity shall consider the following as delay-critical PDCP data volume:
-
the delay-critical PDCP SDUs for which no PDCP Data PDUs have been constructed;
-
the PDCP Data PDUs that contain the delay-critical PDCP SDUs and have not been submitted to lower layers;
-
the PDCP Control PDUs;
-
for AM DRBs, the PDCP SDUs to be retransmitted according to clause 5.1.2 and clause 5.13;
-
for AM DRBs, the PDCP Data PDUs to be retransmitted according to clause 5.5.
If a PDCP SDU becomes a delay-critical PDCP SDU, and if the corresponding PDCP Data PDU has already been submitted to lower layers, the delay-critical indication for the PDCP Data PDU is provided to lower layers.
If the transmitting PDCP entity is associated with at least two RLC entities, when indicating the delay-critical PDCP data volume to a MAC entity for DSR triggering and Buffer Size calculation (as specified in
TS 38.321), the transmitting PDCP entity shall:
-
if the PDCP duplication is activated for the RB:
-
indicate the delay-critical PDCP data volume to the MAC entity associated with the primary RLC entity;
-
indicate the delay-critical PDCP data volume excluding the PDCP Control PDU to the MAC entity associated with the RLC entity other than the primary RLC entity activated for PDCP duplication;
-
indicate the delay-critical PDCP data volume as 0 to the MAC entity associated with RLC entity deactivated for PDCP duplication;
-
else (i.e. the PDCP duplication is deactivated for the RB):
-
if the split secondary RLC entity is configured; and
-
if the total amount of PDCP data volume and RLC data volume pending for initial transmission (as specified in TS 38.322) in the primary RLC entity and the split secondary RLC entity is equal to or larger than ul-DataSplitThreshold:
-
indicate the delay-critical PDCP data volume to both the MAC entity associated with the primary RLC entity and the MAC entity associated with the split secondary RLC entity;
-
indicate the delay-critical PDCP data volume as 0 to the MAC entity associated with RLC entity other than the primary RLC entity and the split secondary RLC entity;
-
else:
-
indicate the delay-critical PDCP data volume to the MAC entity associated with the primary RLC entity;
-
indicate the delay-critical PDCP data volume as 0 to the MAC entity associated with the RLC entity other than the primary RLC entity.
For UM DRBs and AM DRBs configured by upper layers to send a PDCP SN gap report in the uplink (sn-GapReport in
TS 38.331), the transmitting PDCP entity shall trigger a PDCP SN gap report when:
-
the PDCP SDU(s) are discarded as specified in clause 5.3; and
-
there is at least one stored PDCP SDU(s) which is associated with a COUNT value larger than the COUNT value associated to the discarded PDCP SDU(s); and
-
the discarded PDCP SDU(s) have not been submitted by RLC to lower layers.
If a PDCP SN gap report is triggered, the transmitting PDCP entity shall:
-
compile a PDCP SN gap report as indicated below by:
-
setting the FDC field to the smallest COUNT value among the COUNT values associated with the discarded PDCP SDU(s);
-
if more than one PDCP SDUs are discarded:
-
allocating a Discard Bitmap field of length in bits equal to the number of COUNT values from and not including the first discarded PDCP SDU up to and including the last discarded PDCP SDU, rounded up to the next multiple of 8, or up to and including a PDCP SDU for which the resulting PDCP Control PDU size is equal to 9000 bytes, whichever comes first;
-
setting in the discard bitmap field as '0' for all PDCP SDUs that have not been discarded;
-
setting in the discard bitmap field as '1' for all PDCP SDUs that have been discarded;
-
submit the PDCP SN gap report to lower layers as specified in clause 5.2.1 for Uu interface.
At reception of a PDCP SN gap report from lower layers, the receiving PDCP entity shall:
-
consider each PDCP SDU, if any, with the bit in the discard bitmap set to '1', or with the associated COUNT value equal to the value of FDC field as discarded;
-
if RX_DELIV is less than or equal to the largest COUNT value associated with the discarded PDCP SDUs:
-
if RX_NEXT ≤ COUNT value associated with the last discarded PDCP SDU indicated in the PDCP SN gap report:
-
update RX_NEXT to the largest COUNT value associated with the discarded PDCP SDU + 1;
-
if RX_DELIV is equal to any COUNT value associated with the discarded PDCP SDU(s):
-
deliver to upper layers in ascending order of the associated COUNT value after performing header decompression, if not decompressed before:
-
all stored PDCP SDU(s) with consecutively associated COUNT values starting from COUNT = RX_DELIV + 1, where consecutively associated COUNT value(s) include COUNT value(s) of both the stored PDCP SDU(s) and PDCP SDU(s) which are considered as discarded;
-
update RX_DELIV to the COUNT value of the first PDCP SDU which has not been delivered to upper layers and is not considered as discarded, with COUNT value > RX_DELIV;
-
if t-Reordering is running, and if RX_DELIV >= RX_REORD:
-
stop and reset t-Reordering;
-
if t-Reordering is not running (includes the case when t-Reordering is stopped due to actions above), and RX_DELIV < RX_NEXT:
-
update RX_REORD to RX_NEXT;
-
start t-Reordering.