DPDK  16.11.11
Data Structures | Typedefs | Functions | Variables
rte_cryptodev_pmd.h File Reference
#include <string.h>
#include <rte_dev.h>
#include <rte_pci.h>
#include <rte_malloc.h>
#include <rte_mbuf.h>
#include <rte_mempool.h>
#include <rte_log.h>
#include <rte_common.h>
#include "rte_crypto.h"
#include "rte_cryptodev.h"

Go to the source code of this file.

Data Structures

struct  rte_cryptodev_driver
 
struct  rte_cryptodev_global
 
struct  rte_cryptodev_ops
 

Typedefs

typedef int(* cryptodev_init_t) (struct rte_cryptodev_driver *drv, struct rte_cryptodev *dev)
 
typedef int(* cryptodev_uninit_t) (const struct rte_cryptodev_driver *drv, struct rte_cryptodev *dev)
 
typedef int(* cryptodev_configure_t) (struct rte_cryptodev *dev)
 
typedef int(* cryptodev_start_t) (struct rte_cryptodev *dev)
 
typedef void(* cryptodev_stop_t) (struct rte_cryptodev *dev)
 
typedef int(* cryptodev_close_t) (struct rte_cryptodev *dev)
 
typedef void(* cryptodev_stats_get_t) (struct rte_cryptodev *dev, struct rte_cryptodev_stats *stats)
 
typedef void(* cryptodev_stats_reset_t) (struct rte_cryptodev *dev)
 
typedef void(* cryptodev_info_get_t) (struct rte_cryptodev *dev, struct rte_cryptodev_info *dev_info)
 
typedef int(* cryptodev_queue_pair_start_t) (struct rte_cryptodev *dev, uint16_t qp_id)
 
typedef int(* cryptodev_queue_pair_stop_t) (struct rte_cryptodev *dev, uint16_t qp_id)
 
typedef int(* cryptodev_queue_pair_setup_t) (struct rte_cryptodev *dev, uint16_t qp_id, const struct rte_cryptodev_qp_conf *qp_conf, int socket_id)
 
typedef int(* cryptodev_queue_pair_release_t) (struct rte_cryptodev *dev, uint16_t qp_id)
 
typedef uint32_t(* cryptodev_queue_pair_count_t) (struct rte_cryptodev *dev)
 
typedef int(* cryptodev_sym_create_session_pool_t) (struct rte_cryptodev *dev, unsigned nb_objs, unsigned obj_cache_size, int socket_id)
 
typedef unsigned(* cryptodev_sym_get_session_private_size_t) (struct rte_cryptodev *dev)
 
typedef void(* cryptodev_sym_initialize_session_t) (struct rte_mempool *mempool, void *session_private)
 
typedef void *(* cryptodev_sym_configure_session_t) (struct rte_cryptodev *dev, struct rte_crypto_sym_xform *xform, void *session_private)
 
typedef void(* cryptodev_sym_free_session_t) (struct rte_cryptodev *dev, void *session_private)
 

Functions

static struct rte_cryptodevrte_cryptodev_pmd_get_dev (uint8_t dev_id)
 
static struct rte_cryptodevrte_cryptodev_pmd_get_named_dev (const char *name)
 
static unsigned rte_cryptodev_pmd_is_valid_dev (uint8_t dev_id)
 
struct rte_cryptodevrte_cryptodev_pmd_allocate (const char *name, int socket_id)
 
struct rte_cryptodevrte_cryptodev_pmd_virtual_dev_init (const char *name, size_t dev_private_size, int socket_id)
 
int rte_cryptodev_pmd_release_device (struct rte_cryptodev *cryptodev)
 
void rte_cryptodev_pmd_callback_process (struct rte_cryptodev *dev, enum rte_cryptodev_event_type event)
 
int rte_cryptodev_pci_probe (struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
 
int rte_cryptodev_pci_remove (struct rte_pci_device *pci_dev)
 

Variables

struct rte_cryptodev_globalrte_cryptodev_globals
 
struct rte_cryptodevrte_cryptodevs
 

Detailed Description

RTE Crypto PMD APIs

Note
These API are from crypto PMD only and user applications should not call them directly.

Definition in file rte_cryptodev_pmd.h.

Typedef Documentation

typedef int(* cryptodev_init_t) (struct rte_cryptodev_driver *drv, struct rte_cryptodev *dev)

Initialisation function of a crypto driver invoked for each matching crypto PCI device detected during the PCI probing phase.

Parameters
drvThe pointer to the [matching] crypto driver structure supplied by the PMD when it registered itself.
devThe dev pointer is the address of the rte_cryptodev structure associated with the matching device and which has been [automatically] allocated in the rte_crypto_devices array.
Returns
  • 0: Success, the device is properly initialised by the driver. In particular, the driver MUST have set up the dev_ops pointer of the dev structure.
  • <0: Error code of the device initialisation failure.

Definition at line 90 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_uninit_t) (const struct rte_cryptodev_driver *drv, struct rte_cryptodev *dev)

