DPDK 25.11.0-rc1
Data Structures | Enumerations | Functions
rte_pmd_cnxk_crypto.h File Reference
#include <stdbool.h>
#include <stdint.h>
#include <rte_compat.h>
#include <rte_crypto.h>
#include <rte_security.h>

Go to the source code of this file.

Data Structures

struct  rte_pmd_cnxk_crypto_qp_stats
 Crypto CNXK queue pair stats. More...
 
struct  rte_pmd_cnxk_crypto_sess
 Crypto CNXK PMD session structure. More...
 
struct  rte_pmd_cnxk_crypto_ae_ec_group_params
 AE EC (Elliptic Curve) group parameters structure. More...
 

Enumerations

enum  rte_pmd_cnxk_ae_ec_id
 

Functions

__rte_experimental struct rte_pmd_cnxk_crypto_qptr * rte_pmd_cnxk_crypto_qptr_get (uint8_t dev_id, uint16_t qp_id)
 
__rte_experimental void rte_pmd_cnxk_crypto_submit (struct rte_pmd_cnxk_crypto_qptr *qptr, void *inst, uint16_t nb_inst)
 
__rte_experimental int rte_pmd_cnxk_crypto_cptr_flush (struct rte_pmd_cnxk_crypto_qptr *qptr, struct rte_pmd_cnxk_crypto_cptr *cptr, bool invalidate)
 
__rte_experimental struct rte_pmd_cnxk_crypto_cptr * rte_pmd_cnxk_crypto_cptr_get (struct rte_pmd_cnxk_crypto_sess *rte_sess)
 
__rte_experimental int rte_pmd_cnxk_crypto_cptr_read (struct rte_pmd_cnxk_crypto_qptr *qptr, struct rte_pmd_cnxk_crypto_cptr *cptr, void *data, uint32_t len)
 
__rte_experimental int rte_pmd_cnxk_crypto_cptr_write (struct rte_pmd_cnxk_crypto_qptr *qptr, struct rte_pmd_cnxk_crypto_cptr *cptr, void *data, uint32_t len)
 
__rte_experimental int rte_pmd_cnxk_crypto_qp_stats_get (struct rte_pmd_cnxk_crypto_qptr *qptr, struct rte_pmd_cnxk_crypto_qp_stats *stats)
 
__rte_experimental const uint64_t * rte_pmd_cnxk_ae_fpm_table_get (uint8_t dev_id)
 
__rte_experimental const struct rte_pmd_cnxk_crypto_ae_ec_group_params ** rte_pmd_cnxk_ae_ec_grp_table_get (uint8_t dev_id, uint16_t *nb_max_entries)
 

Detailed Description

Marvell CNXK Crypto PMD specific functions.

Definition in file rte_pmd_cnxk_crypto.h.

Enumeration Type Documentation

◆ rte_pmd_cnxk_ae_ec_id

Enumerates supported elliptic curves

Definition at line 26 of file rte_pmd_cnxk_crypto.h.

Function Documentation

◆ rte_pmd_cnxk_crypto_qptr_get()

__rte_experimental struct rte_pmd_cnxk_crypto_qptr * rte_pmd_cnxk_crypto_qptr_get ( uint8_t  dev_id,
uint16_t  qp_id 
)

Get queue pointer of a specific queue in a cryptodev.

Parameters
dev_idDevice identifier of cryptodev device.
qp_idIndex of the queue pair.
Returns
  • On success, pointer to queue pair structure that would be the input to submit APIs.
  • NULL on error.

◆ rte_pmd_cnxk_crypto_submit()

__rte_experimental void rte_pmd_cnxk_crypto_submit ( struct rte_pmd_cnxk_crypto_qptr *  qptr,
void *  inst,
uint16_t  nb_inst 
)

Submit CPT instruction (cpt_inst_s) to hardware (CPT).

The qp is a pointer obtained from rte_pmd_cnxk_crypto_qp_get. Application should make sure it doesn't overflow the internal hardware queues. It may do so by making sure the inflight packets are not more than the number of descriptors configured.

This API may be called only after the cryptodev and queue pair is configured and is started.

Parameters
qptrPointer obtained with rte_pmd_cnxk_crypto_qptr_get.
instPointer to an array of instructions prepared by application.
nb_instNumber of instructions.

◆ rte_pmd_cnxk_crypto_cptr_flush()

__rte_experimental int rte_pmd_cnxk_crypto_cptr_flush ( struct rte_pmd_cnxk_crypto_qptr *  qptr,
struct rte_pmd_cnxk_crypto_cptr *  cptr,
bool  invalidate 
)

Flush the CPTR from CPT CTX cache.

This API must be called only after the cryptodev and queue pair is configured and is started.

