diff --git a/MAINTAINERS b/MAINTAINERS
index 7e2d42da3..0a549cc05 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -206,6 +206,8 @@ F: lib/librte_ethdev/ethdev_trace_points.c
 F: lib/librte_ethdev/rte_trace_ethdev*.h
 F: lib/librte_eventdev/eventdev_trace_points.c
 F: lib/librte_eventdev/rte_trace_eventdev*.h
+F: lib/librte_cryptodev/cryptodev_trace_points.c
+F: lib/librte_cryptodev/rte_trace_cryptodev*.h
 
 Memory Allocation
 M: Anatoly Burakov <anatoly.burakov@intel.com>
diff --git a/drivers/crypto/ccp/Makefile b/drivers/crypto/ccp/Makefile
index 3f5da2adf..df064fbdc 100644
--- a/drivers/crypto/ccp/Makefile
+++ b/drivers/crypto/ccp/Makefile
@@ -10,6 +10,7 @@ LIB = librte_pmd_ccp.a
 CFLAGS += -O3
 CFLAGS += -I$(SRCDIR)
 CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 # external library include paths
 LDLIBS += -lcrypto
diff --git a/drivers/crypto/ccp/meson.build b/drivers/crypto/ccp/meson.build
index 6f7217adb..996ede283 100644
--- a/drivers/crypto/ccp/meson.build
+++ b/drivers/crypto/ccp/meson.build
@@ -5,6 +5,8 @@ if not is_linux
 	build = false
 	reason = 'only supported on linux'
 endif
+
+allow_experimental_apis = true
 dep = dependency('libcrypto', required: false)
 if not dep.found()
 	build = false
diff --git a/drivers/crypto/mvsam/Makefile b/drivers/crypto/mvsam/Makefile
index f0641ae7d..0cd2029ba 100644
--- a/drivers/crypto/mvsam/Makefile
+++ b/drivers/crypto/mvsam/Makefile
@@ -22,6 +22,7 @@ CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -I$(RTE_SDK)/drivers/common/mvep
 CFLAGS += -I$(LIBMUSDK_PATH)/include
 CFLAGS += -DMVCONF_TYPES_PUBLIC
+CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
 
 # versioning export map
diff --git a/drivers/crypto/mvsam/meson.build b/drivers/crypto/mvsam/meson.build
index 6d97dc8a2..28f1f27b0 100644
--- a/drivers/crypto/mvsam/meson.build
+++ b/drivers/crypto/mvsam/meson.build
@@ -17,6 +17,7 @@ else
 	cflags += ['-DMVCONF_TYPES_PUBLIC', '-DMVCONF_DMA_PHYS_ADDR_T_PUBLIC']
 endif
 
+allow_experimental_apis = true
 sources = files('rte_mrvl_pmd.c', 'rte_mrvl_pmd_ops.c')
 
 deps += ['bus_vdev', 'common_mvep']
diff --git a/drivers/crypto/null/Makefile b/drivers/crypto/null/Makefile
index 4595055f0..c5eb34aed 100644
--- a/drivers/crypto/null/Makefile
+++ b/drivers/crypto/null/Makefile
@@ -10,6 +10,7 @@ LIB = librte_pmd_null_crypto.a
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -DALLOW_EXPERIMENTAL_API
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_cryptodev
 LDLIBS += -lrte_bus_vdev
diff --git a/drivers/crypto/null/meson.build b/drivers/crypto/null/meson.build
index 502336da2..429000fd7 100644
--- a/drivers/crypto/null/meson.build
+++ b/drivers/crypto/null/meson.build
@@ -3,4 +3,5 @@
 
 deps += 'bus_vdev'
 name = 'null_crypto'
+allow_experimental_apis = true
 sources = files('null_crypto_pmd.c', 'null_crypto_pmd_ops.c')
