diff options
Diffstat (limited to 'src/plugins/crypto_sw_scheduler/crypto_sw_scheduler.h')
-rw-r--r-- | src/plugins/crypto_sw_scheduler/crypto_sw_scheduler.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/plugins/crypto_sw_scheduler/crypto_sw_scheduler.h b/src/plugins/crypto_sw_scheduler/crypto_sw_scheduler.h index 50dd6c11830..e74dfdd2c2a 100644 --- a/src/plugins/crypto_sw_scheduler/crypto_sw_scheduler.h +++ b/src/plugins/crypto_sw_scheduler/crypto_sw_scheduler.h @@ -21,18 +21,32 @@ #define CRYPTO_SW_SCHEDULER_QUEUE_SIZE 64 #define CRYPTO_SW_SCHEDULER_QUEUE_MASK (CRYPTO_SW_SCHEDULER_QUEUE_SIZE - 1) +STATIC_ASSERT ((0 == (CRYPTO_SW_SCHEDULER_QUEUE_SIZE & + (CRYPTO_SW_SCHEDULER_QUEUE_SIZE - 1))), + "CRYPTO_SW_SCHEDULER_QUEUE_SIZE is not pow2"); + +typedef enum crypto_sw_scheduler_queue_type_t_ +{ + CRYPTO_SW_SCHED_QUEUE_TYPE_ENCRYPT = 0, + CRYPTO_SW_SCHED_QUEUE_TYPE_DECRYPT, + CRYPTO_SW_SCHED_QUEUE_N_TYPES +} crypto_sw_scheduler_queue_type_t; + typedef struct { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); u32 head; u32 tail; - vnet_crypto_async_frame_t *jobs[0]; + vnet_crypto_async_frame_t **jobs; } crypto_sw_scheduler_queue_t; typedef struct { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); - crypto_sw_scheduler_queue_t *queues[VNET_CRYPTO_ASYNC_OP_N_IDS]; + crypto_sw_scheduler_queue_t queue[CRYPTO_SW_SCHED_QUEUE_N_TYPES]; + u32 last_serve_lcore_id; + u8 last_serve_encrypt; + u8 last_return_queue; vnet_crypto_op_t *crypto_ops; vnet_crypto_op_t *integ_ops; vnet_crypto_op_t *chained_crypto_ops; |