[v2,5/5] cryptodev: move device specific structures
Checks
Commit Message
The device specific structures - rte_cryptodev
and rte_cryptodev_data are moved to cryptodev_pmd.h
to hide it from the applications.
Signed-off-by: Akhil Goyal <gakhil@marvell.com>
---
drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c | 1 -
drivers/crypto/ccp/ccp_dev.h | 2 +-
drivers/crypto/cnxk/cn10k_ipsec.c | 2 +-
drivers/crypto/cnxk/cn9k_ipsec.c | 2 +-
.../crypto/cnxk/cnxk_cryptodev_capabilities.c | 2 +-
drivers/crypto/cnxk/cnxk_cryptodev_sec.c | 2 +-
drivers/crypto/nitrox/nitrox_sym_reqmgr.c | 2 +-
drivers/crypto/octeontx/otx_cryptodev.c | 1 -
.../crypto/octeontx/otx_cryptodev_hw_access.c | 2 +-
.../crypto/octeontx/otx_cryptodev_hw_access.h | 2 +-
drivers/crypto/octeontx/otx_cryptodev_ops.h | 2 +-
.../crypto/octeontx2/otx2_cryptodev_mbox.c | 2 +-
drivers/crypto/scheduler/scheduler_failover.c | 2 +-
.../crypto/scheduler/scheduler_multicore.c | 2 +-
.../scheduler/scheduler_pkt_size_distr.c | 2 +-
.../crypto/scheduler/scheduler_roundrobin.c | 2 +-
drivers/event/cnxk/cnxk_eventdev.h | 2 +-
drivers/event/dpaa/dpaa_eventdev.c | 2 +-
drivers/event/dpaa2/dpaa2_eventdev.c | 2 +-
drivers/event/octeontx/ssovf_evdev.c | 2 +-
.../event/octeontx2/otx2_evdev_crypto_adptr.c | 2 +-
lib/cryptodev/cryptodev_pmd.h | 65 ++++++++++++++++++
lib/cryptodev/rte_cryptodev_core.h | 67 -------------------
lib/cryptodev/version.map | 2 +-
24 files changed, 85 insertions(+), 89 deletions(-)
Comments
Hi Akhil,
> -----Original Message-----
> From: Akhil Goyal <gakhil@marvell.com>
> Sent: Monday, October 11, 2021 1:43 PM
> To: dev@dpdk.org
> Cc: thomas@monjalon.net; david.marchand@redhat.com;
> hemant.agrawal@nxp.com; anoobj@marvell.com; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; Trahe, Fiona <fiona.trahe@intel.com>;
> Doherty, Declan <declan.doherty@intel.com>; matan@nvidia.com;
> g.singh@nxp.com; Zhang, Roy Fan <roy.fan.zhang@intel.com>;
> jianjay.zhou@huawei.com; asomalap@amd.com; ruifeng.wang@arm.com;
> Ananyev, Konstantin <konstantin.ananyev@intel.com>; Nicolau, Radu
> <radu.nicolau@intel.com>; ajit.khaparde@broadcom.com;
> rnagadheeraj@marvell.com; adwivedi@marvell.com; Power, Ciara
> <ciara.power@intel.com>; Akhil Goyal <gakhil@marvell.com>
> Subject: [PATCH v2 5/5] cryptodev: move device specific structures
>
> The device specific structures - rte_cryptodev
> and rte_cryptodev_data are moved to cryptodev_pmd.h
> to hide it from the applications.
>
> Signed-off-by: Akhil Goyal <gakhil@marvell.com>
> ---
...
> diff --git a/lib/cryptodev/cryptodev_pmd.h
> b/lib/cryptodev/cryptodev_pmd.h
> index a71edbb991..0d1bef0e67 100644
> --- a/lib/cryptodev/cryptodev_pmd.h
> +++ b/lib/cryptodev/cryptodev_pmd.h
> @@ -52,6 +52,71 @@ struct rte_cryptodev_pmd_init_params {
> unsigned int max_nb_queue_pairs;
> };
>
> +/**
> + * @internal
> + * The data part, with no function pointers, associated with each device.
> + *
> + * This structure is safe to place in shared memory to be common among
> + * different processes in a multi-process configuration.
> + */
> +struct rte_cryptodev_data {
> + /** Device ID for this instance */
> + uint8_t dev_id;
> + /** Socket ID where memory is allocated */
> + uint8_t socket_id;
> + /** Unique identifier name */
> + char name[RTE_CRYPTODEV_NAME_MAX_LEN];
> +
> + __extension__
> + /** Device state: STARTED(1)/STOPPED(0) */
> + uint8_t dev_started : 1;
> +
> + /** Session memory pool */
> + struct rte_mempool *session_pool;
Looks like we never used this pool ever - shall we take this chance to remove it?
> + /** Array of pointers to queue pairs. */
> + void **queue_pairs;
> + /** Number of device queue pairs. */
> + uint16_t nb_queue_pairs;
queue_pairs are likely the only item we use rte_cryptodev_data in the fast-path.
Also take this chance to move it to the beginning of the structure?
> +
> + /** PMD-specific private data */
> + void *dev_private;
> +} __rte_cache_aligned;
> +
Not really comments but some suggestions - could be done in the future as the
structure is moved to internal in this patchset.
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
> > +struct rte_cryptodev_data {
> > + /** Device ID for this instance */
> > + uint8_t dev_id;
> > + /** Socket ID where memory is allocated */
> > + uint8_t socket_id;
> > + /** Unique identifier name */
> > + char name[RTE_CRYPTODEV_NAME_MAX_LEN];
> > +
> > + __extension__
> > + /** Device state: STARTED(1)/STOPPED(0) */
> > + uint8_t dev_started : 1;
> > +
> > + /** Session memory pool */
> > + struct rte_mempool *session_pool;
>
> Looks like we never used this pool ever - shall we take this chance to remove
> it?
It is getting used in qp release which checks if all sessions are cleared before releasing the QP.
>
> > + /** Array of pointers to queue pairs. */
> > + void **queue_pairs;
> > + /** Number of device queue pairs. */
> > + uint16_t nb_queue_pairs;
>
> queue_pairs are likely the only item we use rte_cryptodev_data in the fast-
> path.
> Also take this chance to move it to the beginning of the structure?
As per latest design, rte_cryptodev_data will not be used in fast path.
In control path, all data path params are set in the fp_array.
Hence no need to change.
>
> > +
> > + /** PMD-specific private data */
> > + void *dev_private;
> > +} __rte_cache_aligned;
> > +
>
> Not really comments but some suggestions - could be done in the future as
> the
> structure is moved to internal in this patchset.
> Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
@@ -6,7 +6,6 @@
#include <rte_common.h>
#include <rte_hexdump.h>
-#include <rte_cryptodev.h>
#include <cryptodev_pmd.h>
#include <rte_bus_vdev.h>
#include <rte_malloc.h>
@@ -17,7 +17,7 @@
#include <rte_pci.h>
#include <rte_spinlock.h>
#include <rte_crypto_sym.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
/**< CCP sspecific */
#define MAX_HW_QUEUES 5
@@ -3,7 +3,7 @@
*/
#include <rte_malloc.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_esp.h>
#include <rte_ip.h>
#include <rte_security.h>
@@ -2,7 +2,7 @@
* Copyright(C) 2021 Marvell.
*/
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_ip.h>
#include <rte_security.h>
#include <rte_security_driver.h>
@@ -2,7 +2,7 @@
* Copyright(C) 2021 Marvell.
*/
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_security.h>
#include "roc_api.h"
@@ -2,7 +2,7 @@
* Copyright(C) 2021 Marvell.
*/
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_malloc.h>
#include <rte_security.h>
#include <rte_security_driver.h>
@@ -3,7 +3,7 @@
*/
#include <rte_crypto.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_cycles.h>
#include <rte_errno.h>
@@ -4,7 +4,6 @@
#include <rte_bus_pci.h>
#include <rte_common.h>
-#include <rte_cryptodev.h>
#include <cryptodev_pmd.h>
#include <rte_log.h>
#include <rte_pci.h>
@@ -7,7 +7,7 @@
#include <rte_branch_prediction.h>
#include <rte_common.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_errno.h>
#include <rte_mempool.h>
#include <rte_memzone.h>
@@ -7,7 +7,7 @@
#include <stdbool.h>
#include <rte_branch_prediction.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_cycles.h>
#include <rte_io.h>
#include <rte_memory.h>
@@ -5,7 +5,7 @@
#ifndef _OTX_CRYPTODEV_OPS_H_
#define _OTX_CRYPTODEV_OPS_H_
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#define OTX_CPT_MIN_HEADROOM_REQ (24)
#define OTX_CPT_MIN_TAILROOM_REQ (8)
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (C) 2019 Marvell International Ltd.
*/
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_ethdev.h>
#include "otx2_cryptodev.h"
@@ -2,7 +2,7 @@
* Copyright(c) 2017 Intel Corporation
*/
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_malloc.h>
#include "rte_cryptodev_scheduler_operations.h"
@@ -3,7 +3,7 @@
*/
#include <unistd.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_malloc.h>
#include "rte_cryptodev_scheduler_operations.h"
@@ -2,7 +2,7 @@
* Copyright(c) 2017 Intel Corporation
*/
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_malloc.h>
#include "rte_cryptodev_scheduler_operations.h"
@@ -2,7 +2,7 @@
* Copyright(c) 2017 Intel Corporation
*/
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_malloc.h>
#include "rte_cryptodev_scheduler_operations.h"
@@ -7,7 +7,7 @@
#include <string.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_devargs.h>
#include <rte_ethdev.h>
#include <rte_event_eth_rx_adapter.h>
@@ -28,7 +28,7 @@
#include <rte_ethdev.h>
#include <rte_event_eth_rx_adapter.h>
#include <rte_event_eth_tx_adapter.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_dpaa_bus.h>
#include <rte_dpaa_logs.h>
#include <rte_cycles.h>
@@ -25,7 +25,7 @@
#include <rte_pci.h>
#include <rte_bus_vdev.h>
#include <ethdev_driver.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_event_eth_rx_adapter.h>
#include <rte_event_eth_tx_adapter.h>
@@ -5,7 +5,7 @@
#include <inttypes.h>
#include <rte_common.h>
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_debug.h>
#include <rte_dev.h>
#include <rte_eal.h>
@@ -2,7 +2,7 @@
* Copyright (C) 2020-2021 Marvell.
*/
-#include <rte_cryptodev.h>
+#include <cryptodev_pmd.h>
#include <rte_eventdev.h>
#include "otx2_cryptodev.h"
@@ -52,6 +52,71 @@ struct rte_cryptodev_pmd_init_params {
unsigned int max_nb_queue_pairs;
};
+/**
+ * @internal
+ * The data part, with no function pointers, associated with each device.
+ *
+ * This structure is safe to place in shared memory to be common among
+ * different processes in a multi-process configuration.
+ */
+struct rte_cryptodev_data {
+ /** Device ID for this instance */
+ uint8_t dev_id;
+ /** Socket ID where memory is allocated */
+ uint8_t socket_id;
+ /** Unique identifier name */
+ char name[RTE_CRYPTODEV_NAME_MAX_LEN];
+
+ __extension__
+ /** Device state: STARTED(1)/STOPPED(0) */
+ uint8_t dev_started : 1;
+
+ /** Session memory pool */
+ struct rte_mempool *session_pool;
+ /** Array of pointers to queue pairs. */
+ void **queue_pairs;
+ /** Number of device queue pairs. */
+ uint16_t nb_queue_pairs;
+
+ /** PMD-specific private data */
+ void *dev_private;
+} __rte_cache_aligned;
+
+/** @internal The data structure associated with each crypto device. */
+struct rte_cryptodev {
+ /** Pointer to PMD dequeue function. */
+ dequeue_pkt_burst_t dequeue_burst;
+ /** Pointer to PMD enqueue function. */
+ enqueue_pkt_burst_t enqueue_burst;
+
+ /** Pointer to device data */
+ struct rte_cryptodev_data *data;
+ /** Functions exported by PMD */
+ struct rte_cryptodev_ops *dev_ops;
+ /** Feature flags exposes HW/SW features for the given device */
+ uint64_t feature_flags;
+ /** Backing device */
+ struct rte_device *device;
+
+ /** Crypto driver identifier*/
+ uint8_t driver_id;
+
+ /** User application callback for interrupts if present */
+ struct rte_cryptodev_cb_list link_intr_cbs;
+
+ /** Context for security ops */
+ void *security_ctx;
+
+ __extension__
+ /** Flag indicating the device is attached */
+ uint8_t attached : 1;
+
+ /** User application callback for pre enqueue processing */
+ struct rte_cryptodev_cb_rcu *enq_cbs;
+ /** User application callback for post dequeue processing */
+ struct rte_cryptodev_cb_rcu *deq_cbs;
+} __rte_cache_aligned;
+
/** Global structure used for maintaining state of allocated crypto devices */
struct rte_cryptodev_global {
struct rte_cryptodev *devs; /**< Device information array */
@@ -54,73 +54,6 @@ struct rte_crypto_fp_ops {
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.
- *
- * This structure is safe to place in shared memory to be common among
- * different processes in a multi-process configuration.
- */
-struct rte_cryptodev_data {
- uint8_t dev_id;
- /**< Device ID for this instance */
- uint8_t socket_id;
- /**< Socket ID where memory is allocated */
- char name[RTE_CRYPTODEV_NAME_MAX_LEN];
- /**< Unique identifier name */
-
- __extension__
- uint8_t dev_started : 1;
- /**< Device state: STARTED(1)/STOPPED(0) */
-
- struct rte_mempool *session_pool;
- /**< Session memory pool */
- void **queue_pairs;
- /**< Array of pointers to queue pairs. */
- uint16_t nb_queue_pairs;
- /**< Number of device queue pairs. */
-
- void *dev_private;
- /**< PMD-specific private data */
-} __rte_cache_aligned;
-
-
-/** @internal The data structure associated with each crypto device. */
-struct rte_cryptodev {
- dequeue_pkt_burst_t dequeue_burst;
- /**< Pointer to PMD receive function. */
- enqueue_pkt_burst_t enqueue_burst;
- /**< Pointer to PMD transmit function. */
-
- struct rte_cryptodev_data *data;
- /**< Pointer to device data */
- struct rte_cryptodev_ops *dev_ops;
- /**< Functions exported by PMD */
- uint64_t feature_flags;
- /**< Feature flags exposes HW/SW features for the given device */
- struct rte_device *device;
- /**< Backing device */
-
- uint8_t driver_id;
- /**< Crypto driver identifier*/
-
- struct rte_cryptodev_cb_list link_intr_cbs;
- /**< User application callback for interrupts if present */
-
- void *security_ctx;
- /**< Context for security ops */
-
- __extension__
- uint8_t attached : 1;
- /**< Flag indicating the device is attached */
-
- struct rte_cryptodev_cb_rcu *enq_cbs;
- /**< User application callback for pre enqueue processing */
-
- struct rte_cryptodev_cb_rcu *deq_cbs;
- /**< User application callback for post dequeue processing */
-} __rte_cache_aligned;
-
/**
* The pool of rte_cryptodev structures.
*/
@@ -43,7 +43,6 @@ DPDK_22 {
rte_cryptodev_sym_session_create;
rte_cryptodev_sym_session_free;
rte_cryptodev_sym_session_init;
- rte_cryptodevs;
#added in 21.11
rte_crypto_fp_ops;
@@ -124,4 +123,5 @@ INTERNAL {
rte_cryptodev_pmd_get_named_dev;
rte_cryptodev_pmd_parse_input_args;
rte_cryptodev_pmd_release_device;
+ rte_cryptodevs;
};