18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */ 28c2ecf20Sopenharmony_ci/* Copyright(c) 2014 - 2020 Intel Corporation */ 38c2ecf20Sopenharmony_ci#ifndef _QAT_CRYPTO_INSTANCE_H_ 48c2ecf20Sopenharmony_ci#define _QAT_CRYPTO_INSTANCE_H_ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <linux/list.h> 78c2ecf20Sopenharmony_ci#include <linux/slab.h> 88c2ecf20Sopenharmony_ci#include "adf_accel_devices.h" 98c2ecf20Sopenharmony_ci#include "icp_qat_fw_la.h" 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistruct qat_crypto_instance { 128c2ecf20Sopenharmony_ci struct adf_etr_ring_data *sym_tx; 138c2ecf20Sopenharmony_ci struct adf_etr_ring_data *sym_rx; 148c2ecf20Sopenharmony_ci struct adf_etr_ring_data *pke_tx; 158c2ecf20Sopenharmony_ci struct adf_etr_ring_data *pke_rx; 168c2ecf20Sopenharmony_ci struct adf_accel_dev *accel_dev; 178c2ecf20Sopenharmony_ci struct list_head list; 188c2ecf20Sopenharmony_ci unsigned long state; 198c2ecf20Sopenharmony_ci int id; 208c2ecf20Sopenharmony_ci atomic_t refctr; 218c2ecf20Sopenharmony_ci}; 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci#define QAT_MAX_BUFF_DESC 4 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistruct qat_alg_buf { 268c2ecf20Sopenharmony_ci u32 len; 278c2ecf20Sopenharmony_ci u32 resrvd; 288c2ecf20Sopenharmony_ci u64 addr; 298c2ecf20Sopenharmony_ci} __packed; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_cistruct qat_alg_buf_list { 328c2ecf20Sopenharmony_ci u64 resrvd; 338c2ecf20Sopenharmony_ci u32 num_bufs; 348c2ecf20Sopenharmony_ci u32 num_mapped_bufs; 358c2ecf20Sopenharmony_ci struct qat_alg_buf bufers[]; 368c2ecf20Sopenharmony_ci} __packed; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_cistruct qat_alg_fixed_buf_list { 398c2ecf20Sopenharmony_ci struct qat_alg_buf_list sgl_hdr; 408c2ecf20Sopenharmony_ci struct qat_alg_buf descriptors[QAT_MAX_BUFF_DESC]; 418c2ecf20Sopenharmony_ci} __packed __aligned(64); 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_cistruct qat_crypto_request_buffs { 448c2ecf20Sopenharmony_ci struct qat_alg_buf_list *bl; 458c2ecf20Sopenharmony_ci dma_addr_t blp; 468c2ecf20Sopenharmony_ci struct qat_alg_buf_list *blout; 478c2ecf20Sopenharmony_ci dma_addr_t bloutp; 488c2ecf20Sopenharmony_ci size_t sz; 498c2ecf20Sopenharmony_ci size_t sz_out; 508c2ecf20Sopenharmony_ci bool sgl_src_valid; 518c2ecf20Sopenharmony_ci bool sgl_dst_valid; 528c2ecf20Sopenharmony_ci struct qat_alg_fixed_buf_list sgl_src; 538c2ecf20Sopenharmony_ci struct qat_alg_fixed_buf_list sgl_dst; 548c2ecf20Sopenharmony_ci}; 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_cistruct qat_crypto_request; 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_cistruct qat_crypto_request { 598c2ecf20Sopenharmony_ci struct icp_qat_fw_la_bulk_req req; 608c2ecf20Sopenharmony_ci union { 618c2ecf20Sopenharmony_ci struct qat_alg_aead_ctx *aead_ctx; 628c2ecf20Sopenharmony_ci struct qat_alg_skcipher_ctx *skcipher_ctx; 638c2ecf20Sopenharmony_ci }; 648c2ecf20Sopenharmony_ci union { 658c2ecf20Sopenharmony_ci struct aead_request *aead_req; 668c2ecf20Sopenharmony_ci struct skcipher_request *skcipher_req; 678c2ecf20Sopenharmony_ci }; 688c2ecf20Sopenharmony_ci struct qat_crypto_request_buffs buf; 698c2ecf20Sopenharmony_ci void (*cb)(struct icp_qat_fw_la_resp *resp, 708c2ecf20Sopenharmony_ci struct qat_crypto_request *req); 718c2ecf20Sopenharmony_ci void *iv; 728c2ecf20Sopenharmony_ci dma_addr_t iv_paddr; 738c2ecf20Sopenharmony_ci}; 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci#endif 76