1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2019 Intel Corporation
8 #include <rte_cryptodev_pmd.h>
9 #include <rte_crypto_asym.h>
10 #include "icp_qat_fw_pke.h"
11 #include "qat_common.h"
12 #include "qat_asym_pmd.h"
13 #include "icp_qat_fw.h"
15 typedef uint64_t large_int_ptr;
16 #define MAX_PKE_PARAMS 8
17 #define QAT_PKE_MAX_LN_SIZE 512
18 #define _PKE_ALIGN_ __attribute__((__aligned__(8)))
20 #define QAT_ASYM_ERROR_INVALID_PARAM 0x01
22 struct qat_asym_op_cookie {
25 rte_iova_t input_addr;
26 rte_iova_t output_addr;
27 large_int_ptr input_params_ptrs[MAX_PKE_PARAMS] _PKE_ALIGN_;
28 large_int_ptr output_params_ptrs[MAX_PKE_PARAMS] _PKE_ALIGN_;
30 uint8_t input_array[MAX_PKE_PARAMS][QAT_PKE_MAX_LN_SIZE];
31 uint8_t input_buffer[MAX_PKE_PARAMS * QAT_PKE_MAX_LN_SIZE];
33 uint8_t output_array[MAX_PKE_PARAMS][QAT_PKE_MAX_LN_SIZE] _PKE_ALIGN_;
44 struct qat_asym_session {
45 enum qat_asym_alg alg;
46 struct icp_qat_fw_pke_request req_tmpl;
60 qat_asym_session_configure(struct rte_cryptodev *dev,
61 struct rte_crypto_asym_xform *xform,
62 struct rte_cryptodev_asym_session *sess,
63 struct rte_mempool *mempool);
66 qat_asym_session_get_private_size(struct rte_cryptodev *dev);
69 qat_asym_session_clear(struct rte_cryptodev *dev,
70 struct rte_cryptodev_asym_session *sess);
73 * Build PKE request to be sent to the fw, partially uses template
74 * request generated during session creation.
76 * @param in_op Pointer to the crypto operation, for every
77 * service it points to service specific struct.
78 * @param out_msg Message to be returned to enqueue function
79 * @param op_cookie Cookie pointer that holds private metadata
80 * @param qat_dev_gen Generation of QAT hardware
83 * This function always returns zero,
84 * it is because of backward compatibility.
85 * - 0: Always returned
89 qat_asym_build_request(void *in_op, uint8_t *out_msg,
90 void *op_cookie, enum qat_device_gen qat_dev_gen);
93 * Process PKE response received from outgoing queue of QAT
95 * @param op a ptr to the rte_crypto_op referred to by
96 * the response message is returned in this param
97 * @param resp icp_qat_fw_pke_resp message received from
98 * outgoing fw message queue
99 * @param op_cookie Cookie pointer that holds private metadata
103 qat_asym_process_response(void __rte_unused **op, uint8_t *resp,
106 #endif /* _QAT_ASYM_H_ */