table of contents
rte_pdcp.h(3) | DPDK | rte_pdcp.h(3) |
NAME¶
rte_pdcp.h
SYNOPSIS¶
#include <rte_compat.h>
#include <rte_common.h>
#include <rte_mempool.h>
#include <rte_pdcp_hdr.h>
#include <rte_security.h>
#include <rte_pdcp_group.h>
Data Structures¶
struct rte_pdcp_entity
struct rte_pdcp_t_reordering
struct rte_pdcp_entity_conf
Typedefs¶
typedef void(* rte_pdcp_t_reordering_start_cb_t)
(void *timer, void *args)
typedef void(* rte_pdcp_t_reordering_stop_cb_t) (void *timer,
void *args)
Functions¶
__rte_experimental struct rte_pdcp_entity *
rte_pdcp_entity_establish (const struct rte_pdcp_entity_conf
*conf)
__rte_experimental int rte_pdcp_entity_release (struct
rte_pdcp_entity *pdcp_entity, struct rte_mbuf *out_mb[])
__rte_experimental int rte_pdcp_entity_suspend (struct
rte_pdcp_entity *pdcp_entity, struct rte_mbuf *out_mb[])
__rte_experimental struct rte_mbuf * rte_pdcp_control_pdu_create
(struct rte_pdcp_entity *pdcp_entity, enum
rte_pdcp_ctrl_pdu_type type)
static __rte_experimental uint16_t rte_pdcp_pkt_pre_process (const
struct rte_pdcp_entity *entity, struct rte_mbuf *mb[], struct
rte_crypto_op *cop[], uint16_t num, uint16_t *nb_err)
static __rte_experimental uint16_t rte_pdcp_pkt_post_process (const
struct rte_pdcp_entity *entity, struct rte_mbuf *in_mb[],
struct rte_mbuf *out_mb[], uint16_t num, uint16_t *nb_err)
__rte_experimental uint16_t rte_pdcp_t_reordering_expiry_handle (const
struct rte_pdcp_entity *entity, struct rte_mbuf *out_mb[])
Detailed Description¶
RTE PDCP support.
A framework for PDCP protocol processing.
Definition in file rte_pdcp.h.
Typedef Documentation¶
typedef void(* rte_pdcp_t_reordering_start_cb_t) (void *timer, void *args)¶
Callback function type for t-Reordering timer start, set during PDCP entity establish. This callback is invoked by PDCP library, during t-Reordering timer start event. Only one t-Reordering per receiving PDCP entity would be running at a given time.
See also:
rte_pdcp_entity_establish()
Parameters:
args Pointer to timer arguments.
Definition at line 84 of file rte_pdcp.h.
typedef void(* rte_pdcp_t_reordering_stop_cb_t) (void *timer, void *args)¶
Callback function type for t-Reordering timer stop, set during PDCP entity establish. This callback will be invoked by PDCP library, during t-Reordering timer stop event.
See also:
rte_pdcp_entity_establish()
Parameters:
args Pointer to timer arguments.
Definition at line 98 of file rte_pdcp.h.
Function Documentation¶
__rte_experimental struct rte_pdcp_entity* rte_pdcp_entity_establish (const struct rte_pdcp_entity_conf * conf)¶
Warning:
5.1.1 PDCP entity establishment
Establish PDCP entity based on provided input configuration.
Parameters:
Returns:
- Valid handle if success
- NULL in case of failure. rte_errno will be set to error code.
__rte_experimental int rte_pdcp_entity_release (struct rte_pdcp_entity * pdcp_entity, struct rte_mbuf * out_mb[])¶
Warning:
5.1.3 PDCP entity release
Release PDCP entity.
For UL/transmitting PDCP entity, all stored PDCP SDUs would be dropped. For DL/receiving PDCP entity, the stored PDCP SDUs would be returned in out_mb buffer. The buffer should be large enough to hold all cached packets in the entity.
Entity release would result in freeing all memory associated with the PDCP entity as well as any crypto/security sessions created.
Parameters:
out_mb The address of an array that can hold up to rte_pdcp_entity.max_pkt_cache pointers to rte_mbuf structures.
Returns:
- 0: Success and no cached packets to return
- >0: Success and the number of packets returned in out_mb
- <0: Error code in case of failures
__rte_experimental int rte_pdcp_entity_suspend (struct rte_pdcp_entity * pdcp_entity, struct rte_mbuf * out_mb[])¶
Warning:
5.1.4 PDCP entity suspend
Suspend PDCP entity.
For DL/receiving PDCP entity, the stored PDCP SDUs would be returned in out_mb buffer. The buffer should be large enough to hold all cached packets in the entity.
For UL/transmitting PDCP entity, out_mb buffer would be unused.
Parameters:
out_mb The address of an array that can hold up to rte_pdcp_entity.max_pkt_cache pointers to rte_mbuf structures.
Returns:
- 0: Success and no cached packets to return.
- >0: Success and the number of packets returned in out_mb.
- <0: Error code in case of failures.
__rte_experimental struct rte_mbuf* rte_pdcp_control_pdu_create (struct rte_pdcp_entity * pdcp_entity, enum rte_pdcp_ctrl_pdu_type type)¶
Warning:
Create control PDU packet of the type specified. The control PDU packet would be allocated from rte_pdcp_entity_conf.ctrl_pdu_pool by lib PDCP.
Parameters:
type Type of control PDU to be generated.
Returns:
- Control PDU generated, in case of success.
- NULL in case of failure. rte_errno will be set to error code.
static __rte_experimental uint16_t rte_pdcp_pkt_pre_process (const struct rte_pdcp_entity * entity, struct rte_mbuf * mb[], struct rte_crypto_op * cop[], uint16_t num, uint16_t * nb_err) [inline], [static]¶
Warning:
For input mbufs and given PDCP entity pre-process the mbufs and prepare crypto ops that can be enqueued to the cryptodev associated with given session. Only error packets would be moved returned in the input buffer, mb, and it is the responsibility of the application to free the same.
Parameters:
mb The address of an array of num pointers to rte_mbuf structures which contain the input packets. Any error packets would be returned in the same buffer.
cop The address of an array that can hold up to num pointers to rte_crypto_op structures. Crypto ops would be allocated by rte_pdcp_pkt_pre_process API.
num The maximum number of packets to process.
nb_err Pointer to return the number of error packets returned in mb.
Returns:
Definition at line 293 of file rte_pdcp.h.
static __rte_experimental uint16_t rte_pdcp_pkt_post_process (const struct rte_pdcp_entity * entity, struct rte_mbuf * in_mb[], struct rte_mbuf * out_mb[], uint16_t num, uint16_t * nb_err) [inline], [static]¶
Warning:
For input mbufs and given PDCP entity, perform PDCP post-processing of the mbufs.
Input mbufs are the ones retrieved from rte_crypto_ops dequeued from cryptodev and grouped by rte_pdcp_pkt_crypto_group().
The post-processed packets would be returned in the out_mb buffer. The resultant mbufs would be grouped into success packets and error packets. Error packets would be grouped in the end of the array and it is the responsibility of the application to handle the same.
When in-order delivery is enabled, PDCP entity may buffer packets and would deliver packets only when all prior packets have been post-processed. That would result in returning more/less packets than enqueued.
Parameters:
in_mb The address of an array of num pointers to rte_mbuf structures.
out_mb The address of an array that can hold up to rte_pdcp_entity.max_pkt_cache pointers to rte_mbuf structures to output packets after PDCP post-processing.
num The maximum number of packets to process.
nb_err The number of error packets returned in out_mb buffer.
Returns:
Definition at line 334 of file rte_pdcp.h.
__rte_experimental uint16_t rte_pdcp_t_reordering_expiry_handle (const struct rte_pdcp_entity * entity, struct rte_mbuf * out_mb[])¶
Warning:
5.2.2.2 Actions when a t-Reordering expires
When t-Reordering timer expires, PDCP is required to slide the reception window by updating state variables such as RX_REORD & RX_DELIV. PDCP would need to deliver some of the buffered packets based on the state variables and conditions described.
The expiry handle need to be invoked by the application when t-Reordering timer expires. In addition to returning buffered packets, it may also restart timer based on the state variables.
Parameters:
out_mb The address of an array that can hold up to rte_pdcp_entity.max_pkt_cache pointers to rte_mbuf structures. Used to return buffered packets that are expired.
Returns:
Author¶
Generated automatically by Doxygen for DPDK from the source code.
Thu May 23 2024 | Version 23.11.0 |