[dpdk-dev] [EXT] [dpdk-dev v2] cryptodev: change raw data path dequeue API
Akhil Goyal
gakhil at marvell.com
Thu Apr 15 16:45:58 CEST 2021
>
> Hi Akhil,
>
> It is possible the user don't know how many ops to dequeue.
> For example in VPP crypto up to 64 buffers (vnet_crypto_async_frame_elt_t)
> are wrapped into the following data structure
>
> typedef struct
> {
> CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
> vnet_crypto_async_frame_state_t state;
> vnet_crypto_async_op_id_t op:8;
> u16 n_elts;
> vnet_crypto_async_frame_elt_t elts[VNET_CRYPTO_FRAME_SIZE];
> u32 buffer_indices[VNET_CRYPTO_FRAME_SIZE];
> u16 next_node_index[VNET_CRYPTO_FRAME_SIZE];
> u32 enqueue_thread_index;
> } vnet_crypto_async_frame_t;
>
> Instead of passing vnet_crypto_async_frame_elt_t Pointer as metadata to
> cryptodev, we have to pass vnet_crypto_async_frame_t pointer into
> cryptodev.
> The callback function helps parse the first dequeued metadata to get n_elts
> and will dequeue that many ops.
>
> But in case we cannot dequeue the whole frame, passing the number of ops
> not dequeued yet in the next dequeue_burst operation should help us to
> dequeue the whole frame. In this case we only have to cache up to 1 frame
> pointer for half dequeued frame.
>
> As the patch stated this should help cover both cases for user either dequeue
> the wrapped data structure with multiple buffers, or dequeue a burst of
> packets - hence giving people more flexibility.
>
> Regards,
> Fan
>
Ok.
Acked-by: Akhil Goyal <gakhil at marvell.com>
More information about the dev
mailing list