1*87bee1d0Shikaru /* $NetBSD: qat_hw15var.h,v 1.1 2019/11/20 09:37:46 hikaru Exp $ */ 2*87bee1d0Shikaru 3*87bee1d0Shikaru /* 4*87bee1d0Shikaru * Copyright (c) 2019 Internet Initiative Japan, Inc. 5*87bee1d0Shikaru * All rights reserved. 6*87bee1d0Shikaru * 7*87bee1d0Shikaru * Redistribution and use in source and binary forms, with or without 8*87bee1d0Shikaru * modification, are permitted provided that the following conditions 9*87bee1d0Shikaru * are met: 10*87bee1d0Shikaru * 1. Redistributions of source code must retain the above copyright 11*87bee1d0Shikaru * notice, this list of conditions and the following disclaimer. 12*87bee1d0Shikaru * 2. Redistributions in binary form must reproduce the above copyright 13*87bee1d0Shikaru * notice, this list of conditions and the following disclaimer in the 14*87bee1d0Shikaru * documentation and/or other materials provided with the distribution. 15*87bee1d0Shikaru * 16*87bee1d0Shikaru * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17*87bee1d0Shikaru * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18*87bee1d0Shikaru * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19*87bee1d0Shikaru * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20*87bee1d0Shikaru * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21*87bee1d0Shikaru * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22*87bee1d0Shikaru * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23*87bee1d0Shikaru * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24*87bee1d0Shikaru * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25*87bee1d0Shikaru * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26*87bee1d0Shikaru * POSSIBILITY OF SUCH DAMAGE. 27*87bee1d0Shikaru */ 28*87bee1d0Shikaru 29*87bee1d0Shikaru /* 30*87bee1d0Shikaru * Copyright(c) 2007-2013 Intel Corporation. All rights reserved. 31*87bee1d0Shikaru * 32*87bee1d0Shikaru * Redistribution and use in source and binary forms, with or without 33*87bee1d0Shikaru * modification, are permitted provided that the following conditions 34*87bee1d0Shikaru * are met: 35*87bee1d0Shikaru * 36*87bee1d0Shikaru * * Redistributions of source code must retain the above copyright 37*87bee1d0Shikaru * notice, this list of conditions and the following disclaimer. 38*87bee1d0Shikaru * * Redistributions in binary form must reproduce the above copyright 39*87bee1d0Shikaru * notice, this list of conditions and the following disclaimer in 40*87bee1d0Shikaru * the documentation and/or other materials provided with the 41*87bee1d0Shikaru * distribution. 42*87bee1d0Shikaru * * Neither the name of Intel Corporation nor the names of its 43*87bee1d0Shikaru * contributors may be used to endorse or promote products derived 44*87bee1d0Shikaru * from this software without specific prior written permission. 45*87bee1d0Shikaru * 46*87bee1d0Shikaru * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 47*87bee1d0Shikaru * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 48*87bee1d0Shikaru * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 49*87bee1d0Shikaru * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 50*87bee1d0Shikaru * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 51*87bee1d0Shikaru * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 52*87bee1d0Shikaru * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 53*87bee1d0Shikaru * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 54*87bee1d0Shikaru * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 55*87bee1d0Shikaru * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 56*87bee1d0Shikaru * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 57*87bee1d0Shikaru */ 58*87bee1d0Shikaru 59*87bee1d0Shikaru #ifndef _DEV_PCI_QAT_HW15VAR_H_ 60*87bee1d0Shikaru #define _DEV_PCI_QAT_HW15VAR_H_ 61*87bee1d0Shikaru 62*87bee1d0Shikaru CTASSERT(HASH_CONTENT_DESC_SIZE >= 63*87bee1d0Shikaru sizeof(struct fw_auth_hdr) + MAX_HASH_SETUP_BLK_SZ); 64*87bee1d0Shikaru CTASSERT(CIPHER_CONTENT_DESC_SIZE >= 65*87bee1d0Shikaru sizeof(struct fw_cipher_hdr) + MAX_CIPHER_SETUP_BLK_SZ); 66*87bee1d0Shikaru CTASSERT(CONTENT_DESC_MAX_SIZE >= 67*87bee1d0Shikaru roundup(HASH_CONTENT_DESC_SIZE + CIPHER_CONTENT_DESC_SIZE, 68*87bee1d0Shikaru QAT_OPTIMAL_ALIGN)); 69*87bee1d0Shikaru CTASSERT(QAT_SYM_REQ_PARAMS_SIZE_PADDED >= 70*87bee1d0Shikaru roundup(sizeof(struct fw_la_cipher_req_params) + 71*87bee1d0Shikaru sizeof(struct fw_la_auth_req_params), QAT_OPTIMAL_ALIGN)); 72*87bee1d0Shikaru 73*87bee1d0Shikaru /* length of the 5 long words of the request that are stored in the session 74*87bee1d0Shikaru * This is rounded up to 32 in order to use the fast memcopy function */ 75*87bee1d0Shikaru #define QAT_HW15_SESSION_REQ_CACHE_SIZE (32) 76*87bee1d0Shikaru 77*87bee1d0Shikaru void qat_msg_req_type_populate(struct arch_if_req_hdr *, 78*87bee1d0Shikaru enum arch_if_req, uint32_t); 79*87bee1d0Shikaru void qat_msg_cmn_hdr_populate(struct fw_la_bulk_req *, bus_addr_t, 80*87bee1d0Shikaru uint8_t, uint8_t, uint16_t, uint32_t); 81*87bee1d0Shikaru void qat_msg_service_cmd_populate(struct fw_la_bulk_req *, 82*87bee1d0Shikaru enum fw_la_cmd_id, uint16_t); 83*87bee1d0Shikaru void qat_msg_cmn_mid_populate(struct fw_comn_req_mid *, void *, 84*87bee1d0Shikaru uint64_t , uint64_t); 85*87bee1d0Shikaru void qat_msg_req_params_populate(struct fw_la_bulk_req *, bus_addr_t, 86*87bee1d0Shikaru uint8_t); 87*87bee1d0Shikaru void qat_msg_cmn_footer_populate(union fw_comn_req_ftr *, uint64_t); 88*87bee1d0Shikaru void qat_msg_params_populate(struct fw_la_bulk_req *, 89*87bee1d0Shikaru struct qat_crypto_desc *, uint8_t, uint16_t, 90*87bee1d0Shikaru uint16_t); 91*87bee1d0Shikaru 92*87bee1d0Shikaru 93*87bee1d0Shikaru int qat_adm_ring_init(struct qat_softc *); 94*87bee1d0Shikaru int qat_adm_ring_send_init(struct qat_softc *); 95*87bee1d0Shikaru 96*87bee1d0Shikaru void qat_hw15_crypto_setup_desc(struct qat_crypto *, 97*87bee1d0Shikaru struct qat_session *, struct qat_crypto_desc *, 98*87bee1d0Shikaru struct cryptoini *, struct cryptoini *); 99*87bee1d0Shikaru void qat_hw15_crypto_setup_req_params(struct qat_crypto_bank *, 100*87bee1d0Shikaru struct qat_session *, struct qat_crypto_desc const *, 101*87bee1d0Shikaru struct qat_sym_cookie *, struct cryptodesc *, 102*87bee1d0Shikaru struct cryptodesc *, bus_addr_t); 103*87bee1d0Shikaru 104*87bee1d0Shikaru #endif 105