crypto/cnxk: add security context skeleton
[dpdk.git] / drivers / crypto / cnxk / cn10k_cryptodev.c
index 53f7a94..ffe654c 100644 (file)
@@ -13,6 +13,9 @@
 #include "cn10k_cryptodev.h"
 #include "cn10k_cryptodev_ops.h"
 #include "cnxk_cryptodev.h"
+#include "cnxk_cryptodev_capabilities.h"
+#include "cnxk_cryptodev_sec.h"
+
 #include "roc_api.h"
 
 uint8_t cn10k_cryptodev_driver_id;
@@ -75,11 +78,28 @@ 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);
+
        dev->dev_ops = &cn10k_cpt_ops;
        dev->driver_id = cn10k_cryptodev_driver_id;
 
+       dev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO |
+                            RTE_CRYPTODEV_FF_HW_ACCELERATED |
+                            RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING |
+                            RTE_CRYPTODEV_FF_IN_PLACE_SGL |
+                            RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT |
+                            RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT |
+                            RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT |
+                            RTE_CRYPTODEV_FF_SYM_SESSIONLESS |
+                            RTE_CRYPTODEV_FF_DIGEST_ENCRYPTED;
+
        cn10k_cpt_set_enqdeq_fns(dev);
 
        return 0;
@@ -112,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);