Provided by: dpdk-doc_24.11.2-2_all bug

NAME

       rte_cryptodev_scheduler.h

SYNOPSIS

       #include <stdint.h>
       #include 'rte_cryptodev_scheduler_operations.h'

   Data Structures
       struct rte_cryptodev_scheduler

   Macros
       #define RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKERS   (8)
       #define RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKER_CORES   (RTE_MAX_LCORE - 1)
       #define SCHEDULER_MODE_NAME_ROUND_ROBIN   round-robin
       #define SCHEDULER_MODE_NAME_PKT_SIZE_DISTR   packet-size-distr
       #define SCHEDULER_MODE_NAME_FAIL_OVER   fail-over
       #define SCHEDULER_MODE_NAME_MULTI_CORE   multi-core
       #define RTE_CRYPTODEV_SCHEDULER_PARAM_THRES   'threshold'

   Enumerations
       enum rte_cryptodev_scheduler_mode {  }
       enum rte_cryptodev_schedule_option_type

   Functions
       int rte_cryptodev_scheduler_load_user_scheduler (uint8_t scheduler_id, struct rte_cryptodev_scheduler
           *scheduler)
       int rte_cryptodev_scheduler_worker_attach (uint8_t scheduler_id, uint8_t worker_id)
       int rte_cryptodev_scheduler_worker_detach (uint8_t scheduler_id, uint8_t worker_id)
       int rte_cryptodev_scheduler_mode_set (uint8_t scheduler_id, enum rte_cryptodev_scheduler_mode mode)
       enum rte_cryptodev_scheduler_mode rte_cryptodev_scheduler_mode_get (uint8_t scheduler_id)
       int rte_cryptodev_scheduler_ordering_set (uint8_t scheduler_id, uint32_t enable_reorder)
       int rte_cryptodev_scheduler_ordering_get (uint8_t scheduler_id)
       int rte_cryptodev_scheduler_workers_get (uint8_t scheduler_id, uint8_t *workers)
       int rte_cryptodev_scheduler_option_set (uint8_t scheduler_id, enum rte_cryptodev_schedule_option_type
           option_type, void *option)
       int rte_cryptodev_scheduler_option_get (uint8_t scheduler_id, enum rte_cryptodev_schedule_option_type
           option_type, void *option)

   Variables
       struct rte_cryptodev_scheduler * crypto_scheduler_roundrobin
       struct rte_cryptodev_scheduler * crypto_scheduler_pkt_size_based_distr
       struct rte_cryptodev_scheduler * crypto_scheduler_failover
       struct rte_cryptodev_scheduler * crypto_scheduler_multicore

Detailed Description

       RTE Cryptodev Scheduler Device

       The RTE Cryptodev Scheduler Device allows the aggregation of multiple worker Cryptodevs into a single
       logical crypto device, and the scheduling the crypto operations to the workers based on the mode of the
       specified mode of operation specified and supported. This implementation supports 3 modes of operation:
       round robin, packet-size based, and fail-over.

       Definition in file rte_cryptodev_scheduler.h.

Macro Definition Documentation

   #define RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKERS   (8)
       Maximum number of bonding devices per device

       Definition at line 29 of file rte_cryptodev_scheduler.h.

   #define RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKER_CORES   (RTE_MAX_LCORE - 1)
       Maximum number of multi-core worker cores

       Definition at line 33 of file rte_cryptodev_scheduler.h.

   #define SCHEDULER_MODE_NAME_ROUND_ROBIN   round-robin
       Round-robin scheduling mode string

       Definition at line 36 of file rte_cryptodev_scheduler.h.

   #define SCHEDULER_MODE_NAME_PKT_SIZE_DISTR   packet-size-distr
       Packet-size based distribution scheduling mode string

       Definition at line 38 of file rte_cryptodev_scheduler.h.

   #define SCHEDULER_MODE_NAME_FAIL_OVER   fail-over
       Fail-over scheduling mode string

       Definition at line 40 of file rte_cryptodev_scheduler.h.

   #define SCHEDULER_MODE_NAME_MULTI_CORE   multi-core
       multi-core scheduling mode string

       Definition at line 42 of file rte_cryptodev_scheduler.h.

   #define RTE_CRYPTODEV_SCHEDULER_PARAM_THRES   'threshold'
       Threshold option structure

       Definition at line 79 of file rte_cryptodev_scheduler.h.

Enumeration Type Documentation

   enum rte_cryptodev_scheduler_mode
       Crypto scheduler PMD operation modes

       Enumerator

       CDEV_SCHED_MODE_USERDEFINED
              User defined mode

       CDEV_SCHED_MODE_ROUNDROBIN
              Round-robin mode

       CDEV_SCHED_MODE_PKT_SIZE_DISTR
              Packet-size based distribution mode

       CDEV_SCHED_MODE_FAILOVER
              Fail-over mode

       CDEV_SCHED_MODE_MULTICORE
              multi-core mode

       CDEV_SCHED_MODE_COUNT
              number of modes

       Definition at line 47 of file rte_cryptodev_scheduler.h.

   enum rte_cryptodev_schedule_option_type
       Crypto scheduler option types

       Definition at line 69 of file rte_cryptodev_scheduler.h.

