[dpdk-dev,01/16] config: add Cavium CPT PMD skeleton

Message ID 1528476325-15585-2-git-send-email-anoob.joseph@caviumnetworks.com (mailing list archive)
State Superseded, archived
Delegated to: akhil goyal
Headers
Series Adding Cavium's crypto device(CPT) driver |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Anoob Joseph June 8, 2018, 4:45 p.m. UTC
  From: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>

Add makefile and config file options.
Also add version map file and maintainers file to
claim responsibility.

Signed-off-by: Ankur Dwivedi <ankur.dwivedi@cavium.com>
Signed-off-by: Murthy NSSR <Nidadavolu.Murthy@cavium.com>
Signed-off-by: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>
Signed-off-by: Ragothaman Jayaraman <Ragothaman.Jayaraman@cavium.com>
Signed-off-by: Srisivasubramanian Srinivasan <Srisivasubramanian.Srinivasan@cavium.com>
---
 MAINTAINERS                                |  7 ++++++
 config/common_base                         |  8 ++++++
 drivers/crypto/Makefile                    |  1 +
 drivers/crypto/cpt/Makefile                | 40 ++++++++++++++++++++++++++++++
 drivers/crypto/cpt/rte_pmd_cpt_version.map |  4 +++
 mk/rte.app.mk                              |  2 +-
 6 files changed, 61 insertions(+), 1 deletion(-)
 create mode 100644 drivers/crypto/cpt/Makefile
 create mode 100644 drivers/crypto/cpt/rte_pmd_cpt_version.map
  

Comments

Jerin Jacob June 14, 2018, 2:56 a.m. UTC | #1
-----Original Message-----
> Date: Fri,  8 Jun 2018 22:15:10 +0530
> From: Anoob Joseph <anoob.joseph@caviumnetworks.com>
> To: Akhil Goyal <akhil.goyal@nxp.com>, Pablo de Lara
>  <pablo.de.lara.guarch@intel.com>, Thomas Monjalon <thomas@monjalon.net>
> Cc: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>, Ankur Dwivedi
>  <ankur.dwivedi@cavium.com>, Jerin Jacob <jerin.jacob@caviumnetworks.com>,
>  Murthy NSSR <Nidadavolu.Murthy@cavium.com>, Narayana Prasad
>  <narayanaprasad.athreya@caviumnetworks.com>, Ragothaman Jayaraman
>  <Ragothaman.Jayaraman@cavium.com>, Srisivasubramanian Srinivasan
>  <Srisivasubramanian.Srinivasan@cavium.com>, dev@dpdk.org
> Subject: [PATCH 01/16] config: add Cavium CPT PMD skeleton
> X-Mailer: git-send-email 2.7.4
> 
> From: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>
> 
> Add makefile and config file options.
> Also add version map file and maintainers file to
> claim responsibility.
> 
> Signed-off-by: Ankur Dwivedi <ankur.dwivedi@cavium.com>
> Signed-off-by: Murthy NSSR <Nidadavolu.Murthy@cavium.com>
> Signed-off-by: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>
> Signed-off-by: Ragothaman Jayaraman <Ragothaman.Jayaraman@cavium.com>
> Signed-off-by: Srisivasubramanian Srinivasan <Srisivasubramanian.Srinivasan@cavium.com>
> ---
>  MAINTAINERS                                |  7 ++++++
>  config/common_base                         |  8 ++++++
>  drivers/crypto/Makefile                    |  1 +
>  drivers/crypto/cpt/Makefile                | 40 ++++++++++++++++++++++++++++++
>  drivers/crypto/cpt/rte_pmd_cpt_version.map |  4 +++
>  mk/rte.app.mk                              |  2 +-
>  6 files changed, 61 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/crypto/cpt/Makefile
>  create mode 100644 drivers/crypto/cpt/rte_pmd_cpt_version.map
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 4667fa7..1b4a8eb 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -504,6 +504,13 @@ F: drivers/net/octeontx/
>  F: doc/guides/nics/octeontx.rst
>  F: doc/guides/nics/features/octeontx.ini
>  
> +Cavium CPT
> +M: Ankur Dwivedi <ankur.dwivedi@cavium.com>
> +M: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>
> +M: Murthy NSSR <Nidadavolu.Murthy@cavium.com>
> +F: drivers/crypto/cpt/
> +F: doc/guides/cryptodevs/cpt.rst

Move this under crypto drivers section if it is not already the case.

