@@ -162,12 +162,6 @@ ceil_byte_length(uint32_t num_bits)
return (num_bits >> 3);
}
-static uint32_t
-get_raw_dp_dequeue_count(void *user_data __rte_unused)
-{
- return 1;
-}
-
static void
post_process_raw_dp_op(void *user_data, uint32_t index __rte_unused,
uint8_t is_op_success)
@@ -345,7 +339,7 @@ process_sym_raw_dp_op(uint8_t dev_id, uint16_t qp_id,
n = n_success = 0;
while (count++ < MAX_RAW_DEQUEUE_COUNT && n == 0) {
n = rte_cryptodev_raw_dequeue_burst(ctx,
- get_raw_dp_dequeue_count, post_process_raw_dp_op,
+ NULL, 1, post_process_raw_dp_op,
(void **)&ret_op, 0, &n_success,
&dequeue_status);
if (dequeue_status < 0) {
@@ -130,6 +130,8 @@ ABI Changes
* No ABI change that would break compatibility with 20.11.
+* cryptodev: the function ``rte_cryptodev_raw_dequeue_burst`` is added a
+ parameter ``max_nb_to_dequeue`` to give user a more flexible dequeue control.
Known Issues
------------
@@ -707,6 +707,7 @@ qat_sym_dp_enqueue_chain_jobs(void *qp_data, uint8_t *drv_ctx,
static __rte_always_inline uint32_t
qat_sym_dp_dequeue_burst(void *qp_data, uint8_t *drv_ctx,
rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count,
+ uint32_t max_nb_to_dequeue,
rte_cryptodev_raw_post_dequeue_t post_dequeue,
void **out_user_data, uint8_t is_user_data_array,
uint32_t *n_success_jobs, int *return_status)
@@ -736,7 +737,8 @@ qat_sym_dp_dequeue_burst(void *qp_data, uint8_t *drv_ctx,
resp_opaque = (void *)(uintptr_t)resp->opaque_data;
/* get the dequeue count */
- n = get_dequeue_count(resp_opaque);
+ n = get_dequeue_count != NULL ? get_dequeue_count(resp_opaque) :
+ max_nb_to_dequeue;
if (unlikely(n == 0))
return 0;
@@ -2232,13 +2232,14 @@ rte_cryptodev_raw_enqueue_done(struct rte_crypto_raw_dp_ctx *ctx,
uint32_t
rte_cryptodev_raw_dequeue_burst(struct rte_crypto_raw_dp_ctx *ctx,
rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count,
+ uint32_t max_nb_to_dequeue,
rte_cryptodev_raw_post_dequeue_t post_dequeue,
void **out_user_data, uint8_t is_user_data_array,
uint32_t *n_success_jobs, int *status)
{
return (*ctx->dequeue_burst)(ctx->qp_data, ctx->drv_ctx_data,
- get_dequeue_count, post_dequeue, out_user_data,
- is_user_data_array, n_success_jobs, status);
+ get_dequeue_count, max_nb_to_dequeue, post_dequeue,
+ out_user_data, is_user_data_array, n_success_jobs, status);
}
int
@@ -1546,6 +1546,9 @@ typedef void (*rte_cryptodev_raw_post_dequeue_t)(void *user_data,
* @param drv_ctx Driver specific context data.
* @param get_dequeue_count User provided callback function to
* obtain dequeue operation count.
+ * @param max_nb_to_dequeue When get_dequeue_count is NULL this
+ * value is used to pass the maximum
+ * number of operations to be dequeued.
* @param post_dequeue User provided callback function to
* post-process a dequeued operation.
* @param out_user_data User data pointer array to be retrieve
@@ -1580,6 +1583,7 @@ typedef void (*rte_cryptodev_raw_post_dequeue_t)(void *user_data,
typedef uint32_t (*cryptodev_sym_raw_dequeue_burst_t)(void *qp,
uint8_t *drv_ctx,
rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count,
+ uint32_t max_nb_to_dequeue,
rte_cryptodev_raw_post_dequeue_t post_dequeue,
void **out_user_data, uint8_t is_user_data_array,
uint32_t *n_success, int *dequeue_status);
@@ -1747,6 +1751,9 @@ rte_cryptodev_raw_enqueue_done(struct rte_crypto_raw_dp_ctx *ctx,
* data.
* @param get_dequeue_count User provided callback function to
* obtain dequeue operation count.
+ * @param max_nb_to_dequeue When get_dequeue_count is NULL this
+ * value is used to pass the maximum
+ * number of operations to be dequeued.
* @param post_dequeue User provided callback function to
* post-process a dequeued operation.
* @param out_user_data User data pointer array to be retrieve
@@ -1782,6 +1789,7 @@ __rte_experimental
uint32_t
rte_cryptodev_raw_dequeue_burst(struct rte_crypto_raw_dp_ctx *ctx,
rte_cryptodev_raw_get_dequeue_count_t get_dequeue_count,
+ uint32_t max_nb_to_dequeue,
rte_cryptodev_raw_post_dequeue_t post_dequeue,
void **out_user_data, uint8_t is_user_data_array,
uint32_t *n_success, int *dequeue_status);