1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 /* $FreeBSD$ */
4 #ifndef _ICP_QAT_FW_INIT_ADMIN_H_
5 #define _ICP_QAT_FW_INIT_ADMIN_H_
6
7 #include "icp_qat_fw.h"
8
9 enum icp_qat_fw_init_admin_cmd_id {
10 ICP_QAT_FW_INIT_ME = 0,
11 ICP_QAT_FW_TRNG_ENABLE = 1,
12 ICP_QAT_FW_TRNG_DISABLE = 2,
13 ICP_QAT_FW_CONSTANTS_CFG = 3,
14 ICP_QAT_FW_STATUS_GET = 4,
15 ICP_QAT_FW_COUNTERS_GET = 5,
16 ICP_QAT_FW_LOOPBACK = 6,
17 ICP_QAT_FW_HEARTBEAT_SYNC = 7,
18 ICP_QAT_FW_HEARTBEAT_GET = 8,
19 ICP_QAT_FW_COMP_CAPABILITY_GET = 9,
20 ICP_QAT_FW_CRYPTO_CAPABILITY_GET = 10,
21 ICP_QAT_FW_HEARTBEAT_TIMER_SET = 13,
22 ICP_QAT_FW_RL_SLA_CONFIG = 14,
23 ICP_QAT_FW_RL_INIT = 15,
24 ICP_QAT_FW_RL_DU_START = 16,
25 ICP_QAT_FW_RL_DU_STOP = 17,
26 ICP_QAT_FW_TIMER_GET = 19,
27 ICP_QAT_FW_CNV_STATS_GET = 20,
28 ICP_QAT_FW_PKE_REPLAY_STATS_GET = 21
29 };
30
31 enum icp_qat_fw_init_admin_resp_status {
32 ICP_QAT_FW_INIT_RESP_STATUS_SUCCESS = 0,
33 ICP_QAT_FW_INIT_RESP_STATUS_FAIL = 1,
34 ICP_QAT_FW_INIT_RESP_STATUS_UNSUPPORTED = 4
35 };
36
37 enum icp_qat_fw_cnv_error_type {
38 CNV_ERR_TYPE_NO_ERROR = 0,
39 CNV_ERR_TYPE_CHECKSUM_ERROR,
40 CNV_ERR_TYPE_DECOMP_PRODUCED_LENGTH_ERROR,
41 CNV_ERR_TYPE_DECOMPRESSION_ERROR,
42 CNV_ERR_TYPE_TRANSLATION_ERROR,
43 CNV_ERR_TYPE_DECOMP_CONSUMED_LENGTH_ERROR,
44 CNV_ERR_TYPE_UNKNOWN_ERROR
45 };
46
47 #define CNV_ERROR_TYPE_GET(latest_error) \
48 ({ \
49 __typeof__(latest_error) _lerror = latest_error; \
50 (_lerror >> 12) > CNV_ERR_TYPE_UNKNOWN_ERROR ? \
51 CNV_ERR_TYPE_UNKNOWN_ERROR : \
52 (enum icp_qat_fw_cnv_error_type)(_lerror >> 12); \
53 })
54 #define CNV_ERROR_LENGTH_DELTA_GET(latest_error) \
55 ({ \
56 __typeof__(latest_error) _lerror = latest_error; \
57 ((s16)((_lerror & 0x0FFF) | (_lerror & 0x0800 ? 0xF000 : 0))); \
58 })
59 #define CNV_ERROR_DECOMP_STATUS_GET(latest_error) ((s8)(latest_error & 0xFF))
60
61 struct icp_qat_fw_init_admin_req {
62 u16 init_cfg_sz;
63 u8 resrvd1;
64 u8 cmd_id;
65 u32 max_req_duration;
66 u64 opaque_data;
67
68 union {
69 /* ICP_QAT_FW_INIT_ME */
70 struct {
71 u64 resrvd2;
72 u16 ibuf_size_in_kb;
73 u16 resrvd3;
74 u32 resrvd4;
75 };
76 /* ICP_QAT_FW_CONSTANTS_CFG */
77 struct {
78 u64 init_cfg_ptr;
79 u64 resrvd5;
80 };
81 /* ICP_QAT_FW_HEARTBEAT_TIMER_SET */
82 struct {
83 u64 hb_cfg_ptr;
84 u32 heartbeat_ticks;
85 u32 resrvd6;
86 };
87 /* ICP_QAT_FW_RL_SLA_CONFIG */
88 struct {
89 u32 credit_per_sla;
90 u8 service_id;
91 u8 vf_id;
92 u8 resrvd7;
93 u8 resrvd8;
94 u32 resrvd9;
95 u32 resrvd10;
96 };
97 /* ICP_QAT_FW_RL_INIT */
98 struct {
99 u32 rl_period;
100 u8 config;
101 u8 resrvd11;
102 u8 num_me;
103 u8 resrvd12;
104 u8 pke_svc_arb_map;
105 u8 bulk_crypto_svc_arb_map;
106 u8 compression_svc_arb_map;
107 u8 resrvd13;
108 u32 resrvd14;
109 };
110 /* ICP_QAT_FW_RL_DU_STOP */
111 struct {
112 u64 cfg_ptr;
113 u32 resrvd15;
114 u32 resrvd16;
115 };
116 };
117 } __packed;
118
119 struct icp_qat_fw_init_admin_resp {
120 u8 flags;
121 u8 resrvd1;
122 u8 status;
123 u8 cmd_id;
124 union {
125 u32 resrvd2;
126 u32 ras_event_count;
127 /* ICP_QAT_FW_STATUS_GET */
128 struct {
129 u16 version_minor_num;
130 u16 version_major_num;
131 };
132 /* ICP_QAT_FW_COMP_CAPABILITY_GET */
133 u32 extended_features;
134 /* ICP_QAT_FW_CNV_STATS_GET */
135 struct {
136 u16 error_count;
137 u16 latest_error;
138 };
139 };
140 u64 opaque_data;
141 union {
142 u32 resrvd3[4];
143 /* ICP_QAT_FW_STATUS_GET */
144 struct {
145 u32 version_patch_num;
146 u8 context_id;
147 u8 ae_id;
148 u16 resrvd4;
149 u64 resrvd5;
150 };
151 /* ICP_QAT_FW_COMP_CAPABILITY_GET */
152 struct {
153 u16 compression_algos;
154 u16 checksum_algos;
155 u32 deflate_capabilities;
156 u32 resrvd6;
157 u32 deprecated;
158 };
159 /* ICP_QAT_FW_CRYPTO_CAPABILITY_GET */
160 struct {
161 u32 cipher_algos;
162 u32 hash_algos;
163 u16 keygen_algos;
164 u16 other;
165 u16 public_key_algos;
166 u16 prime_algos;
167 };
168 /* ICP_QAT_FW_RL_DU_STOP */
169 struct {
170 u32 resrvd7;
171 u8 granularity;
172 u8 resrvd8;
173 u16 resrvd9;
174 u32 total_du_time;
175 u32 resrvd10;
176 };
177 /* ICP_QAT_FW_TIMER_GET */
178 struct {
179 u64 timestamp;
180 u64 resrvd11;
181 };
182 /* ICP_QAT_FW_COUNTERS_GET */
183 struct {
184 u64 req_rec_count;
185 u64 resp_sent_count;
186 };
187 /* ICP_QAT_FW_PKE_REPLAY_STATS_GET */
188 struct {
189 u32 successful_count;
190 u32 unsuccessful_count;
191 u64 resrvd12;
192 };
193 };
194 } __packed;
195
196 enum icp_qat_fw_init_admin_init_flag { ICP_QAT_FW_INIT_FLAG_PKE_DISABLED = 0 };
197
198 struct icp_qat_fw_init_admin_hb_cnt {
199 u16 resp_heartbeat_cnt;
200 u16 req_heartbeat_cnt;
201 };
202
203 #define ICP_QAT_FW_COMN_HEARTBEAT_OK 0
204 #define ICP_QAT_FW_COMN_HEARTBEAT_BLOCKED 1
205 #define ICP_QAT_FW_COMN_HEARTBEAT_FLAG_BITPOS 0
206 #define ICP_QAT_FW_COMN_HEARTBEAT_FLAG_MASK 0x1
207 #define ICP_QAT_FW_COMN_STATUS_RESRVD_FLD_MASK 0xFE
208 #define ICP_QAT_FW_COMN_HEARTBEAT_HDR_FLAG_GET(hdr_t) \
209 ICP_QAT_FW_COMN_HEARTBEAT_FLAG_GET(hdr_t.flags)
210
211 #define ICP_QAT_FW_COMN_HEARTBEAT_HDR_FLAG_SET(hdr_t, val) \
212 ICP_QAT_FW_COMN_HEARTBEAT_FLAG_SET(hdr_t, val)
213
214 #define ICP_QAT_FW_COMN_HEARTBEAT_FLAG_GET(flags) \
215 QAT_FIELD_GET(flags, \
216 ICP_QAT_FW_COMN_HEARTBEAT_FLAG_BITPOS, \
217 ICP_QAT_FW_COMN_HEARTBEAT_FLAG_MASK)
218 #endif
Cache object: b663246d2a9bc8dc2f6cc5daa790789c
|