[dpdk-dev] [PATCH v3 3/7] cryptodev: move inline APIs into separate structure
Ananyev, Konstantin
konstantin.ananyev at intel.com
Tue Oct 19 13:11:33 CEST 2021
> diff --git a/lib/cryptodev/rte_cryptodev_core.h b/lib/cryptodev/rte_cryptodev_core.h
> index 1633e55889..e9e9a44b3c 100644
> --- a/lib/cryptodev/rte_cryptodev_core.h
> +++ b/lib/cryptodev/rte_cryptodev_core.h
> @@ -25,6 +25,35 @@ typedef uint16_t (*enqueue_pkt_burst_t)(void *qp,
> struct rte_crypto_op **ops, uint16_t nb_ops);
> /**< Enqueue packets for processing on queue pair of a device. */
>
> +/**
> + * @internal
> + * Structure used to hold opaque pointers to internal ethdev Rx/Tx
> + * queues data.
> + * The main purpose to expose these pointers at all - allow compiler
> + * to fetch this data for fast-path cryptodev inline functions in advance.
> + */
> +struct rte_cryptodev_qpdata {
> + /** points to array of internal queue pair data pointers. */
> + void **data;
> + /** points to array of enqueue callback data pointers */
> + struct rte_cryptodev_cb_rcu *enq_cb;
> + /** points to array of dequeue callback data pointers */
> + struct rte_cryptodev_cb_rcu *deq_cb;
> +};
> +
> +struct rte_crypto_fp_ops {
> + /** PMD enqueue burst function. */
> + enqueue_pkt_burst_t enqueue_burst;
> + /** PMD dequeue burst function. */
> + dequeue_pkt_burst_t dequeue_burst;
> + /** Internal queue pair data pointers. */
> + struct rte_cryptodev_qpdata qp;
> + /** Reserved for future ops. */
> + uintptr_t reserved[4];
I think it has to be uintptr_t reserved[3];
2 function pointers + 3 data pointers +3 reserved pointers.
Otherwise it will occupy extra 64B line.
> +} __rte_cache_aligned;
> +
> +extern struct rte_crypto_fp_ops rte_crypto_fp_ops[RTE_CRYPTO_MAX_DEVS];
> +
> /**
> * @internal
> * The data part, with no function pointers, associated with each device.
> diff --git a/lib/cryptodev/version.map b/lib/cryptodev/version.map
> index 43cf937e40..ed62ced221 100644
> --- a/lib/cryptodev/version.map
> +++ b/lib/cryptodev/version.map
> @@ -45,6 +45,9 @@ DPDK_22 {
> rte_cryptodev_sym_session_init;
> rte_cryptodevs;
>
> + #added in 21.11
> + rte_crypto_fp_ops;
> +
> local: *;
> };
>
> @@ -109,6 +112,8 @@ EXPERIMENTAL {
> INTERNAL {
> global:
>
> + cryptodev_fp_ops_reset;
> + cryptodev_fp_ops_set;
> rte_cryptodev_allocate_driver;
> rte_cryptodev_pmd_allocate;
> rte_cryptodev_pmd_callback_process;
> --
> 2.25.1
More information about the dev
mailing list