Parameters
qptrPointer obtained with rte_pmd_cnxk_crypto_qptr_get.
cptrPointer obtained with rte_pmd_cnxk_crypto_cptr_get or any valid CPTR address that can be used with CPT CTX cache.
invalidateIf true, invalidate the CTX cache entry. If false, flush the CTX cache entry.
Returns
  • 0 on success.
  • Negative value on error.
    • -EINVAL if the input parameters are invalid.
    • -ENOTSUP if the operation is not supported.
    • -EAGAIN if the operation is not successful.
    • -EFAULT if the operation failed.

◆ rte_pmd_cnxk_crypto_cptr_get()

__rte_experimental struct rte_pmd_cnxk_crypto_cptr * rte_pmd_cnxk_crypto_cptr_get ( struct rte_pmd_cnxk_crypto_sess rte_sess)

Get the HW CPTR pointer from the rte_crypto/rte_security session.

Parameters
rte_sessPointer to the structure holding rte_cryptodev or rte_security session.
Returns
  • On success, pointer to the HW CPTR.
  • NULL on error.

◆ rte_pmd_cnxk_crypto_cptr_read()

__rte_experimental int rte_pmd_cnxk_crypto_cptr_read ( struct rte_pmd_cnxk_crypto_qptr *  qptr,
struct rte_pmd_cnxk_crypto_cptr *  cptr,
void *  data,
uint32_t  len 
)

Read HW context (CPTR).

Parameters
qptrPointer obtained with rte_pmd_cnxk_crypto_qptr_get.
cptrPointer obtained with rte_pmd_cnxk_crypto_cptr_get or any valid CPTR address that can be used with CPT CTX cache.
[out]dataDestination pointer to copy CPTR context for application.
lenLength of CPTR context to copy into data parameter.
Returns
  • 0 On success.
  • Negative value on error.
    • -EINVAL if the input parameters are invalid.
    • -ENOTSUP if the operation is not supported.
    • -EAGAIN if the operation is not successful.
    • -EFAULT if the operation failed.

◆ rte_pmd_cnxk_crypto_cptr_write()

__rte_experimental int rte_pmd_cnxk_crypto_cptr_write ( struct rte_pmd_cnxk_crypto_qptr *  qptr,
struct rte_pmd_cnxk_crypto_cptr *  cptr,
void *  data,
uint32_t  len 
)

Write HW context (CPTR).

Parameters
qptrPointer obtained with rte_pmd_cnxk_crypto_qptr_get.
cptrPointer obtained with rte_pmd_cnxk_crypto_cptr_get or any valid CPTR address that can be used with CPT CTX cache.
dataSource pointer to copy CPTR context from application.
lenLength of CPTR context to copy from data parameter.
Returns
  • 0 On success.
  • Negative value on error.
    • -EINVAL if the input parameters are invalid.
    • -ENOTSUP if the operation is not supported.
    • -EAGAIN if the operation is not successful.
    • -EFAULT if the operation failed.

◆ rte_pmd_cnxk_crypto_qp_stats_get()

__rte_experimental int rte_pmd_cnxk_crypto_qp_stats_get ( struct rte_pmd_cnxk_crypto_qptr *  qptr,
struct rte_pmd_cnxk_crypto_qp_stats stats 
)

Get the HW Queue Pair (LF) stats.

Parameters
qptrPointer obtained with rte_pmd_cnxk_crypto_qptr_get.
[out]statsPointer to the structure where stats will be copied.
Returns
  • 0 On success.
  • Negative value on error.
    • -EINVAL if the input parameters are invalid.

◆ rte_pmd_cnxk_ae_fpm_table_get()

__rte_experimental const uint64_t * rte_pmd_cnxk_ae_fpm_table_get ( uint8_t  dev_id)

Retrieves the addresses of the AE FPM (Finite Precision Math) tables.

This API should be called only after the cryptodev device has been successfully configured. The returned pointer reference memory that is valid as long as the device remains configured and is not destroyed or reconfigured. If the device is reconfigured or destroyed, the memory referenced by the returned pointer becomes invalid and must not be used.

Parameters
dev_idDevice identifier of cryptodev device.
Returns
  • On success pointer to the AE FPM table addresses.
  • NULL on error.

◆ rte_pmd_cnxk_ae_ec_grp_table_get()

__rte_experimental const struct rte_pmd_cnxk_crypto_ae_ec_group_params ** rte_pmd_cnxk_ae_ec_grp_table_get ( uint8_t  dev_id,
uint16_t *  nb_max_entries 
)

Retrieves the addresses of the AE EC group table.

This API should be called only after the cryptodev device has been successfully configured. The returned pointer reference memory that is valid as long as the device remains configured and is not destroyed or reconfigured. If the device is reconfigured or destroyed, the memory referenced by the returned pointer becomes invalid and must not be used.

Parameters
dev_idDevice identifier of cryptodev device.
nb_max_entriesPointer to store the maximum number of entries in the EC group table. This value is set by the function to indicate how many entries can be retrieved from the table.
Returns
  • On success, pointer to the AE EC group table structure address.
  • NULL on error.