diff --git a/drivers/crypto/scheduler/Makefile b/drivers/crypto/scheduler/Makefile
index 67aac024c..53eeccdea 100644
--- a/drivers/crypto/scheduler/Makefile
+++ b/drivers/crypto/scheduler/Makefile
@@ -9,6 +9,7 @@ LIB = librte_pmd_crypto_scheduler.a
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -DALLOW_EXPERIMENTAL_API
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_cryptodev -lrte_kvargs -lrte_reorder
 LDLIBS += -lrte_bus_vdev
diff --git a/drivers/crypto/scheduler/meson.build b/drivers/crypto/scheduler/meson.build
index c5ba2d680..49c9e63d7 100644
--- a/drivers/crypto/scheduler/meson.build
+++ b/drivers/crypto/scheduler/meson.build
@@ -3,6 +3,7 @@
 
 deps += ['bus_vdev', 'reorder']
 name = 'crypto_scheduler'
+allow_experimental_apis = true
 sources = files(
 	'rte_cryptodev_scheduler.c',
 	'scheduler_failover.c',
diff --git a/drivers/crypto/virtio/Makefile b/drivers/crypto/virtio/Makefile
index 32e2e4d5e..841131ceb 100644
--- a/drivers/crypto/virtio/Makefile
+++ b/drivers/crypto/virtio/Makefile
@@ -14,6 +14,7 @@ LIB = librte_pmd_virtio_crypto.a
 CFLAGS += -I$(RTE_SDK)/lib/librte_vhost
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
+CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 EXPORT_MAP := rte_pmd_virtio_crypto_version.map
 
diff --git a/drivers/crypto/virtio/meson.build b/drivers/crypto/virtio/meson.build
index b15b3f9fa..7e408676d 100644
--- a/drivers/crypto/virtio/meson.build
+++ b/drivers/crypto/virtio/meson.build
@@ -4,5 +4,6 @@
 includes += include_directories('../../../lib/librte_vhost')
 deps += 'bus_pci'
 name = 'virtio_crypto'
+allow_experimental_apis = true
 sources = files('virtio_cryptodev.c', 'virtio_pci.c',
 		'virtio_rxtx.c', 'virtqueue.c')
diff --git a/lib/librte_cryptodev/Makefile b/lib/librte_cryptodev/Makefile
index 7fac49afa..da096603c 100644
--- a/lib/librte_cryptodev/Makefile
+++ b/lib/librte_cryptodev/Makefile
@@ -14,7 +14,7 @@ LDLIBS += -lrte_eal -lrte_mempool -lrte_ring -lrte_mbuf
 LDLIBS += -lrte_kvargs
 
 # library source files
-SRCS-y += rte_cryptodev.c rte_cryptodev_pmd.c
+SRCS-y += rte_cryptodev.c rte_cryptodev_pmd.c cryptodev_trace_points.c
 
 # export include files
 SYMLINK-y-include += rte_crypto.h
@@ -22,6 +22,8 @@ SYMLINK-y-include += rte_crypto_sym.h
 SYMLINK-y-include += rte_cryptodev.h
 SYMLINK-y-include += rte_cryptodev_pmd.h
 SYMLINK-y-include += rte_crypto_asym.h
+SYMLINK-y-include += rte_trace_cryptodev.h
+SYMLINK-y-include += rte_trace_cryptodev_fp.h
 
 # versioning export map
 EXPORT_MAP := rte_cryptodev_version.map
diff --git a/lib/librte_cryptodev/cryptodev_trace_points.c b/lib/librte_cryptodev/cryptodev_trace_points.c
new file mode 100644
index 000000000..712080666
--- /dev/null
+++ b/lib/librte_cryptodev/cryptodev_trace_points.c
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2020 Marvell International Ltd.
+ */
+
+#define RTE_TRACE_POINT_REGISTER_SELECT /* Select trace point register macros */
+
+#include "rte_trace_cryptodev.h"
+
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_configure);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_start);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_stop);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_close);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_queue_pair_setup);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_sym_session_pool_create);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_sym_session_create);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_asym_session_create);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_sym_session_free);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_asym_session_free);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_sym_session_init);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_asym_session_init);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_sym_session_clear);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_asym_session_clear);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_enqueue_burst);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_cryptodev_dequeue_burst);
+
+RTE_INIT(cryptodev_trace_init)
+{
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_configure,
+				 lib.cryptodev.configure, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_start,
+				 lib.cryptodev.start, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_stop,
+				 lib.cryptodev.stop, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_close,
+				 lib.cryptodev.close, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_queue_pair_setup,
+				 lib.cryptodev.queue.pair.setup, INFO);
+
+	RTE_TRACE_POINT_REGISTER(
+			rte_trace_lib_cryptodev_sym_session_pool_create,
+			lib.cryptodev.sym.pool.create, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_sym_session_create,
+				 lib.cryptodev.sym.create, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_asym_session_create,
+				 lib.cryptodev.asym.create, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_sym_session_free,
+				 lib.cryptodev.sym.free, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_asym_session_free,
+				 lib.cryptodev.asym.free, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_sym_session_init,
+				 lib.cryptodev.sym.init, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_asym_session_init,
+				 lib.cryptodev.asym.init, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_enqueue_burst,
+				 lib.cryptodev.enq.burst, INFO);
+
+	RTE_TRACE_POINT_REGISTER(rte_trace_lib_cryptodev_dequeue_burst,
+				 lib.cryptodev.deq.burst, INFO);
+}
diff --git a/lib/librte_cryptodev/meson.build b/lib/librte_cryptodev/meson.build
index 49bae03a8..5c405cdfb 100644
--- a/lib/librte_cryptodev/meson.build
+++ b/lib/librte_cryptodev/meson.build
@@ -2,10 +2,13 @@
 # Copyright(c) 2017-2019 Intel Corporation
 
 allow_experimental_apis = true