Function Documentation

   int  rte_cryptodev_scheduler_load_user_scheduler  (uint8_t  scheduler_id,  struct  rte_cryptodev_scheduler  *
       scheduler)
       Load a user defined scheduler

       Parameters
           scheduler_id The target scheduler device ID
           scheduler Pointer to the user defined scheduler

       Returns

           • 0 if the scheduler is successfully loaded

           • -ENOTSUP if the operation is not supported.

           • -EBUSY if device is started.

           • -EINVAL if input values are invalid.

   int rte_cryptodev_scheduler_worker_attach (uint8_t scheduler_id, uint8_t worker_id)
       Attach a crypto device to the scheduler

       Parameters
           scheduler_id The target scheduler device ID
           worker_id Crypto device ID to be attached

       Returns

           • 0 if the worker is attached.

           • -ENOTSUP if the operation is not supported.

           • -EBUSY if device is started.

           • -ENOMEM if the scheduler's worker list is full.

   int rte_cryptodev_scheduler_worker_detach (uint8_t scheduler_id, uint8_t worker_id)
       Detach a crypto device from the scheduler

       Parameters
           scheduler_id The target scheduler device ID
           worker_id Crypto device ID to be detached

       Returns

           • 0 if the worker is detached.

           • -ENOTSUP if the operation is not supported.

           • -EBUSY if device is started.

   int rte_cryptodev_scheduler_mode_set (uint8_t scheduler_id, enum rte_cryptodev_scheduler_mode mode)
       Set the scheduling mode

       Parameters
           scheduler_id The target scheduler device ID
           mode The scheduling mode

       Returns

           • 0 if the mode is set.

           • -ENOTSUP if the operation is not supported.

           • -EBUSY if device is started.

   enum rte_cryptodev_scheduler_mode rte_cryptodev_scheduler_mode_get (uint8_t scheduler_id)
       Get the current scheduling mode

       Parameters
           scheduler_id The target scheduler device ID

       Returns
           mode

           • non-negative enumerate value: the scheduling mode

           • -ENOTSUP if the operation is not supported.

   int rte_cryptodev_scheduler_ordering_set (uint8_t scheduler_id, uint32_t enable_reorder)
       Set the crypto ops reordering feature on/off

       Parameters
           scheduler_id The target scheduler device ID
           enable_reorder Set the crypto op reordering feature

           • 0: disable reordering

           • 1: enable reordering

       Returns

           • 0 if the ordering is set.

           • -ENOTSUP if the operation is not supported.

           • -EBUSY if device is started.

   int rte_cryptodev_scheduler_ordering_get (uint8_t scheduler_id)
       Get the current crypto ops reordering feature

       Parameters
           scheduler_id The target scheduler device ID

       Returns

           • 0 if reordering is disabled

           • 1 if reordering is enabled

           • -ENOTSUP if the operation is not supported.

   int rte_cryptodev_scheduler_workers_get (uint8_t scheduler_id, uint8_t * workers)
       Get the attached workers' count and/or ID

       Parameters
           scheduler_id The target scheduler device ID
           workers If successful, the function will write back all workers' device IDs  to  it.  This  parameter
           will either be an uint8_t array of RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKERS elements or NULL.

       Returns

           • non-negative number: the number of workers attached

           • -ENOTSUP if the operation is not supported.

   int   rte_cryptodev_scheduler_option_set   (uint8_t   scheduler_id,  enum  rte_cryptodev_schedule_option_type
       option_type, void * option)
       Set the mode specific option

       Parameters
           scheduler_id The target scheduler device ID
           option_type The option type enumerate
           option The specific mode's option structure

       Returns

           • 0 if successful

           • negative integer if otherwise.

   int  rte_cryptodev_scheduler_option_get  (uint8_t   scheduler_id,   enum   rte_cryptodev_schedule_option_type
       option_type, void * option)
       Set the mode specific option

       Parameters
           scheduler_id The target scheduler device ID
           option_type The option type enumerate
           option If successful, the function will write back the current

       Returns

           • 0 if successful

           • negative integer if otherwise.

Variable Documentation

   struct rte_cryptodev_scheduler* crypto_scheduler_roundrobin [extern]
       Round-robin mode scheduler

   struct rte_cryptodev_scheduler* crypto_scheduler_pkt_size_based_distr [extern]
       Packet-size based distribution mode scheduler

   struct rte_cryptodev_scheduler* crypto_scheduler_failover [extern]
       Fail-over mode scheduler

   struct rte_cryptodev_scheduler* crypto_scheduler_multicore [extern]
       multi-core mode scheduler

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                    rte_cryptodev_scheduler.h(3)