xref: /freebsd/sys/dev/qat/qat_api/include/icp_buffer_desc.h (revision 71625ec9ad2a9bc8c09784fbd23b759830e0ee5f)
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