> +
>  Chelsio cxgbe
>  M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
>  F: drivers/net/cxgbe/
> diff --git a/config/common_base b/config/common_base
> index 6b0d1cb..85e03a8 100644
> --- a/config/common_base
> +++ b/config/common_base
> @@ -631,6 +631,14 @@ CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV=n
>  CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=n
>  
>  #
> +# Compile PMD for Cavium CPT Crypto device
> +#
> +CONFIG_RTE_LIBRTE_PMD_CPT=n

Please enable this option  by default, If there are arm64 specific 
usage then please stub it out so that it can compile on 
all architectures. It will help to verify the API changes
across the architecture by author.(i.e author should not depend arm64
box to verify the compilation changes)
and enable distribution OS support like Ubuntu as they building with
default arm64 config.


> +CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_TX=n

This config option is not required when we are using
dynamic debugging

> +
> +#
>  # Compile raw device support
>  # EXPERIMENTAL: API may change without prior notice
>  #
> diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile
> index 1d0c88e..a0515f3 100644
> --- a/drivers/crypto/Makefile
> +++ b/drivers/crypto/Makefile
> @@ -22,5 +22,6 @@ ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y)
>  DIRS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC) += dpaa_sec
>  endif
>  DIRS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += virtio
> +DIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += cpt
>  
>  include $(RTE_SDK)/mk/rte.subdir.mk
> diff --git a/drivers/crypto/cpt/Makefile b/drivers/crypto/cpt/Makefile
> new file mode 100644
> index 0000000..b2d950d
> --- /dev/null
> +++ b/drivers/crypto/cpt/Makefile
> @@ -0,0 +1,40 @@
> +
> +include $(RTE_SDK)/mk/rte.vars.mk
> +
> +# library name
> +LIB = librte_pmd_cptvf.a
> +
> +# library version
> +LIBABIVER := 1
> +
> +# build flags
> +CFLAGS += $(WERROR_FLAGS)
> +
> +# external library include paths
> +CFLAGS += -I$(LIBCRYPTO_THUNDERX_PATH)/include
> +LDLIBS += -L$(LIBCRYPTO_THUNDERX_PATH) -lcrypto

What is the external library dependency here? Does look like
it is documented in doc patch.

If there is something, I think, better to change LIBCRYPTO_THUNDERX_PATH
to LIBCRYPTO_OCTEONTX_PATH

> +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
> +LDLIBS += -lrte_cryptodev
> +LDLIBS += -lrte_pci -lrte_bus_pci
> +
> +VPATH += $(RTE_SDK)/drivers/crypto/cpt/base
> +
> +CFLAGS += -O3
> +#CFLAGS += -DAUTH_SOFT_COMPUTE_IPAD_OPAD
> +#CFLAGS += -DCPT_DEBUG

Remove commented out stuff.

> +
> +SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) +=
> +
> +# export include files
> +SYMLINK-y-include +=
> +
> +# versioning export map
> +EXPORT_MAP := rte_pmd_cpt_version.map
> +
> +# library dependencies
> +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_eal
> +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_cryptodev
> +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_mempool lib/librte_mbuf
> +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_malloc
> +
> +include $(RTE_SDK)/mk/rte.lib.mk
> diff --git a/drivers/crypto/cpt/rte_pmd_cpt_version.map b/drivers/crypto/cpt/rte_pmd_cpt_version.map
> new file mode 100644
> index 0000000..9b9ab1a
> --- /dev/null
> +++ b/drivers/crypto/cpt/rte_pmd_cpt_version.map
> @@ -0,0 +1,4 @@
> +DPDK_18.05 {
> +
> +	local: *;
> +};
> diff --git a/mk/rte.app.mk b/mk/rte.app.mk
> index 1e32c83..158066d 100644
> --- a/mk/rte.app.mk
> +++ b/mk/rte.app.mk
> @@ -209,7 +209,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC)   += -lrte_pmd_dpaa_sec
>  endif # CONFIG_RTE_LIBRTE_DPAA_BUS
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += -lrte_pmd_virtio_crypto
>  endif # CONFIG_RTE_LIBRTE_CRYPTODEV
> -
> +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CPT)   += -lrte_pmd_cptvf
>  ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y)
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp
>  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal


You can add meson build as well here on the same patch.


> -- 
> 1.9.3
>
  
De Lara Guarch, Pablo June 19, 2018, 1:39 p.m. UTC | #2
Hi Anoob,