-sources = files('rte_cryptodev.c', 'rte_cryptodev_pmd.c')
+sources = files('rte_cryptodev.c', 'rte_cryptodev_pmd.c',
+	'cryptodev_trace_points.c')
 headers = files('rte_cryptodev.h',
 	'rte_cryptodev_pmd.h',
 	'rte_crypto.h',
 	'rte_crypto_sym.h',
-	'rte_crypto_asym.h')
+	'rte_crypto_asym.h',
+	'rte_trace_cryptodev.h',
+	'rte_trace_cryptodev_fp.h')
 deps += ['kvargs', 'mbuf']
diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c
index 6d1d0e9d3..66ab7a694 100644
--- a/lib/librte_cryptodev/rte_cryptodev.c
+++ b/lib/librte_cryptodev/rte_cryptodev.c
@@ -40,6 +40,7 @@
 #include "rte_crypto.h"
 #include "rte_cryptodev.h"
 #include "rte_cryptodev_pmd.h"
+#include "rte_trace_cryptodev.h"
 
 static uint8_t nb_drivers;
 
@@ -905,6 +906,7 @@ rte_cryptodev_configure(uint8_t dev_id, struct rte_cryptodev_config *config)
 		return diag;
 	}
 
+	rte_trace_lib_cryptodev_configure(dev_id, config);
 	return (*dev->dev_ops->dev_configure)(dev, config);
 }
 
@@ -933,6 +935,7 @@ rte_cryptodev_start(uint8_t dev_id)
 	}
 
 	diag = (*dev->dev_ops->dev_start)(dev);
+	rte_trace_lib_cryptodev_start(dev_id, diag);
 	if (diag == 0)
 		dev->data->dev_started = 1;
 	else
@@ -962,6 +965,7 @@ rte_cryptodev_stop(uint8_t dev_id)
 	}
 
 	(*dev->dev_ops->dev_stop)(dev);