Finalisation function of a driver invoked for each matching PCI device detected during the PCI closing phase.

Parameters
drvThe pointer to the [matching] driver structure supplied by the PMD when it registered itself.
devThe dev pointer is the address of the rte_cryptodev structure associated with the matching device and which has been [automatically] allocated in the rte_crypto_devices array.
  • Returns
    • 0: Success, the device is properly finalised by the driver. In particular, the driver MUST free the dev_ops pointer of the dev structure.
    • <0: Error code of the device initialisation failure.

Definition at line 110 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_configure_t) (struct rte_cryptodev *dev)

Definitions of all functions exported by a driver through the the generic structure of type crypto_dev_ops supplied in the rte_cryptodev structure associated with a device. Function used to configure device.

Parameters
devCrypto device pointer
Returns
Returns 0 on success

Definition at line 231 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_start_t) (struct rte_cryptodev *dev)

Function used to start a configured device.

Parameters
devCrypto device pointer
Returns
Returns 0 on success

Definition at line 240 of file rte_cryptodev_pmd.h.

typedef void(* cryptodev_stop_t) (struct rte_cryptodev *dev)

Function used to stop a configured device.

Parameters
devCrypto device pointer

Definition at line 247 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_close_t) (struct rte_cryptodev *dev)

Function used to close a configured device.

Parameters
devCrypto device pointer
Returns
  • 0 on success.
  • EAGAIN if can't close as device is busy

Definition at line 257 of file rte_cryptodev_pmd.h.

typedef void(* cryptodev_stats_get_t) (struct rte_cryptodev *dev, struct rte_cryptodev_stats *stats)

Function used to get statistics of a device.

Parameters
devCrypto device pointer
statsPointer to crypto device stats structure to populate

Definition at line 266 of file rte_cryptodev_pmd.h.

typedef void(* cryptodev_stats_reset_t) (struct rte_cryptodev *dev)

Function used to reset statistics of a device.

Parameters
devCrypto device pointer

Definition at line 275 of file rte_cryptodev_pmd.h.

typedef void(* cryptodev_info_get_t) (struct rte_cryptodev *dev, struct rte_cryptodev_info *dev_info)

Function used to get specific information of a device.

Parameters
devCrypto device pointer

Definition at line 283 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_queue_pair_start_t) (struct rte_cryptodev *dev, uint16_t qp_id)

Start queue pair of a device.

Parameters
devCrypto device pointer
qp_idQueue Pair Index
Returns
Returns 0 on success.

Definition at line 294 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_queue_pair_stop_t) (struct rte_cryptodev *dev, uint16_t qp_id)

Stop queue pair of a device.

Parameters
devCrypto device pointer
qp_idQueue Pair Index
Returns
Returns 0 on success.

Definition at line 305 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_queue_pair_setup_t) (struct rte_cryptodev *dev, uint16_t qp_id, const struct rte_cryptodev_qp_conf *qp_conf, int socket_id)

Setup a queue pair for a device.

Parameters
devCrypto device pointer
qp_idQueue Pair Index
qp_confQueue configuration structure
socket_idSocket Index
Returns
Returns 0 on success.

Definition at line 318 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_queue_pair_release_t) (struct rte_cryptodev *dev, uint16_t qp_id)

Release memory resources allocated by given queue pair.

Parameters
devCrypto device pointer
qp_idQueue Pair Index
Returns
  • 0 on success.
  • EAGAIN if can't close as device is busy

Definition at line 332 of file rte_cryptodev_pmd.h.

typedef uint32_t(* cryptodev_queue_pair_count_t) (struct rte_cryptodev *dev)

Get number of available queue pairs of a device.

Parameters
devCrypto device pointer
Returns
Returns number of queue pairs on success.

Definition at line 342 of file rte_cryptodev_pmd.h.

typedef int(* cryptodev_sym_create_session_pool_t) (struct rte_cryptodev *dev, unsigned nb_objs, unsigned obj_cache_size, int socket_id)

Create a session mempool to allocate sessions from

Parameters
devCrypto device pointer
nb_objsnumber of sessions objects in mempool
obj_cachel-core object cache size, see rte_ring_create
socket_idSocket Id to allocate mempool on.
Returns
  • On success returns a pointer to a rte_mempool
  • On failure returns a NULL pointer

