1*4882a593Smuzhiyun /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */ 2*4882a593Smuzhiyun /* Copyright(c) 2014 - 2020 Intel Corporation */ 3*4882a593Smuzhiyun #ifndef _QAT_CRYPTO_INSTANCE_H_ 4*4882a593Smuzhiyun #define _QAT_CRYPTO_INSTANCE_H_ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #include <linux/list.h> 7*4882a593Smuzhiyun #include <linux/slab.h> 8*4882a593Smuzhiyun #include "adf_accel_devices.h" 9*4882a593Smuzhiyun #include "icp_qat_fw_la.h" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun struct qat_crypto_instance { 12*4882a593Smuzhiyun struct adf_etr_ring_data *sym_tx; 13*4882a593Smuzhiyun struct adf_etr_ring_data *sym_rx; 14*4882a593Smuzhiyun struct adf_etr_ring_data *pke_tx; 15*4882a593Smuzhiyun struct adf_etr_ring_data *pke_rx; 16*4882a593Smuzhiyun struct adf_accel_dev *accel_dev; 17*4882a593Smuzhiyun struct list_head list; 18*4882a593Smuzhiyun unsigned long state; 19*4882a593Smuzhiyun int id; 20*4882a593Smuzhiyun atomic_t refctr; 21*4882a593Smuzhiyun }; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define QAT_MAX_BUFF_DESC 4 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun struct qat_alg_buf { 26*4882a593Smuzhiyun u32 len; 27*4882a593Smuzhiyun u32 resrvd; 28*4882a593Smuzhiyun u64 addr; 29*4882a593Smuzhiyun } __packed; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun struct qat_alg_buf_list { 32*4882a593Smuzhiyun u64 resrvd; 33*4882a593Smuzhiyun u32 num_bufs; 34*4882a593Smuzhiyun u32 num_mapped_bufs; 35*4882a593Smuzhiyun struct qat_alg_buf bufers[]; 36*4882a593Smuzhiyun } __packed; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun struct qat_alg_fixed_buf_list { 39*4882a593Smuzhiyun struct qat_alg_buf_list sgl_hdr; 40*4882a593Smuzhiyun struct qat_alg_buf descriptors[QAT_MAX_BUFF_DESC]; 41*4882a593Smuzhiyun } __packed __aligned(64); 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun struct qat_crypto_request_buffs { 44*4882a593Smuzhiyun struct qat_alg_buf_list *bl; 45*4882a593Smuzhiyun dma_addr_t blp; 46*4882a593Smuzhiyun struct qat_alg_buf_list *blout; 47*4882a593Smuzhiyun dma_addr_t bloutp; 48*4882a593Smuzhiyun size_t sz; 49*4882a593Smuzhiyun size_t sz_out; 50*4882a593Smuzhiyun bool sgl_src_valid; 51*4882a593Smuzhiyun bool sgl_dst_valid; 52*4882a593Smuzhiyun struct qat_alg_fixed_buf_list sgl_src; 53*4882a593Smuzhiyun struct qat_alg_fixed_buf_list sgl_dst; 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun struct qat_crypto_request; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun struct qat_crypto_request { 59*4882a593Smuzhiyun struct icp_qat_fw_la_bulk_req req; 60*4882a593Smuzhiyun union { 61*4882a593Smuzhiyun struct qat_alg_aead_ctx *aead_ctx; 62*4882a593Smuzhiyun struct qat_alg_skcipher_ctx *skcipher_ctx; 63*4882a593Smuzhiyun }; 64*4882a593Smuzhiyun union { 65*4882a593Smuzhiyun struct aead_request *aead_req; 66*4882a593Smuzhiyun struct skcipher_request *skcipher_req; 67*4882a593Smuzhiyun }; 68*4882a593Smuzhiyun struct qat_crypto_request_buffs buf; 69*4882a593Smuzhiyun void (*cb)(struct icp_qat_fw_la_resp *resp, 70*4882a593Smuzhiyun struct qat_crypto_request *req); 71*4882a593Smuzhiyun void *iv; 72*4882a593Smuzhiyun dma_addr_t iv_paddr; 73*4882a593Smuzhiyun }; 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #endif 76