xref: /dpdk/drivers/crypto/cnxk/cnxk_cryptodev.c (revision 57d57b74133f4ccfd5fb23e016cbcefcd773256a)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4 
5 #include <cryptodev_pmd.h>
6 #include <rte_cryptodev.h>
7 
8 #include "roc_cpt.h"
9 #include "roc_model.h"
10 
11 #include "cnxk_cryptodev.h"
12 
13 uint64_t
cnxk_cpt_default_ff_get(void)14 cnxk_cpt_default_ff_get(void)
15 {
16 	uint64_t ff = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO |
17 		      RTE_CRYPTODEV_FF_HW_ACCELERATED | RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT |
18 		      RTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_EXP |
19 		      RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | RTE_CRYPTODEV_FF_IN_PLACE_SGL |
20 		      RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT | RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT |
21 		      RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT | RTE_CRYPTODEV_FF_SYM_SESSIONLESS |
22 		      RTE_CRYPTODEV_FF_DIGEST_ENCRYPTED | RTE_CRYPTODEV_FF_SECURITY;
23 
24 	if (roc_model_is_cn10k())
25 		ff |= RTE_CRYPTODEV_FF_SECURITY_INNER_CSUM | RTE_CRYPTODEV_FF_SYM_RAW_DP;
26 
27 	if (roc_model_is_cn10ka_b0() || roc_model_is_cn10kb())
28 		ff |= RTE_CRYPTODEV_FF_SECURITY_RX_INJECT;
29 
30 	return ff;
31 }
32 
33 int
cnxk_cpt_eng_grp_add(struct roc_cpt * roc_cpt)34 cnxk_cpt_eng_grp_add(struct roc_cpt *roc_cpt)
35 {
36 	int ret;
37 
38 	ret = roc_cpt_eng_grp_add(roc_cpt, CPT_ENG_TYPE_SE);
39 	if (ret < 0) {
40 		plt_err("Could not add CPT SE engines");
41 		return -ENOTSUP;
42 	}
43 
44 	ret = roc_cpt_eng_grp_add(roc_cpt, CPT_ENG_TYPE_IE);
45 	if (ret < 0) {
46 		plt_err("Could not add CPT IE engines");
47 		return -ENOTSUP;
48 	}
49 
50 	ret = roc_cpt_eng_grp_add(roc_cpt, CPT_ENG_TYPE_AE);
51 	if (ret < 0) {
52 		plt_err("Could not add CPT AE engines");
53 		return -ENOTSUP;
54 	}
55 
56 	return 0;
57 }
58 
59 void
cnxk_cpt_int_misc_cb(struct roc_cpt_lf * lf,__rte_unused void * args)60 cnxk_cpt_int_misc_cb(struct roc_cpt_lf *lf, __rte_unused void *args)
61 {
62 	struct roc_cpt *roc_cpt = lf->roc_cpt;
63 
64 	if (roc_cpt == NULL)
65 		return;
66 
67 	rte_cryptodev_pmd_callback_process(roc_cpt->opaque, RTE_CRYPTODEV_EVENT_ERROR);
68 }
69