1e0ab0865SAnkur Dwivedi /* SPDX-License-Identifier: BSD-3-Clause 2e0ab0865SAnkur Dwivedi * Copyright(C) 2021 Marvell. 3e0ab0865SAnkur Dwivedi */ 4e0ab0865SAnkur Dwivedi 557c03ef1SSrujana Challa #include <cryptodev_pmd.h> 6760eedf3SAnoob Joseph #include <rte_cryptodev.h> 7760eedf3SAnoob Joseph 8e0ab0865SAnkur Dwivedi #include "roc_cpt.h" 9fdbec406SAnoob Joseph #include "roc_model.h" 10e0ab0865SAnkur Dwivedi 11e0ab0865SAnkur Dwivedi #include "cnxk_cryptodev.h" 12e0ab0865SAnkur Dwivedi 13760eedf3SAnoob Joseph uint64_t cnxk_cpt_default_ff_get(void)14760eedf3SAnoob Josephcnxk_cpt_default_ff_get(void) 15760eedf3SAnoob Joseph { 1654140461SAnoob Joseph uint64_t ff = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO | 1754140461SAnoob Joseph RTE_CRYPTODEV_FF_HW_ACCELERATED | RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT | 18410d0169SGowrishankar Muthukrishnan RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_EXP | 1954140461SAnoob Joseph RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | RTE_CRYPTODEV_FF_IN_PLACE_SGL | 2054140461SAnoob Joseph RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT | RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT | 2154140461SAnoob Joseph RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT | RTE_CRYPTODEV_FF_SYM_SESSIONLESS | 2254140461SAnoob Joseph RTE_CRYPTODEV_FF_DIGEST_ENCRYPTED | RTE_CRYPTODEV_FF_SECURITY; 23760eedf3SAnoob Joseph 2458245800SArchana Muniganti if (roc_model_is_cn10k()) 2554140461SAnoob Joseph ff |= RTE_CRYPTODEV_FF_SECURITY_INNER_CSUM | RTE_CRYPTODEV_FF_SYM_RAW_DP; 2658245800SArchana Muniganti 27*57d57b74SVidya Sagar Velumuri if (roc_model_is_cn10ka_b0() || roc_model_is_cn10kb()) 28d029f353SVidya Sagar Velumuri ff |= RTE_CRYPTODEV_FF_SECURITY_RX_INJECT; 29d029f353SVidya Sagar Velumuri 30760eedf3SAnoob Joseph return ff; 31760eedf3SAnoob Joseph } 32760eedf3SAnoob Joseph 33e0ab0865SAnkur Dwivedi int cnxk_cpt_eng_grp_add(struct roc_cpt * roc_cpt)34e0ab0865SAnkur Dwivedicnxk_cpt_eng_grp_add(struct roc_cpt *roc_cpt) 35e0ab0865SAnkur Dwivedi { 36e0ab0865SAnkur Dwivedi int ret; 37e0ab0865SAnkur Dwivedi 38e0ab0865SAnkur Dwivedi ret = roc_cpt_eng_grp_add(roc_cpt, CPT_ENG_TYPE_SE); 39e0ab0865SAnkur Dwivedi if (ret < 0) { 40e0ab0865SAnkur Dwivedi plt_err("Could not add CPT SE engines"); 41e0ab0865SAnkur Dwivedi return -ENOTSUP; 42e0ab0865SAnkur Dwivedi } 43e0ab0865SAnkur Dwivedi 44e0ab0865SAnkur Dwivedi ret = roc_cpt_eng_grp_add(roc_cpt, CPT_ENG_TYPE_IE); 45e0ab0865SAnkur Dwivedi if (ret < 0) { 46e0ab0865SAnkur Dwivedi plt_err("Could not add CPT IE engines"); 47e0ab0865SAnkur Dwivedi return -ENOTSUP; 48e0ab0865SAnkur Dwivedi } 49e0ab0865SAnkur Dwivedi 50e0ab0865SAnkur Dwivedi ret = roc_cpt_eng_grp_add(roc_cpt, CPT_ENG_TYPE_AE); 51e0ab0865SAnkur Dwivedi if (ret < 0) { 52e0ab0865SAnkur Dwivedi plt_err("Could not add CPT AE engines"); 53e0ab0865SAnkur Dwivedi return -ENOTSUP; 54e0ab0865SAnkur Dwivedi } 55e0ab0865SAnkur Dwivedi 56e0ab0865SAnkur Dwivedi return 0; 57e0ab0865SAnkur Dwivedi } 5857c03ef1SSrujana Challa 5957c03ef1SSrujana Challa void cnxk_cpt_int_misc_cb(struct roc_cpt_lf * lf,__rte_unused void * args)6057c03ef1SSrujana Challacnxk_cpt_int_misc_cb(struct roc_cpt_lf *lf, __rte_unused void *args) 6157c03ef1SSrujana Challa { 6257c03ef1SSrujana Challa struct roc_cpt *roc_cpt = lf->roc_cpt; 6357c03ef1SSrujana Challa 6457c03ef1SSrujana Challa if (roc_cpt == NULL) 6557c03ef1SSrujana Challa return; 6657c03ef1SSrujana Challa 6757c03ef1SSrujana Challa rte_cryptodev_pmd_callback_process(roc_cpt->opaque, RTE_CRYPTODEV_EVENT_ERROR); 6857c03ef1SSrujana Challa } 69