DPDK  16.04.0
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_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, enum pmd_type type, 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)
int rte_cryptodev_pmd_driver_register (struct rte_cryptodev_driver *crypto_drv, enum pmd_type type)
void rte_cryptodev_pmd_callback_process (struct rte_cryptodev *dev, enum rte_cryptodev_event_type event)

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 96 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 116 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 236 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 245 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 252 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 262 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 271 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 280 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 288 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 299 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 310 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 323 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 337 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 347 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 361 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 375 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 389 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 403 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 410 of file rte_cryptodev_pmd.h.

Function Documentation

static struct rte_cryptodev* rte_cryptodev_pmd_get_dev ( uint8_t  dev_id)
staticread

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 162 of file rte_cryptodev_pmd.h.

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

Get the rte_cryptodev structure device pointer for the named device.

Parameters
namedevice name to select the device structure.
Returns

Definition at line 176 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 203 of file rte_cryptodev_pmd.h.

struct rte_cryptodev* rte_cryptodev_pmd_allocate ( const char *  name,
enum pmd_type  type,
int  socket_id 
)
read

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
typeDevice type of this Crypto 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 
)
read

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
int rte_cryptodev_pmd_driver_register ( struct rte_cryptodev_driver crypto_drv,
enum pmd_type  type 
)

Register a Crypto [Poll Mode] driver.

Function invoked by the initialization function of a Crypto driver to simultaneously register itself as Crypto Poll Mode Driver and to either:

 a - register itself as PCI driver if the crypto device is a physical
    device, by invoking the rte_eal_pci_register() function to
    register the *pci_drv* structure embedded in the *crypto_drv*
    structure, after having stored the address of the
    rte_cryptodev_init() function in the *devinit* field of the
    *pci_drv* structure.

    During the PCI probing phase, the rte_cryptodev_init()
    function is invoked for each PCI [device] matching the
    embedded PCI identifiers provided by the driver.

 b, complete the initialization sequence if the device is a virtual
    device by calling the rte_cryptodev_init() directly passing a
    NULL parameter for the rte_pci_device structure.
Parameters
crypto_drvcrypto_driver structure associated with the crypto driver.
typepmd type
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

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.