+	rte_trace_lib_cryptodev_stop(dev_id);
 	dev->data->dev_started = 0;
 }
 
@@ -998,6 +1002,7 @@ rte_cryptodev_close(uint8_t dev_id)
 
 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_close, -ENOTSUP);
 	retval = (*dev->dev_ops->dev_close)(dev);
+	rte_trace_lib_cryptodev_close(dev_id, retval);
 
 	if (retval < 0)
 		return retval;
@@ -1067,6 +1072,8 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,
 
 	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_pair_setup, -ENOTSUP);
 
+	rte_trace_lib_cryptodev_queue_pair_setup(dev_id, queue_pair_id,
+						 qp_conf);
 	return (*dev->dev_ops->queue_pair_setup)(dev, queue_pair_id, qp_conf,
 			socket_id);
 }
@@ -1283,6 +1290,7 @@ rte_cryptodev_sym_session_init(uint8_t dev_id,
 		}
 	}
 
+	rte_trace_lib_cryptodev_sym_session_init(dev_id, sess, xforms, mp);
 	sess->sess_data[index].refcnt++;
 	return 0;
 }
@@ -1319,6 +1327,7 @@ rte_cryptodev_asym_session_init(uint8_t dev_id,
 		}
 	}
 
+	rte_trace_lib_cryptodev_asym_session_init(dev_id, sess, xforms, mp);
 	return 0;
 }
 
@@ -1359,6 +1368,9 @@ rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,
 	pool_priv->nb_drivers = nb_drivers;
 	pool_priv->user_data_sz = user_data_size;
 
+	rte_trace_lib_cryptodev_sym_session_pool_create(name, nb_elts,
+							elt_size, cache_size,
+							user_data_size, mp);
 	return mp;
 }
 
@@ -1403,6 +1415,7 @@ rte_cryptodev_sym_session_create(struct rte_mempool *mp)
 	memset(sess->sess_data, 0,
 			rte_cryptodev_sym_session_data_size(sess));
 
+	rte_trace_lib_cryptodev_sym_session_create(mp, sess);
 	return sess;
 }
 
@@ -1422,6 +1435,7 @@ rte_cryptodev_asym_session_create(struct rte_mempool *mp)
 	 */
 	memset(sess, 0, (sizeof(void *) * nb_drivers) + sizeof(uint8_t));
 
+	rte_trace_lib_cryptodev_asym_session_create(mp, sess);
 	return sess;
 }
 
@@ -1447,6 +1461,7 @@ rte_cryptodev_sym_session_clear(uint8_t dev_id,
 
 	dev->dev_ops->sym_session_clear(dev, sess);
 
+	rte_trace_lib_cryptodev_sym_session_clear(dev_id, sess);
 	return 0;
 }
 
@@ -1465,6 +1480,7 @@ rte_cryptodev_asym_session_clear(uint8_t dev_id,
 
 	dev->dev_ops->asym_session_clear(dev, sess);
 
+	rte_trace_lib_cryptodev_sym_session_clear(dev_id, sess);
 	return 0;
 }
 
@@ -1487,6 +1503,7 @@ rte_cryptodev_sym_session_free(struct rte_cryptodev_sym_session *sess)
 	sess_mp = rte_mempool_from_obj(sess);
 	rte_mempool_put(sess_mp, sess);
 
+	rte_trace_lib_cryptodev_sym_session_free(sess);
 	return 0;
 }
 
@@ -1511,6 +1528,7 @@ rte_cryptodev_asym_session_free(struct rte_cryptodev_asym_session *sess)
 	sess_mp = rte_mempool_from_obj(sess);
 	rte_mempool_put(sess_mp, sess);
 
+	rte_trace_lib_cryptodev_asym_session_free(sess);
 	return 0;
 }
 