Definition at line 356 of file rte_cryptodev_pmd.h.

typedef unsigned(* cryptodev_sym_get_session_private_size_t) (struct rte_cryptodev *dev)

Get the size of a cryptodev session

Parameters
devCrypto device pointer
Returns
  • On success returns the size of the session structure for device
  • On failure returns 0

Definition at line 370 of file rte_cryptodev_pmd.h.

typedef void(* cryptodev_sym_initialize_session_t) (struct rte_mempool *mempool, void *session_private)

Initialize a Crypto session on a device.

Parameters
devCrypto device pointer
xformSingle or chain of crypto xforms
priv_sessPointer to cryptodev's private session structure
Returns
  • Returns private session structure on success.
  • Returns NULL on failure.

Definition at line 384 of file rte_cryptodev_pmd.h.

typedef void*(* cryptodev_sym_configure_session_t) (struct rte_cryptodev *dev, struct rte_crypto_sym_xform *xform, void *session_private)

Configure a Crypto session on a device.

Parameters
devCrypto device pointer
xformSingle or chain of crypto xforms
priv_sessPointer to cryptodev's private session structure
Returns
  • Returns private session structure on success.
  • Returns NULL on failure.

Definition at line 398 of file rte_cryptodev_pmd.h.

typedef void(* cryptodev_sym_free_session_t) (struct rte_cryptodev *dev, void *session_private)

Free Crypto session.

Parameters
sessionCryptodev session structure to free

Definition at line 405 of file rte_cryptodev_pmd.h.

Function Documentation

static struct rte_cryptodev* rte_cryptodev_pmd_get_dev ( uint8_t  dev_id)
static

Get the rte_cryptodev structure device pointer for the device. Assumes a valid device index.

Parameters
dev_idDevice ID value to select the device structure.
Returns

Definition at line 156 of file rte_cryptodev_pmd.h.

static struct rte_cryptodev* rte_cryptodev_pmd_get_named_dev ( const char *  name)
static

Get the rte_cryptodev structure device pointer for the named device.

Parameters
namedevice name to select the device structure.
Returns

Definition at line 170 of file rte_cryptodev_pmd.h.

static unsigned rte_cryptodev_pmd_is_valid_dev ( uint8_t  dev_id)
inlinestatic

Validate if the crypto device index is valid attached crypto device.

Parameters
dev_idCrypto device index.
Returns
  • If the device index is valid (1) or not (0).

Definition at line 198 of file rte_cryptodev_pmd.h.

struct rte_cryptodev* rte_cryptodev_pmd_allocate ( const char *  name,
int  socket_id 
)

Function for internal use by dummy drivers primarily, e.g. ring-based driver. Allocates a new cryptodev slot for an crypto device and returns the pointer to that slot for the driver to use.

Parameters
nameUnique identifier name for each device
socket_idSocket to allocate resources on.
Returns
  • Slot in the rte_dev_devices array for a new device;
struct rte_cryptodev* rte_cryptodev_pmd_virtual_dev_init ( const char *  name,
size_t  dev_private_size,
int  socket_id 
)

Creates a new virtual crypto device and returns the pointer to that device.

Parameters
namePMD type name
dev_private_sizeSize of crypto PMDs private data
socket_idSocket to allocate resources on.
Returns
  • Cryptodev pointer if device is successfully created.
  • NULL if device cannot be created.
int rte_cryptodev_pmd_release_device ( struct rte_cryptodev cryptodev)

Function for internal use by dummy drivers primarily, e.g. ring-based driver. Release the specified cryptodev device.

Parameters
cryptodevThe cryptodev pointer is the address of the rte_cryptodev structure.
Returns
  • 0 on success, negative on error
void rte_cryptodev_pmd_callback_process ( struct rte_cryptodev dev,
enum rte_cryptodev_event_type  event 
)

Executes all the user application registered callbacks for the specific device.

  • Parameters
    devPointer to cryptodev struct
    eventCrypto device interrupt event type.
    Returns
    void
int rte_cryptodev_pci_probe ( struct rte_pci_driver pci_drv,
struct rte_pci_device pci_dev 
)

Wrapper for use by pci drivers as a .probe function to attach to a crypto interface.

int rte_cryptodev_pci_remove ( struct rte_pci_device pci_dev)

Wrapper for use by pci drivers as a .remove function to detach a crypto interface.

Variable Documentation

struct rte_cryptodev_global* rte_cryptodev_globals

pointer to global crypto devices data structure.

struct rte_cryptodev* rte_cryptodevs

The pool of rte_cryptodev structures.