crypto/cnxk: add security context skeleton
authorSrujana Challa <schalla@marvell.com>
Tue, 29 Jun 2021 07:34:29 +0000 (13:04 +0530)
committerAkhil Goyal <gakhil@marvell.com>
Wed, 7 Jul 2021 19:15:08 +0000 (21:15 +0200)
Add security ctx in cn10k crypto PMD.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Srujana Challa <schalla@marvell.com>
Signed-off-by: Tejasree Kondoj <ktejasree@marvell.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
drivers/crypto/cnxk/cn10k_cryptodev.c
drivers/crypto/cnxk/cnxk_cryptodev_sec.c [new file with mode: 0644]
drivers/crypto/cnxk/cnxk_cryptodev_sec.h [new file with mode: 0644]
drivers/crypto/cnxk/meson.build

index 559aaef..ffe654c 100644 (file)
@@ -14,6 +14,7 @@
 #include "cn10k_cryptodev_ops.h"
 #include "cnxk_cryptodev.h"
 #include "cnxk_cryptodev_capabilities.h"
+#include "cnxk_cryptodev_sec.h"
 
 #include "roc_api.h"
 
@@ -77,6 +78,11 @@ cn10k_cpt_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
                        plt_err("Failed to add engine group rc=%d", rc);
                        goto dev_fini;
                }
+
+               /* Create security context */
+               rc = cnxk_crypto_sec_ctx_create(dev);
+               if (rc)
+                       goto dev_fini;
        }
 
        cnxk_cpt_caps_populate(vf);
@@ -126,6 +132,9 @@ cn10k_cpt_pci_remove(struct rte_pci_device *pci_dev)
        if (dev == NULL)
                return -ENODEV;
 
+       /* Destroy security context */
+       cnxk_crypto_sec_ctx_destroy(dev);
+
        if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
                vf = dev->data->dev_private;
                ret = roc_cpt_dev_fini(&vf->cpt);
diff --git a/drivers/crypto/cnxk/cnxk_cryptodev_sec.c b/drivers/crypto/cnxk/cnxk_cryptodev_sec.c
new file mode 100644 (file)
index 0000000..f03d2ed
--- /dev/null
@@ -0,0 +1,47 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2021 Marvell.
+ */
+
+#include <rte_cryptodev.h>
+#include <rte_malloc.h>
+#include <rte_security.h>
+#include <rte_security_driver.h>
+
+#include "cnxk_cryptodev_sec.h"
+
+/* Common security ops */
+struct rte_security_ops cnxk_sec_ops = {
+       .session_create = NULL,
+       .session_destroy = NULL,
+       .session_get_size = NULL,
+       .set_pkt_metadata = NULL,
+       .get_userdata = NULL,
+       .capabilities_get = NULL,
+};
+
+int
+cnxk_crypto_sec_ctx_create(struct rte_cryptodev *cdev)
+{
+       struct rte_security_ctx *ctx;
+
+       ctx = rte_malloc("cnxk_cpt_dev_sec_ctx",
+                        sizeof(struct rte_security_ctx), 0);
+
+       if (ctx == NULL)
+               return -ENOMEM;
+
+       /* Populate ctx */
+       ctx->device = cdev;
+       ctx->ops = &cnxk_sec_ops;
+       ctx->sess_cnt = 0;
+
+       cdev->security_ctx = ctx;
+
+       return 0;
+}
+
+void
+cnxk_crypto_sec_ctx_destroy(struct rte_cryptodev *cdev)
+{
+       rte_free(cdev->security_ctx);
+}
diff --git a/drivers/crypto/cnxk/cnxk_cryptodev_sec.h b/drivers/crypto/cnxk/cnxk_cryptodev_sec.h
new file mode 100644 (file)
index 0000000..9ab0e9e
--- /dev/null
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2021 Marvell.
+ */
+
+#ifndef __CNXK_CRYPTODEV_SEC_H__
+#define __CNXK_CRYPTODEV_SEC_H__
+
+#include <rte_cryptodev.h>
+
+int cnxk_crypto_sec_ctx_create(struct rte_cryptodev *crypto_dev);
+
+void cnxk_crypto_sec_ctx_destroy(struct rte_cryptodev *crypto_dev);
+
+#endif /* __CNXK_CRYPTODEV_SEC_H__ */
index fa6be06..a2b461e 100644 (file)
@@ -16,6 +16,7 @@ sources = files(
         'cnxk_cryptodev.c',
         'cnxk_cryptodev_capabilities.c',
         'cnxk_cryptodev_ops.c',
+        'cnxk_cryptodev_sec.c',
 )
 
-deps += ['bus_pci', 'common_cnxk']
+deps += ['bus_pci', 'common_cnxk', 'security']