5#ifndef _RTE_CRYPTO_SCHEDULER_H
6#define _RTE_CRYPTO_SCHEDULER_H
21#include "rte_cryptodev_scheduler_operations.h"
28#ifndef RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKERS
29#define RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKERS (8)
33#define RTE_CRYPTODEV_SCHEDULER_MAX_NB_WORKER_CORES (RTE_MAX_LCORE - 1)
36#define SCHEDULER_MODE_NAME_ROUND_ROBIN round-robin
38#define SCHEDULER_MODE_NAME_PKT_SIZE_DISTR packet-size-distr
40#define SCHEDULER_MODE_NAME_FAIL_OVER fail-over
42#define SCHEDULER_MODE_NAME_MULTI_CORE multi-core
48 CDEV_SCHED_MODE_NOT_SET = 0,
63#define RTE_CRYPTODEV_SCHEDULER_NAME_MAX_LEN (64)
64#define RTE_CRYPTODEV_SCHEDULER_DESC_MAX_LEN (256)
70 CDEV_SCHED_OPTION_NOT_SET = 0,
71 CDEV_SCHED_OPTION_THRESHOLD,
73 CDEV_SCHED_OPTION_COUNT
79#define RTE_CRYPTODEV_SCHEDULER_PARAM_THRES "threshold"
80struct rte_cryptodev_scheduler_threshold_option {
184 uint32_t enable_reorder);
255typedef uint16_t (*rte_cryptodev_scheduler_burst_enqueue_t)(
void *qp_ctx,
258typedef uint16_t (*rte_cryptodev_scheduler_burst_dequeue_t)(
void *qp_ctx,
268 struct rte_cryptodev_scheduler_ops *
ops;
struct rte_cryptodev_scheduler * crypto_scheduler_roundrobin
struct rte_cryptodev_scheduler * crypto_scheduler_failover
int rte_cryptodev_scheduler_worker_attach(uint8_t scheduler_id, uint8_t worker_id)
struct rte_cryptodev_scheduler * crypto_scheduler_pkt_size_based_distr
int rte_cryptodev_scheduler_option_get(uint8_t scheduler_id, enum rte_cryptodev_schedule_option_type option_type, void *option)
int rte_cryptodev_scheduler_mode_set(uint8_t scheduler_id, enum rte_cryptodev_scheduler_mode mode)
int rte_cryptodev_scheduler_workers_get(uint8_t scheduler_id, uint8_t *workers)
rte_cryptodev_schedule_option_type
enum rte_cryptodev_scheduler_mode rte_cryptodev_scheduler_mode_get(uint8_t scheduler_id)
rte_cryptodev_scheduler_mode
@ CDEV_SCHED_MODE_MULTICORE
@ CDEV_SCHED_MODE_FAILOVER
@ CDEV_SCHED_MODE_PKT_SIZE_DISTR
@ CDEV_SCHED_MODE_ROUNDROBIN
@ CDEV_SCHED_MODE_USERDEFINED
int rte_cryptodev_scheduler_worker_detach(uint8_t scheduler_id, uint8_t worker_id)
struct rte_cryptodev_scheduler * crypto_scheduler_multicore
int rte_cryptodev_scheduler_ordering_set(uint8_t scheduler_id, uint32_t enable_reorder)
int rte_cryptodev_scheduler_load_user_scheduler(uint8_t scheduler_id, struct rte_cryptodev_scheduler *scheduler)
int rte_cryptodev_scheduler_ordering_get(uint8_t scheduler_id)
int rte_cryptodev_scheduler_option_set(uint8_t scheduler_id, enum rte_cryptodev_schedule_option_type option_type, void *option)
enum rte_cryptodev_scheduler_mode mode
struct rte_cryptodev_scheduler_ops * ops