diff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h
index 437b8a9b3..9008b70b6 100644
--- a/lib/librte_cryptodev/rte_cryptodev.h
+++ b/lib/librte_cryptodev/rte_cryptodev.h
@@ -24,6 +24,8 @@ extern "C" {
 #include <rte_common.h>
 #include <rte_config.h>
 
+#include "rte_trace_cryptodev_fp.h"
+
 extern const char **rte_cyptodev_names;
 
 /* Logging Macros */
@@ -924,6 +926,8 @@ rte_cryptodev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,
 	nb_ops = (*dev->dequeue_burst)
 			(dev->data->queue_pairs[qp_id], ops, nb_ops);
 
+	rte_trace_lib_cryptodev_dequeue_burst(dev_id, qp_id, (void **)ops,
+					      nb_ops);
 	return nb_ops;
 }
 
@@ -964,6 +968,8 @@ rte_cryptodev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 {
 	struct rte_cryptodev *dev = &rte_cryptodevs[dev_id];
 
+	rte_trace_lib_cryptodev_enqueue_burst(dev_id, qp_id, (void **)ops,
+					      nb_ops);
 	return (*dev->enqueue_burst)(
 			dev->data->queue_pairs[qp_id], ops, nb_ops);
 }
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 6e41b4be5..d023de7aa 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -78,4 +78,22 @@ EXPERIMENTAL {
 	rte_cryptodev_sym_session_set_user_data;
 	rte_crypto_asym_op_strings;
 	rte_crypto_asym_xform_strings;
+
+	# added in 20.05
+	__rte_trace_lib_cryptodev_configure;
+	__rte_trace_lib_cryptodev_start;
+	__rte_trace_lib_cryptodev_stop;
+	__rte_trace_lib_cryptodev_close;
+	__rte_trace_lib_cryptodev_queue_pair_setup;
+	__rte_trace_lib_cryptodev_sym_session_pool_create;
+	__rte_trace_lib_cryptodev_sym_session_create;
+	__rte_trace_lib_cryptodev_asym_session_create;
+	__rte_trace_lib_cryptodev_sym_session_free;
+	__rte_trace_lib_cryptodev_asym_session_free;
+	__rte_trace_lib_cryptodev_sym_session_init;
+	__rte_trace_lib_cryptodev_asym_session_init;
+	__rte_trace_lib_cryptodev_sym_session_clear;
+	__rte_trace_lib_cryptodev_asym_session_clear;
+	__rte_trace_lib_cryptodev_dequeue_burst;
+	__rte_trace_lib_cryptodev_enqueue_burst;
 };
