X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fcrypto_sw_scheduler%2Fcrypto_sw_scheduler.h;h=e74dfdd2c2a5fad62773277afd46a0b9d5b29fec;hb=83b2bb86769fef6b6ff985ca4d2d8d64551caf17;hp=50dd6c1183075597a3282a640fa1f4724fe15bec;hpb=70e808b1bfc25d1664ddb917457040b419e123c8;p=vpp.git 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;