> -----Original Message-----
> From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com]
> Sent: Thursday, June 14, 2018 3:57 AM
> To: Anoob Joseph <anoob.joseph@caviumnetworks.com>
> Cc: Akhil Goyal <akhil.goyal@nxp.com>; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; Thomas Monjalon
> <thomas@monjalon.net>; Nithin Dabilpuram <nithin.dabilpuram@cavium.com>;
> Ankur Dwivedi <ankur.dwivedi@cavium.com>; Murthy NSSR
> <Nidadavolu.Murthy@cavium.com>; Narayana Prasad
> <narayanaprasad.athreya@caviumnetworks.com>; Ragothaman Jayaraman
> <Ragothaman.Jayaraman@cavium.com>; Srisivasubramanian Srinivasan
> <Srisivasubramanian.Srinivasan@cavium.com>; dev@dpdk.org
> Subject: Re: [PATCH 01/16] config: add Cavium CPT PMD skeleton
> 
> -----Original Message-----
> > Date: Fri,  8 Jun 2018 22:15:10 +0530
> > From: Anoob Joseph <anoob.joseph@caviumnetworks.com>
> > To: Akhil Goyal <akhil.goyal@nxp.com>, Pablo de Lara
> > <pablo.de.lara.guarch@intel.com>, Thomas Monjalon
> > <thomas@monjalon.net>
> > Cc: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>, Ankur Dwivedi
> > <ankur.dwivedi@cavium.com>, Jerin Jacob
> > <jerin.jacob@caviumnetworks.com>,  Murthy NSSR
> > <Nidadavolu.Murthy@cavium.com>, Narayana Prasad
> > <narayanaprasad.athreya@caviumnetworks.com>, Ragothaman Jayaraman
> > <Ragothaman.Jayaraman@cavium.com>, Srisivasubramanian Srinivasan
> > <Srisivasubramanian.Srinivasan@cavium.com>, dev@dpdk.org
> > Subject: [PATCH 01/16] config: add Cavium CPT PMD skeleton
> > X-Mailer: git-send-email 2.7.4
> >
> > From: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>
> >
> > Add makefile and config file options.
> > Also add version map file and maintainers file to claim
> > responsibility.
> >
> > Signed-off-by: Ankur Dwivedi <ankur.dwivedi@cavium.com>
> > Signed-off-by: Murthy NSSR <Nidadavolu.Murthy@cavium.com>
> > Signed-off-by: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>
> > Signed-off-by: Ragothaman Jayaraman
> <Ragothaman.Jayaraman@cavium.com>
> > Signed-off-by: Srisivasubramanian Srinivasan
> > <Srisivasubramanian.Srinivasan@cavium.com>
> > ---
> >  MAINTAINERS                                |  7 ++++++
> >  config/common_base                         |  8 ++++++
> >  drivers/crypto/Makefile                    |  1 +
> >  drivers/crypto/cpt/Makefile                | 40
> ++++++++++++++++++++++++++++++
> >  drivers/crypto/cpt/rte_pmd_cpt_version.map |  4 +++
> >  mk/rte.app.mk                              |  2 +-
> >  6 files changed, 61 insertions(+), 1 deletion(-)  create mode 100644
> > drivers/crypto/cpt/Makefile  create mode 100644
> > drivers/crypto/cpt/rte_pmd_cpt_version.map
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS index 4667fa7..1b4a8eb 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -504,6 +504,13 @@ F: drivers/net/octeontx/
> >  F: doc/guides/nics/octeontx.rst
> >  F: doc/guides/nics/features/octeontx.ini
> >
> > +Cavium CPT
> > +M: Ankur Dwivedi <ankur.dwivedi@cavium.com>
> > +M: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>
> > +M: Murthy NSSR <Nidadavolu.Murthy@cavium.com>
> > +F: drivers/crypto/cpt/
> > +F: doc/guides/cryptodevs/cpt.rst

Add the documentation file line in the patch where you actually add it.

> 
> Move this under crypto drivers section if it is not already the case.
> 
> > +
> >  Chelsio cxgbe
> >  M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
> >  F: drivers/net/cxgbe/
> > diff --git a/config/common_base b/config/common_base index
> > 6b0d1cb..85e03a8 100644
> > --- a/config/common_base
> > +++ b/config/common_base
> > @@ -631,6 +631,14 @@ CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV=n
> >  CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=n
> >
> >  #
> > +# Compile PMD for Cavium CPT Crypto device #
> > +CONFIG_RTE_LIBRTE_PMD_CPT=n
> 
> Please enable this option  by default, If there are arm64 specific usage then
> please stub it out so that it can compile on all architectures. It will help to verify
> the API changes across the architecture by author.(i.e author should not depend
> arm64 box to verify the compilation changes) and enable distribution OS support
> like Ubuntu as they building with default arm64 config.