diff --git a/lib/librte_cryptodev/rte_trace_cryptodev.h b/lib/librte_cryptodev/rte_trace_cryptodev.h
new file mode 100644
index 000000000..fd031b63f
--- /dev/null
+++ b/lib/librte_cryptodev/rte_trace_cryptodev.h
@@ -0,0 +1,133 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2020 Marvell International Ltd.
+ */
+
+#ifndef _RTE_TRACE_CRYPTODEV_H_
+#define _RTE_TRACE_CRYPTODEV_H_
+
+/**
+ * @file
+ *
+ * API for cryptodev trace support
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "rte_cryptodev.h"
+
+#include <rte_trace.h>
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_configure,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id, struct rte_cryptodev_config *conf),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_u16(conf->nb_queue_pairs);
+	rte_trace_ctf_i64(conf->ff_disable);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_start,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id, int rc),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_int(rc);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_stop,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id),
+	rte_trace_ctf_u8(dev_id);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_close,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id, int rc),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_int(rc);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_queue_pair_setup,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id, uint16_t queue_pair_id,
+			     const struct rte_cryptodev_qp_conf *conf),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_u16(queue_pair_id);
+	rte_trace_ctf_u32(conf->nb_descriptors);
+	rte_trace_ctf_ptr(conf->mp_session);
+	rte_trace_ctf_ptr(conf->mp_session_private);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_sym_session_pool_create,
+	RTE_TRACE_POINT_ARGS(const char *name, uint32_t nb_elts,
+			     uint32_t elt_size, uint32_t cache_size,
+			     uint16_t user_data_size, void *mempool),
+	rte_trace_ctf_string(name); rte_trace_ctf_u32(nb_elts);
+	rte_trace_ctf_u32(elt_size); rte_trace_ctf_u32(cache_size);
+	rte_trace_ctf_u16(user_data_size); rte_trace_ctf_ptr(mempool);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_sym_session_create,
+	RTE_TRACE_POINT_ARGS(void *mempool,
+			     struct rte_cryptodev_sym_session *sess),
+	rte_trace_ctf_ptr(mempool); rte_trace_ctf_ptr(sess);
+	rte_trace_ctf_u64(sess->opaque_data);
+	rte_trace_ctf_u16(sess->nb_drivers);
+	rte_trace_ctf_u16(sess->user_data_sz);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_asym_session_create,
+	RTE_TRACE_POINT_ARGS(void *mempool,
+			     struct rte_cryptodev_asym_session *sess),
+	rte_trace_ctf_ptr(mempool); rte_trace_ctf_ptr(sess);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_sym_session_free,
+	RTE_TRACE_POINT_ARGS(struct rte_cryptodev_sym_session *sess),
+	rte_trace_ctf_ptr(sess);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_asym_session_free,
+	RTE_TRACE_POINT_ARGS(struct rte_cryptodev_asym_session *sess),
+	rte_trace_ctf_ptr(sess);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_sym_session_init,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id,
+			     struct rte_cryptodev_sym_session *sess,
+			     void *xforms, void *mempool),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_ptr(sess);
+	rte_trace_ctf_u64(sess->opaque_data);
+	rte_trace_ctf_u16(sess->nb_drivers);
+	rte_trace_ctf_u16(sess->user_data_sz);
+	rte_trace_ctf_ptr(xforms); rte_trace_ctf_ptr(mempool);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_asym_session_init,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id,
+			     struct rte_cryptodev_asym_session *sess,
+			     void *xforms, void *mempool),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_ptr(sess);
+	rte_trace_ctf_ptr(xforms); rte_trace_ctf_ptr(mempool);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_sym_session_clear,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id, void *sess),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_ptr(sess);
+)
+
+RTE_TRACE_POINT(
+	rte_trace_lib_cryptodev_asym_session_clear,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id, void *sess),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_ptr(sess);
+)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTE_TRACE_CRYPTODEV_H_ */
diff --git a/lib/librte_cryptodev/rte_trace_cryptodev_fp.h b/lib/librte_cryptodev/rte_trace_cryptodev_fp.h
new file mode 100644
index 000000000..aea7fb352
--- /dev/null
+++ b/lib/librte_cryptodev/rte_trace_cryptodev_fp.h
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2020 Marvell International Ltd.
+ */
+
+#ifndef _RTE_TRACE_CRYPTODEV_FP_H_
+#define _RTE_TRACE_CRYPTODEV_FP_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rte_trace.h>
+
+RTE_TRACE_POINT_DP(
+	rte_trace_lib_cryptodev_enqueue_burst,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id, uint16_t qp_id, void **ops,
+			     uint16_t nb_ops),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_u16(qp_id);
+	rte_trace_ctf_ptr(ops); rte_trace_ctf_u16(nb_ops);
+)
+
+RTE_TRACE_POINT_DP(
+	rte_trace_lib_cryptodev_dequeue_burst,
+	RTE_TRACE_POINT_ARGS(uint8_t dev_id, uint16_t qp_id, void **ops,
+			     uint16_t nb_ops),
+	rte_trace_ctf_u8(dev_id); rte_trace_ctf_u16(qp_id);
+	rte_trace_ctf_ptr(ops); rte_trace_ctf_u16(nb_ops);
+)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RTE_TRACE_CRYPTODEV_FP_H_ */
