1*78ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */ 2*78ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */ 3*78ee8d1cSJulian Grajkowski /** 4*78ee8d1cSJulian Grajkowski ***************************************************************************** 5*78ee8d1cSJulian Grajkowski * @file icp_buffer_desc.h 6*78ee8d1cSJulian Grajkowski * 7*78ee8d1cSJulian Grajkowski * @defgroup icp_BufferDesc Buffer descriptor for LAC 8*78ee8d1cSJulian Grajkowski * 9*78ee8d1cSJulian Grajkowski * @ingroup LacCommon 10*78ee8d1cSJulian Grajkowski * 11*78ee8d1cSJulian Grajkowski * @description 12*78ee8d1cSJulian Grajkowski * This file contains details of the hardware buffer descriptors used to 13*78ee8d1cSJulian Grajkowski * communicate with the QAT. 14*78ee8d1cSJulian Grajkowski * 15*78ee8d1cSJulian Grajkowski *****************************************************************************/ 16*78ee8d1cSJulian Grajkowski #ifndef ICP_BUFFER_DESC_H 17*78ee8d1cSJulian Grajkowski #define ICP_BUFFER_DESC_H 18*78ee8d1cSJulian Grajkowski 19*78ee8d1cSJulian Grajkowski #include "cpa.h" 20*78ee8d1cSJulian Grajkowski 21*78ee8d1cSJulian Grajkowski typedef Cpa64U icp_qat_addr_width_t; // hi32 first, lo32 second 22*78ee8d1cSJulian Grajkowski 23*78ee8d1cSJulian Grajkowski // Alignement constraint of the buffer list. 24*78ee8d1cSJulian Grajkowski #define ICP_DESCRIPTOR_ALIGNMENT_BYTES 8 25*78ee8d1cSJulian Grajkowski 26*78ee8d1cSJulian Grajkowski /** 27*78ee8d1cSJulian Grajkowski ***************************************************************************** 28*78ee8d1cSJulian Grajkowski * @ingroup icp_BufferDesc 29*78ee8d1cSJulian Grajkowski * Buffer descriptors for FlatBuffers - used in communications with 30*78ee8d1cSJulian Grajkowski * the QAT. 31*78ee8d1cSJulian Grajkowski * 32*78ee8d1cSJulian Grajkowski * @description 33*78ee8d1cSJulian Grajkowski * A QAT friendly buffer descriptor. 34*78ee8d1cSJulian Grajkowski * All buffer descriptor described in this structure are physcial 35*78ee8d1cSJulian Grajkowski * and are 64 bit wide. 36*78ee8d1cSJulian Grajkowski * 37*78ee8d1cSJulian Grajkowski * Updates in the CpaFlatBuffer should be also reflected in this 38*78ee8d1cSJulian Grajkowski * structure 39*78ee8d1cSJulian Grajkowski * 40*78ee8d1cSJulian Grajkowski *****************************************************************************/ 41*78ee8d1cSJulian Grajkowski typedef struct icp_flat_buffer_desc_s { 42*78ee8d1cSJulian Grajkowski Cpa32U dataLenInBytes; 43*78ee8d1cSJulian Grajkowski Cpa32U reserved; 44*78ee8d1cSJulian Grajkowski icp_qat_addr_width_t phyBuffer; 45*78ee8d1cSJulian Grajkowski /**< The client will allocate memory for this using API function calls 46*78ee8d1cSJulian Grajkowski * and the access layer will fill it and the QAT will read it. 47*78ee8d1cSJulian Grajkowski */ 48*78ee8d1cSJulian Grajkowski } icp_flat_buffer_desc_t; 49*78ee8d1cSJulian Grajkowski 50*78ee8d1cSJulian Grajkowski /** 51*78ee8d1cSJulian Grajkowski ***************************************************************************** 52*78ee8d1cSJulian Grajkowski * @ingroup icp_BufferDesc 53*78ee8d1cSJulian Grajkowski * Buffer descriptors for BuffersLists - used in communications with 54*78ee8d1cSJulian Grajkowski * the QAT. 55*78ee8d1cSJulian Grajkowski * 56*78ee8d1cSJulian Grajkowski * @description 57*78ee8d1cSJulian Grajkowski * A QAT friendly buffer descriptor. 58*78ee8d1cSJulian Grajkowski * All buffer descriptor described in this structure are physcial 59*78ee8d1cSJulian Grajkowski * and are 64 bit wide. 60*78ee8d1cSJulian Grajkowski * 61*78ee8d1cSJulian Grajkowski * Updates in the CpaBufferList should be also reflected in this structure 62*78ee8d1cSJulian Grajkowski * 63*78ee8d1cSJulian Grajkowski *****************************************************************************/ 64*78ee8d1cSJulian Grajkowski typedef struct icp_buffer_list_desc_s { 65*78ee8d1cSJulian Grajkowski Cpa64U resrvd; 66*78ee8d1cSJulian Grajkowski Cpa32U numBuffers; 67*78ee8d1cSJulian Grajkowski Cpa32U reserved; 68*78ee8d1cSJulian Grajkowski icp_flat_buffer_desc_t phyBuffers[]; 69*78ee8d1cSJulian Grajkowski /**< Unbounded array of physical buffer pointers, these point to the 70*78ee8d1cSJulian Grajkowski * FlatBufferDescs. The client will allocate memory for this using 71*78ee8d1cSJulian Grajkowski * API function calls and the access layer will fill it and the QAT 72*78ee8d1cSJulian Grajkowski * will read it. 73*78ee8d1cSJulian Grajkowski */ 74*78ee8d1cSJulian Grajkowski } icp_buffer_list_desc_t; 75*78ee8d1cSJulian Grajkowski 76*78ee8d1cSJulian Grajkowski #endif /* ICP_BUFFER_DESC_H */ 77