Agreed. Actually, I thought this was disabled because of the dependency with libcrypto
(based on the Makefile below), but actually it is not needed.
Also, move this where the other crypto drivers are.

> 
> 
> > +CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_INIT=n
> > +CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_RX=n
> > +CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_TX=n
> 
> This config option is not required when we are using dynamic debugging
> 
> > +
> > +#
> >  # Compile raw device support
> >  # EXPERIMENTAL: API may change without prior notice  # diff --git
> > a/drivers/crypto/Makefile b/drivers/crypto/Makefile index
> > 1d0c88e..a0515f3 100644
> > --- a/drivers/crypto/Makefile
> > +++ b/drivers/crypto/Makefile
> > @@ -22,5 +22,6 @@ ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y)
> >  DIRS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC) += dpaa_sec  endif
> >  DIRS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += virtio
> > +DIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += cpt
> >
> >  include $(RTE_SDK)/mk/rte.subdir.mk
> > diff --git a/drivers/crypto/cpt/Makefile b/drivers/crypto/cpt/Makefile
> > new file mode 100644 index 0000000..b2d950d
> > --- /dev/null
> > +++ b/drivers/crypto/cpt/Makefile
> > @@ -0,0 +1,40 @@
> > +
> > +include $(RTE_SDK)/mk/rte.vars.mk
> > +
> > +# library name
> > +LIB = librte_pmd_cptvf.a
> > +
> > +# library version
> > +LIBABIVER := 1
> > +
> > +# build flags
> > +CFLAGS += $(WERROR_FLAGS)
> > +
> > +# external library include paths
> > +CFLAGS += -I$(LIBCRYPTO_THUNDERX_PATH)/include
> > +LDLIBS += -L$(LIBCRYPTO_THUNDERX_PATH) -lcrypto
> 
> What is the external library dependency here? Does look like it is documented in
> doc patch.
> 
> If there is something, I think, better to change LIBCRYPTO_THUNDERX_PATH to
> LIBCRYPTO_OCTEONTX_PATH

Is this needed? I don't see any dependency with libcrypto and I don't see this variable
documented in the driver guide.

> 
> > +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS +=
> > +-lrte_cryptodev LDLIBS += -lrte_pci -lrte_bus_pci
> > +
> > +VPATH += $(RTE_SDK)/drivers/crypto/cpt/base
> > +
> > +CFLAGS += -O3
> > +#CFLAGS += -DAUTH_SOFT_COMPUTE_IPAD_OPAD #CFLAGS += -
> DCPT_DEBUG
> 
> Remove commented out stuff.
> 
> > +
> > +SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) +=
> > +
> > +# export include files
> > +SYMLINK-y-include +=
> > +
> > +# versioning export map
> > +EXPORT_MAP := rte_pmd_cpt_version.map
> > +
> > +# library dependencies
> > +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_eal
> > +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_cryptodev
> > +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_mempool
> > +lib/librte_mbuf
> > +DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_malloc
> > +
> > +include $(RTE_SDK)/mk/rte.lib.mk
> > diff --git a/drivers/crypto/cpt/rte_pmd_cpt_version.map
> > b/drivers/crypto/cpt/rte_pmd_cpt_version.map
> > new file mode 100644
> > index 0000000..9b9ab1a
> > --- /dev/null
> > +++ b/drivers/crypto/cpt/rte_pmd_cpt_version.map
> > @@ -0,0 +1,4 @@
> > +DPDK_18.05 {
> > +

DPDK_18.08.

> > +	local: *;
> > +};
> > diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 1e32c83..158066d
> > 100644
> > --- a/mk/rte.app.mk
> > +++ b/mk/rte.app.mk
> > @@ -209,7 +209,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC)   +=
> -lrte_pmd_dpaa_sec
> >  endif # CONFIG_RTE_LIBRTE_DPAA_BUS
> >  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) +=
> > -lrte_pmd_virtio_crypto  endif # CONFIG_RTE_LIBRTE_CRYPTODEV
> > -
> > +_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CPT)   += -lrte_pmd_cptvf

