> 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