xref: /dpdk/drivers/crypto/cnxk/cnxk_cryptodev.c (revision 57d57b74133f4ccfd5fb23e016cbcefcd773256a)
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 Joseph cnxk_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 Dwivedi cnxk_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 Challa cnxk_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