* Re: [dpdk-dev] [RFC] drivers: introduce mlx5 crypto PMD
@ 2021-04-05 19:03 Akhil Goyal
2021-04-06 6:04 ` Matan Azrad
0 siblings, 1 reply; 3+ messages in thread
From: Akhil Goyal @ 2021-04-05 19:03 UTC (permalink / raw)
To: Matan Azrad, dev; +Cc: Shiri Kuzin
Hi Matan/Shiri,
>
> Add a new PMD for Mellanox devices- crypto PMD.
>
> The crypto PMD will be supported starting Mellanox ConnectX6 and
> BlueField2.
>
> The crypto PMD will add the support of encryption and decryption using
> the AES-XTS symmetric algorithm.
>
> The crypto PMD requires rdma-core and uses mlx5 DevX.
>
> This patch adds the PCI probing, basic functions, build files and
> log utility.
>
> Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
> Acked-by: Matan Azrad <matan@nvidia.com>
> ---
Could you please send the complete patchset for the PMD?
Or is it postponed for 21.08?
Regards,
Akhil
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dpdk-dev] [RFC] drivers: introduce mlx5 crypto PMD
2021-04-05 19:03 [dpdk-dev] [RFC] drivers: introduce mlx5 crypto PMD Akhil Goyal
@ 2021-04-06 6:04 ` Matan Azrad
0 siblings, 0 replies; 3+ messages in thread
From: Matan Azrad @ 2021-04-06 6:04 UTC (permalink / raw)
To: Akhil Goyal, dev; +Cc: Shiri Kuzin
Hi Akhil
From: Akhil Goyal
> Hi Matan/Shiri,
>
> >
> > Add a new PMD for Mellanox devices- crypto PMD.
> >
> > The crypto PMD will be supported starting Mellanox ConnectX6 and
> > BlueField2.
> >
> > The crypto PMD will add the support of encryption and decryption using
> > the AES-XTS symmetric algorithm.
> >
> > The crypto PMD requires rdma-core and uses mlx5 DevX.
> >
> > This patch adds the PCI probing, basic functions, build files and log
> > utility.
> >
> > Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
> > Acked-by: Matan Azrad <matan@nvidia.com>
> > ---
> Could you please send the complete patchset for the PMD?
> Or is it postponed for 21.08?
We are doing an effort to send it before 21.05-RC1 but remember that we can close it until RC2 (new PMD).
>
> Regards,
> Akhil
^ permalink raw reply [flat|nested] 3+ messages in thread
* [dpdk-dev] [RFC] drivers: introduce mlx5 crypto PMD
@ 2021-03-11 7:26 Matan Azrad
0 siblings, 0 replies; 3+ messages in thread
From: Matan Azrad @ 2021-03-11 7:26 UTC (permalink / raw)
To: dev; +Cc: Shiri Kuzin
From: Shiri Kuzin <shirik@nvidia.com>
Add a new PMD for Mellanox devices- crypto PMD.
The crypto PMD will be supported starting Mellanox ConnectX6 and
BlueField2.
The crypto PMD will add the support of encryption and decryption using
the AES-XTS symmetric algorithm.
The crypto PMD requires rdma-core and uses mlx5 DevX.
This patch adds the PCI probing, basic functions, build files and
log utility.
Signed-off-by: Shiri Kuzin <shirik@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
MAINTAINERS | 4 +
drivers/common/mlx5/mlx5_common.h | 1 +
drivers/common/mlx5/mlx5_common_pci.c | 14 ++
drivers/common/mlx5/mlx5_common_pci.h | 21 +--
drivers/crypto/meson.build | 1 +
drivers/crypto/mlx5/meson.build | 26 +++
drivers/crypto/mlx5/mlx5_crypto.c | 288 ++++++++++++++++++++++++++++++++
drivers/crypto/mlx5/mlx5_crypto_utils.h | 19 +++
drivers/crypto/mlx5/version.map | 3 +
9 files changed, 367 insertions(+), 10 deletions(-)
create mode 100644 drivers/crypto/mlx5/meson.build
create mode 100644 drivers/crypto/mlx5/mlx5_crypto.c
create mode 100644 drivers/crypto/mlx5/mlx5_crypto_utils.h
create mode 100644 drivers/crypto/mlx5/version.map
diff --git a/MAINTAINERS b/MAINTAINERS
index 1962284..a449180 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1064,6 +1064,10 @@ F: drivers/crypto/octeontx2/
F: doc/guides/cryptodevs/octeontx2.rst
F: doc/guides/cryptodevs/features/octeontx2.ini
+Mellanox mlx5
+M: Matan Azrad <matan@nvidia.com>
+F: drivers/crypto/mlx5/
+
Null Crypto
M: Declan Doherty <declan.doherty@intel.com>
F: drivers/crypto/null/
diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h
index 99efa22..5b4d8d1 100644
--- a/drivers/common/mlx5/mlx5_common.h
+++ b/drivers/common/mlx5/mlx5_common.h
@@ -219,6 +219,7 @@ enum mlx5_class {
MLX5_CLASS_VDPA = RTE_BIT64(1),
MLX5_CLASS_REGEX = RTE_BIT64(2),
MLX5_CLASS_COMPRESS = RTE_BIT64(3),
+ MLX5_CLASS_CRYPTO = RTE_BIT64(4),
};
#define MLX5_DBR_SIZE RTE_CACHE_LINE_SIZE
diff --git a/drivers/common/mlx5/mlx5_common_pci.c b/drivers/common/mlx5/mlx5_common_pci.c
index 4ecc4d6..167d55b 100644
--- a/drivers/common/mlx5/mlx5_common_pci.c
+++ b/drivers/common/mlx5/mlx5_common_pci.c
@@ -30,6 +30,7 @@ static TAILQ_HEAD(mlx5_pci_devices_head, mlx5_pci_device) devices_list =
{ .name = "net", .driver_class = MLX5_CLASS_NET },
{ .name = "regex", .driver_class = MLX5_CLASS_REGEX },
{ .name = "compress", .driver_class = MLX5_CLASS_COMPRESS },
+ { .name = "crypto", .driver_class = MLX5_CLASS_CRYPTO },
};
static const unsigned int mlx5_class_combinations[] = {
@@ -37,13 +38,26 @@ static TAILQ_HEAD(mlx5_pci_devices_head, mlx5_pci_device) devices_list =
MLX5_CLASS_VDPA,
MLX5_CLASS_REGEX,
MLX5_CLASS_COMPRESS,
+ MLX5_CLASS_CRYPTO,
MLX5_CLASS_NET | MLX5_CLASS_REGEX,
MLX5_CLASS_VDPA | MLX5_CLASS_REGEX,
MLX5_CLASS_NET | MLX5_CLASS_COMPRESS,
MLX5_CLASS_VDPA | MLX5_CLASS_COMPRESS,
MLX5_CLASS_REGEX | MLX5_CLASS_COMPRESS,
+ MLX5_CLASS_NET | MLX5_CLASS_CRYPTO,
+ MLX5_CLASS_VDPA | MLX5_CLASS_CRYPTO,
+ MLX5_CLASS_REGEX | MLX5_CLASS_CRYPTO,
+ MLX5_CLASS_COMPRESS | MLX5_CLASS_CRYPTO,
MLX5_CLASS_NET | MLX5_CLASS_REGEX | MLX5_CLASS_COMPRESS,
MLX5_CLASS_VDPA | MLX5_CLASS_REGEX | MLX5_CLASS_COMPRESS,
+ MLX5_CLASS_NET | MLX5_CLASS_REGEX | MLX5_CLASS_CRYPTO,
+ MLX5_CLASS_VDPA | MLX5_CLASS_REGEX | MLX5_CLASS_CRYPTO,
+ MLX5_CLASS_NET | MLX5_CLASS_COMPRESS | MLX5_CLASS_CRYPTO,
+ MLX5_CLASS_VDPA | MLX5_CLASS_COMPRESS | MLX5_CLASS_CRYPTO,
+ MLX5_CLASS_NET | MLX5_CLASS_REGEX | MLX5_CLASS_COMPRESS |
+ MLX5_CLASS_CRYPTO,
+ MLX5_CLASS_VDPA | MLX5_CLASS_REGEX | MLX5_CLASS_COMPRESS |
+ MLX5_CLASS_CRYPTO,
/* New class combination should be added here. */
};
diff --git a/drivers/common/mlx5/mlx5_common_pci.h b/drivers/common/mlx5/mlx5_common_pci.h
index de89bb9..cb8d2f5 100644
--- a/drivers/common/mlx5/mlx5_common_pci.h
+++ b/drivers/common/mlx5/mlx5_common_pci.h
@@ -9,17 +9,18 @@
* @file
*
* RTE Mellanox PCI Driver Interface
- * Mellanox ConnectX PCI device supports multiple class: net,vdpa,regex and
- * compress devices. This layer enables creating such multiple class of devices
- * on a single PCI device by allowing to bind multiple class specific device
- * driver to attach to mlx5_pci driver.
+ * Mellanox ConnectX PCI device supports multiple class: net,vdpa,regex,compress
+ * and crypto devices. This layer enables creating such multiple class of
+ * devices on a single PCI device by allowing to bind multiple class specific
+ * device driver to attach to mlx5_pci driver.
*
- * ----------- ------------ ------------- ----------------
- * | mlx5 | | mlx5 | | mlx5 | | mlx5 |
- * | net pmd | | vdpa pmd | | regex pmd | | compress pmd |
- * ----------- ------------ ------------- ----------------
- * \ \ / /
- * \ \ / /
+ * -------- -------- --------- ------------ ----------
+ * | mlx5 | | mlx5 | | mlx5 | | mlx5 | | mlx5 |
+ * | net | | vdpa | | regex | | compress | | crypto |
+ * | pmd | | pmd | | pmd | | pmd | | pmd |
+ * -------- -------- --------- ------------ ----------
+ * \ \ | / /
+ * \ \ | / /
* \ \_--------------_/ /
* \_______________| mlx5 |_______________/
* | pci common |
diff --git a/drivers/crypto/meson.build b/drivers/crypto/meson.build
index c927c5f..90b2149 100644
--- a/drivers/crypto/meson.build
+++ b/drivers/crypto/meson.build
@@ -14,6 +14,7 @@ drivers = ['aesni_gcm',
'dpaa_sec',
'dpaa2_sec',
'kasumi',
+ 'mlx5',
'mvsam',
'nitrox',
'null',
diff --git a/drivers/crypto/mlx5/meson.build b/drivers/crypto/mlx5/meson.build
new file mode 100644
index 0000000..5bf0912
--- /dev/null
+++ b/drivers/crypto/mlx5/meson.build
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2021 Mellanox Technologies, Ltd
+
+if not is_linux
+ build = false
+ reason = 'only supported on Linux'
+ subdir_done()
+endif
+
+fmt_name = 'mlx5_crypto'
+deps += ['common_mlx5', 'eal', 'cryptodev']
+sources = files(
+ 'mlx5_crypto.c',
+)
+cflags_options = [
+ '-std=c11',
+ '-Wno-strict-prototypes',
+ '-D_BSD_SOURCE',
+ '-D_DEFAULT_SOURCE',
+ '-D_XOPEN_SOURCE=600'
+]
+foreach option:cflags_options
+ if cc.has_argument(option)
+ cflags += option
+ endif
+endforeach
\ No newline at end of file
diff --git a/drivers/crypto/mlx5/mlx5_crypto.c b/drivers/crypto/mlx5/mlx5_crypto.c
new file mode 100644
index 0000000..6e40176
--- /dev/null
+++ b/drivers/crypto/mlx5/mlx5_crypto.c
@@ -0,0 +1,288 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright 2021 Mellanox Technologies, Ltd
+ */
+
+#include <rte_malloc.h>
+#include <rte_log.h>
+#include <rte_errno.h>
+#include <rte_pci.h>
+#include <rte_crypto.h>
+#include <rte_cryptodev.h>
+#include <rte_cryptodev_pmd.h>
+
+#include <mlx5_glue.h>
+#include <mlx5_common.h>
+#include <mlx5_common_pci.h>
+#include <mlx5_devx_cmds.h>
+#include <mlx5_common_os.h>
+
+#include "mlx5_crypto_utils.h"
+
+#define MLX5_CRYPTO_DRIVER_NAME mlx5_crypto
+#define MLX5_CRYPTO_LOG_NAME pmd.crypto.mlx5
+
+struct mlx5_crypto_priv {
+ TAILQ_ENTRY(mlx5_crypto_priv) next;
+ struct ibv_context *ctx; /* Device context. */
+ struct rte_pci_device *pci_dev;
+ struct rte_cryptodev *crypto_dev;
+ void *uar; /* User Access Region. */
+ uint32_t pdn; /* Protection Domain number. */
+ struct ibv_pd *pd;
+};
+
+TAILQ_HEAD(mlx5_crypto_privs, mlx5_crypto_priv) mlx5_crypto_priv_list =
+ TAILQ_HEAD_INITIALIZER(mlx5_crypto_priv_list);
+static pthread_mutex_t priv_list_lock = PTHREAD_MUTEX_INITIALIZER;
+
+int mlx5_crypto_logtype;
+
+uint8_t mlx5_crypto_driver_id;
+
+static const char mlx5_crypto_drv_name[] = RTE_STR(MLX5_CRYPTO_DRIVER_NAME);
+
+static const struct rte_driver mlx5_drv = {
+ .name = mlx5_crypto_drv_name,
+ .alias = mlx5_crypto_drv_name
+};
+
+static struct cryptodev_driver mlx5_cryptodev_driver;
+
+static struct rte_cryptodev_ops mlx5_crypto_ops = {
+ .dev_configure = NULL,
+ .dev_start = NULL,
+ .dev_stop = NULL,
+ .dev_close = NULL,
+ .dev_infos_get = NULL,
+ .stats_get = NULL,
+ .stats_reset = NULL,
+ .queue_pair_setup = NULL,
+ .queue_pair_release = NULL,
+ .sym_session_get_size = NULL,
+ .sym_session_configure = NULL,
+ .sym_session_clear = NULL,
+ .sym_get_raw_dp_ctx_size = NULL,
+ .sym_configure_raw_dp_ctx = NULL,
+};
+
+static void
+mlx5_crypto_hw_global_release(struct mlx5_crypto_priv *priv)
+{
+ if (priv->pd != NULL) {
+ claim_zero(mlx5_glue->dealloc_pd(priv->pd));
+ priv->pd = NULL;
+ }
+ if (priv->uar != NULL) {
+ mlx5_glue->devx_free_uar(priv->uar);
+ priv->uar = NULL;
+ }
+}
+
+static int
+mlx5_crypto_pd_create(struct mlx5_crypto_priv *priv)
+{
+#ifdef HAVE_IBV_FLOW_DV_SUPPORT
+ struct mlx5dv_obj obj;
+ struct mlx5dv_pd pd_info;
+ int ret;
+
+ priv->pd = mlx5_glue->alloc_pd(priv->ctx);
+ if (priv->pd == NULL) {
+ DRV_LOG(ERR, "Failed to allocate PD.");
+ return errno ? -errno : -ENOMEM;
+ }
+ obj.pd.in = priv->pd;
+ obj.pd.out = &pd_info;
+ ret = mlx5_glue->dv_init_obj(&obj, MLX5DV_OBJ_PD);
+ if (ret != 0) {
+ DRV_LOG(ERR, "Fail to get PD object info.");
+ mlx5_glue->dealloc_pd(priv->pd);
+ priv->pd = NULL;
+ return -errno;
+ }
+ priv->pdn = pd_info.pdn;
+ return 0;
+#else
+ (void)priv;
+ DRV_LOG(ERR, "Cannot get pdn - no DV support.");
+ return -ENOTSUP;
+#endif /* HAVE_IBV_FLOW_DV_SUPPORT */
+}
+
+static int
+mlx5_crypto_hw_global_prepare(struct mlx5_crypto_priv *priv)
+{
+ if (mlx5_crypto_pd_create(priv) != 0)
+ return -1;
+ priv->uar = mlx5_devx_alloc_uar(priv->ctx, -1);
+ if (priv->uar == NULL || mlx5_os_get_devx_uar_reg_addr(priv->uar) ==
+ NULL) {
+ rte_errno = errno;
+ claim_zero(mlx5_glue->dealloc_pd(priv->pd));
+ DRV_LOG(ERR, "Failed to allocate UAR.");
+ return -1;
+ }
+ return 0;
+}
+
+/**
+ * DPDK callback to register a PCI device.
+ *
+ * This function spawns crypto device out of a given PCI device.
+ *
+ * @param[in] pci_drv
+ * PCI driver structure (mlx5_crypto_driver).
+ * @param[in] pci_dev
+ * PCI device information.
+ *
+ * @return
+ * 0 on success, 1 to skip this driver, a negative errno value otherwise
+ * and rte_errno is set.
+ */
+static int
+mlx5_crypto_pci_probe(struct rte_pci_driver *pci_drv,
+ struct rte_pci_device *pci_dev)
+{
+ struct ibv_device *ibv;
+ struct rte_cryptodev *crypto_dev;
+ struct ibv_context *ctx;
+ struct mlx5_crypto_priv *priv;
+ struct mlx5_hca_attr attr = { 0 };
+ struct rte_cryptodev_pmd_init_params init_params = {
+ .name = "",
+ .private_data_size = sizeof(struct mlx5_crypto_priv),
+ .socket_id = pci_dev->device.numa_node,
+ .max_nb_queue_pairs =
+ RTE_CRYPTODEV_PMD_DEFAULT_MAX_NB_QUEUE_PAIRS,
+ };
+ RTE_SET_USED(pci_drv);
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
+ DRV_LOG(ERR, "Non-primary process type is not supported.");
+ rte_errno = ENOTSUP;
+ return -rte_errno;
+ }
+ ibv = mlx5_os_get_ib_device_match(&pci_dev->addr);
+ if (ibv == NULL) {
+ DRV_LOG(ERR, "No matching IB device for PCI slot "
+ PCI_PRI_FMT ".", pci_dev->addr.domain,
+ pci_dev->addr.bus, pci_dev->addr.devid,
+ pci_dev->addr.function);
+ return -rte_errno;
+ }
+ DRV_LOG(INFO, "PCI information matches for device \"%s\".", ibv->name);
+ ctx = mlx5_glue->dv_open_device(ibv);
+ if (ctx == NULL) {
+ DRV_LOG(ERR, "Failed to open IB device \"%s\".", ibv->name);
+ rte_errno = ENODEV;
+ return -rte_errno;
+ }
+ if (mlx5_devx_cmd_query_hca_attr(ctx, &attr) != 0 ||
+ attr.crypto == 0 || attr.aes_xts == 0) {
+ DRV_LOG(ERR, "Not enough capabilities to support crypto "
+ "operations, maybe old FW/OFED version?");
+ claim_zero(mlx5_glue->close_device(ctx));
+ rte_errno = ENOTSUP;
+ return -ENOTSUP;
+ }
+ crypto_dev = rte_cryptodev_pmd_create(ibv->name, &pci_dev->device,
+ &init_params);
+ if (crypto_dev == NULL) {
+ DRV_LOG(ERR, "Failed to create device \"%s\".", ibv->name);
+ claim_zero(mlx5_glue->close_device(ctx));
+ return -ENODEV;
+ }
+ DRV_LOG(INFO,
+ "Crypto device %s was created successfully.", ibv->name);
+ crypto_dev->dev_ops = &mlx5_crypto_ops;
+ crypto_dev->dequeue_burst = NULL;
+ crypto_dev->enqueue_burst = NULL;
+ crypto_dev->feature_flags = RTE_CRYPTODEV_FF_HW_ACCELERATED;
+ crypto_dev->driver_id = mlx5_crypto_driver_id;
+ priv = crypto_dev->data->dev_private;
+ priv->ctx = ctx;
+ priv->pci_dev = pci_dev;
+ priv->crypto_dev = crypto_dev;
+ if (mlx5_crypto_hw_global_prepare(priv) != 0) {
+ rte_cryptodev_pmd_destroy(priv->crypto_dev);
+ claim_zero(mlx5_glue->close_device(priv->ctx));
+ return -1;
+ }
+ pthread_mutex_lock(&priv_list_lock);
+ TAILQ_INSERT_TAIL(&mlx5_crypto_priv_list, priv, next);
+ pthread_mutex_unlock(&priv_list_lock);
+ return 0;
+}
+
+static int
+mlx5_crypto_pci_remove(struct rte_pci_device *pdev)
+{
+ struct mlx5_crypto_priv *priv = NULL;
+
+ pthread_mutex_lock(&priv_list_lock);
+ TAILQ_FOREACH(priv, &mlx5_crypto_priv_list, next)
+ if (rte_pci_addr_cmp(&priv->pci_dev->addr, &pdev->addr) != 0)
+ break;
+ if (priv)
+ TAILQ_REMOVE(&mlx5_crypto_priv_list, priv, next);
+ pthread_mutex_unlock(&priv_list_lock);
+ if (priv) {
+ mlx5_crypto_hw_global_release(priv);
+ rte_cryptodev_pmd_destroy(priv->crypto_dev);
+ claim_zero(mlx5_glue->close_device(priv->ctx));
+ }
+ return 0;
+}
+
+static const struct rte_pci_id mlx5_crypto_pci_id_map[] = {
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX6)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX6DX)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX6DXBF)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX7)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX7BF)
+ },
+ {
+ .vendor_id = 0
+ }
+ };
+
+static struct mlx5_pci_driver mlx5_crypto_driver = {
+ .driver_class = MLX5_CLASS_CRYPTO,
+ .pci_driver = {
+ .driver = {
+ .name = RTE_STR(MLX5_CRYPTO_DRIVER_NAME),
+ },
+ .id_table = mlx5_crypto_pci_id_map,
+ .probe = mlx5_crypto_pci_probe,
+ .remove = mlx5_crypto_pci_remove,
+ .drv_flags = 0,
+ },
+};
+
+RTE_INIT(rte_mlx5_crypto_init)
+{
+ mlx5_common_init();
+ if (mlx5_glue != NULL)
+ mlx5_pci_driver_register(&mlx5_crypto_driver);
+}
+
+RTE_PMD_REGISTER_CRYPTO_DRIVER(mlx5_cryptodev_driver, mlx5_drv,
+ mlx5_crypto_driver_id);
+
+RTE_LOG_REGISTER(mlx5_crypto_logtype, MLX5_CRYPTO_LOG_NAME, NOTICE)
+RTE_PMD_EXPORT_NAME(MLX5_CRYPTO_DRIVER_NAME, __COUNTER__);
+RTE_PMD_REGISTER_PCI_TABLE(MLX5_CRYPTO_DRIVER_NAME, mlx5_crypto_pci_id_map);
+RTE_PMD_REGISTER_KMOD_DEP(MLX5_CRYPTO_DRIVER_NAME, "* ib_uverbs & mlx5_core & mlx5_ib");
diff --git a/drivers/crypto/mlx5/mlx5_crypto_utils.h b/drivers/crypto/mlx5/mlx5_crypto_utils.h
new file mode 100644
index 0000000..cef4b07
--- /dev/null
+++ b/drivers/crypto/mlx5/mlx5_crypto_utils.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright 2021 Mellanox Technologies, Ltd
+ */
+
+#ifndef RTE_PMD_MLX5_CRYPTO_UTILS_H_
+#define RTE_PMD_MLX5_CRYPTO_UTILS_H_
+
+#include <mlx5_common.h>
+
+extern int mlx5_crypto_logtype;
+
+#define MLX5_CRYPTO_LOG_PREFIX "mlx5_crypto"
+/* Generic printf()-like logging macro with automatic line feed. */
+#define DRV_LOG(level, ...) \
+ PMD_DRV_LOG_(level, mlx5_crypto_logtype, MLX5_CRYPTO_LOG_PREFIX, \
+ __VA_ARGS__ PMD_DRV_LOG_STRIP PMD_DRV_LOG_OPAREN, \
+ PMD_DRV_LOG_CPAREN)
+
+#endif /* RTE_PMD_MLX5_CRYPTO_UTILS_H_ */
diff --git a/drivers/crypto/mlx5/version.map b/drivers/crypto/mlx5/version.map
new file mode 100644
index 0000000..4a76d1d
--- /dev/null
+++ b/drivers/crypto/mlx5/version.map
@@ -0,0 +1,3 @@
+DPDK_21 {
+ local: *;
+};
--
1.8.3.1
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-06 6:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-05 19:03 [dpdk-dev] [RFC] drivers: introduce mlx5 crypto PMD Akhil Goyal
2021-04-06 6:04 ` Matan Azrad
-- strict thread matches above, loose matches on Subject: below --
2021-03-11 7:26 Matan Azrad
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).