[PATCH v6 00/21] lib: add pdcp protocol

Akhil Goyal gakhil at marvell.com
Thu Jun 1 10:47:17 CEST 2023


> Subject: [PATCH v6 00/21] lib: add pdcp protocol
> 
> Add Packet Data Convergence Protocol (PDCP) processing library.
> 
> The library is similar to lib_ipsec which provides IPsec processing
> capabilities in DPDK.
> 
> PDCP would involve roughly the following operations,
> 1. Transfer of user plane data
> 2. Transfer of control plane data
> 3. Header compression
> 4. Uplink data compression
> 5. Ciphering and integrity protection
> 
> PDCP library provides following control path APIs that is used to
> configure various PDCP entities,
> 1. rte_pdcp_entity_establish()
> 2. rte_pdcp_entity_suspend()
> 3. rte_pdcp_entity_release()
> 
> PDCP process is split into 2 parts. One before crypto processing
> (rte_pdcp_pkt_pre_process()) and one after crypto processing
> (rte_pdcp_pkt_post_process()). Since cryptodev dequeue can return crypto
> operations belonging to multiple entities, rte_pdcp_pkt_crypto_group()
> is added to help grouping crypto operations belonging to same entity.
> 
> Similar to lib IPsec, lib PDCP would allow application to use same API
> sequence while leveraging protocol offload features enabled by rte_security
> library. Lib PDCP would internally change the handles registered for
> *pre_process* and *post_process* based on features enabled in the entity.
> 
> Lib PDCP would create the required sessions on the device provided in entity to
> minimize the application requirements. Also, the crypto_op allocation and free
> would also be done internally by lib PDCP to allow the library to create
> crypto ops as required for the input packets. For example, when control PDUs
> are
> received, no cryptodev enqueue-dequeue is expected for the same and lib PDCP
> is expected to handle it differently.
> 
> Lib PDCP utilizes reorder library for implementing in-order delivery. It
> utilizes bitmap library for implementing status reports and track the COUNT
> value of the packets received. To allow application to choose timer
> implementation of choice, lib PDCP allows application to configure handles that
> can be used for starting & stopping timers. Upon expiry, application can call
> corresponding PDCP API(``rte_pdcp_t_reordering_expiry_handle``) for handling
> the
> event. Unit tests are added to verify both rte_timer based timers as well as
> rte_eventdev based timers.
> 
> PDCP tracks the sequence number of the received packets and during events
> such
> as re-establishment, it is required to generate reports and transmit to the
> peer. This series introduces ``rte_pdcp_control_pdu_create`` for handling
> control PDU generation.
> 
> Changes in v6:
> - Rebased
> - Minor udpates to documentation (Akhil)

Series Acked-by: Akhil Goyal <gakhil at marvell.com>

Applied to dpdk-next-crypto
Thanks.


More information about the dev mailing list