This should be inside ifeq ($(CONFIG_RTE_LIBRTE_CRYPTODEV),y).

> >  ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y)
> >  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp
> >  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal
> 
> 
> You can add meson build as well here on the same patch.
> 
> 
> > --
> > 1.9.3
> >
  

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index 4667fa7..1b4a8eb 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -504,6 +504,13 @@  F: drivers/net/octeontx/
 F: doc/guides/nics/octeontx.rst
 F: doc/guides/nics/features/octeontx.ini
 
+Cavium CPT
+M: Ankur Dwivedi <ankur.dwivedi@cavium.com>
+M: Nithin Dabilpuram <nithin.dabilpuram@cavium.com>
+M: Murthy NSSR <Nidadavolu.Murthy@cavium.com>
+F: drivers/crypto/cpt/
+F: doc/guides/cryptodevs/cpt.rst
+
 Chelsio cxgbe
 M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
 F: drivers/net/cxgbe/
diff --git a/config/common_base b/config/common_base
index 6b0d1cb..85e03a8 100644
--- a/config/common_base
+++ b/config/common_base
@@ -631,6 +631,14 @@  CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV=n
 CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=n
 
 #
+# Compile PMD for Cavium CPT Crypto device
+#
+CONFIG_RTE_LIBRTE_PMD_CPT=n
+CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_PMD_CPT_DEBUG_TX=n
+
+#
 # Compile raw device support
 # EXPERIMENTAL: API may change without prior notice
 #
diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile
index 1d0c88e..a0515f3 100644
--- a/drivers/crypto/Makefile
+++ b/drivers/crypto/Makefile
@@ -22,5 +22,6 @@  ifeq ($(CONFIG_RTE_LIBRTE_DPAA_BUS),y)
 DIRS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC) += dpaa_sec
 endif
 DIRS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += virtio
+DIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += cpt
 
 include $(RTE_SDK)/mk/rte.subdir.mk
diff --git a/drivers/crypto/cpt/Makefile b/drivers/crypto/cpt/Makefile
new file mode 100644
index 0000000..b2d950d
--- /dev/null
+++ b/drivers/crypto/cpt/Makefile
@@ -0,0 +1,40 @@ 
+
+include $(RTE_SDK)/mk/rte.vars.mk
+
+# library name
+LIB = librte_pmd_cptvf.a
+
+# library version
+LIBABIVER := 1
+
+# build flags
+CFLAGS += $(WERROR_FLAGS)
+
+# external library include paths
+CFLAGS += -I$(LIBCRYPTO_THUNDERX_PATH)/include
+LDLIBS += -L$(LIBCRYPTO_THUNDERX_PATH) -lcrypto
+LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
+LDLIBS += -lrte_cryptodev
+LDLIBS += -lrte_pci -lrte_bus_pci
+
+VPATH += $(RTE_SDK)/drivers/crypto/cpt/base
+
+CFLAGS += -O3
+#CFLAGS += -DAUTH_SOFT_COMPUTE_IPAD_OPAD
+#CFLAGS += -DCPT_DEBUG
+
+SRCS-$(CONFIG_RTE_LIBRTE_PMD_CPT) +=
+
+# export include files
+SYMLINK-y-include +=
+
+# versioning export map
+EXPORT_MAP := rte_pmd_cpt_version.map
+
+# library dependencies
+DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_eal
+DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_cryptodev
+DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_mempool lib/librte_mbuf
+DEPDIRS-$(CONFIG_RTE_LIBRTE_PMD_CPT) += lib/librte_malloc
+
+include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/crypto/cpt/rte_pmd_cpt_version.map b/drivers/crypto/cpt/rte_pmd_cpt_version.map
new file mode 100644
index 0000000..9b9ab1a
--- /dev/null
+++ b/drivers/crypto/cpt/rte_pmd_cpt_version.map
@@ -0,0 +1,4 @@ 
+DPDK_18.05 {
+
+	local: *;
+};
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 1e32c83..158066d 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -209,7 +209,7 @@  _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC)   += -lrte_pmd_dpaa_sec
 endif # CONFIG_RTE_LIBRTE_DPAA_BUS
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += -lrte_pmd_virtio_crypto
 endif # CONFIG_RTE_LIBRTE_CRYPTODEV
-
+_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_CPT)   += -lrte_pmd_cptvf
 ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y)
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal