Branch data Line data Source code
1 : : /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2 : : * Copyright(c) 2015-2018 Intel Corporation
3 : : */
4 : : #ifndef _ICP_QAT_HW_H_
5 : : #define _ICP_QAT_HW_H_
6 : :
7 : : #include "icp_qat_fw.h"
8 : :
9 : : #define ADF_C4XXXIOV_VFLEGFUSES_OFFSET 0x4C
10 : : #define ADF1_C4XXXIOV_VFLEGFUSES_LEN 4
11 : :
12 : : enum icp_qat_slice_mask {
13 : : ICP_ACCEL_MASK_CIPHER_SLICE = 0x01,
14 : : ICP_ACCEL_MASK_AUTH_SLICE = 0x02,
15 : : ICP_ACCEL_MASK_PKE_SLICE = 0x04,
16 : : ICP_ACCEL_MASK_COMPRESS_SLICE = 0x08,
17 : : ICP_ACCEL_MASK_DEPRECATED = 0x10,
18 : : ICP_ACCEL_MASK_EIA3_SLICE = 0x20,
19 : : ICP_ACCEL_MASK_SHA3_SLICE = 0x40,
20 : : ICP_ACCEL_MASK_CRYPTO0_SLICE = 0x80,
21 : : ICP_ACCEL_MASK_CRYPTO1_SLICE = 0x100,
22 : : ICP_ACCEL_MASK_CRYPTO2_SLICE = 0x200,
23 : : ICP_ACCEL_MASK_SM3_SLICE = 0x400,
24 : : ICP_ACCEL_MASK_SM4_SLICE = 0x800
25 : : };
26 : :
27 : : enum icp_qat_hw_ae_id {
28 : : ICP_QAT_HW_AE_0 = 0,
29 : : ICP_QAT_HW_AE_1 = 1,
30 : : ICP_QAT_HW_AE_2 = 2,
31 : : ICP_QAT_HW_AE_3 = 3,
32 : : ICP_QAT_HW_AE_4 = 4,
33 : : ICP_QAT_HW_AE_5 = 5,
34 : : ICP_QAT_HW_AE_6 = 6,
35 : : ICP_QAT_HW_AE_7 = 7,
36 : : ICP_QAT_HW_AE_8 = 8,
37 : : ICP_QAT_HW_AE_9 = 9,
38 : : ICP_QAT_HW_AE_10 = 10,
39 : : ICP_QAT_HW_AE_11 = 11,
40 : : ICP_QAT_HW_AE_DELIMITER = 12
41 : : };
42 : :
43 : : enum icp_qat_hw_qat_id {
44 : : ICP_QAT_HW_QAT_0 = 0,
45 : : ICP_QAT_HW_QAT_1 = 1,
46 : : ICP_QAT_HW_QAT_2 = 2,
47 : : ICP_QAT_HW_QAT_3 = 3,
48 : : ICP_QAT_HW_QAT_4 = 4,
49 : : ICP_QAT_HW_QAT_5 = 5,
50 : : ICP_QAT_HW_QAT_DELIMITER = 6
51 : : };
52 : :
53 : : enum icp_qat_hw_auth_algo {
54 : : ICP_QAT_HW_AUTH_ALGO_NULL = 0,
55 : : ICP_QAT_HW_AUTH_ALGO_SHA1 = 1,
56 : : ICP_QAT_HW_AUTH_ALGO_MD5 = 2,
57 : : ICP_QAT_HW_AUTH_ALGO_SHA224 = 3,
58 : : ICP_QAT_HW_AUTH_ALGO_SHA256 = 4,
59 : : ICP_QAT_HW_AUTH_ALGO_SHA384 = 5,
60 : : ICP_QAT_HW_AUTH_ALGO_SHA512 = 6,
61 : : ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC = 7,
62 : : ICP_QAT_HW_AUTH_ALGO_AES_CBC_MAC = 8,
63 : : ICP_QAT_HW_AUTH_ALGO_AES_F9 = 9,
64 : : ICP_QAT_HW_AUTH_ALGO_GALOIS_128 = 10,
65 : : ICP_QAT_HW_AUTH_ALGO_GALOIS_64 = 11,
66 : : ICP_QAT_HW_AUTH_ALGO_KASUMI_F9 = 12,
67 : : ICP_QAT_HW_AUTH_ALGO_SNOW_3G_UIA2 = 13,
68 : : ICP_QAT_HW_AUTH_ALGO_ZUC_3G_128_EIA3 = 14,
69 : : ICP_QAT_HW_AUTH_ALGO_SM3 = 15,
70 : : ICP_QAT_HW_AUTH_ALGO_SHA3_224 = 16,
71 : : ICP_QAT_HW_AUTH_ALGO_SHA3_256 = 17,
72 : : ICP_QAT_HW_AUTH_ALGO_SHA3_384 = 18,
73 : : ICP_QAT_HW_AUTH_ALGO_SHA3_512 = 19,
74 : : ICP_QAT_HW_AUTH_ALGO_DELIMITER = 20
75 : : };
76 : :
77 : : enum icp_qat_hw_auth_mode {
78 : : ICP_QAT_HW_AUTH_MODE0 = 0,
79 : : ICP_QAT_HW_AUTH_MODE1 = 1,
80 : : ICP_QAT_HW_AUTH_MODE2 = 2,
81 : : ICP_QAT_HW_AUTH_MODE_DELIMITER = 3
82 : : };
83 : :
84 : : struct icp_qat_hw_auth_config {
85 : : uint32_t config;
86 : : uint32_t reserved;
87 : : };
88 : :
89 : : #define QAT_AUTH_MODE_BITPOS 4
90 : : #define QAT_AUTH_MODE_MASK 0xF
91 : : #define QAT_AUTH_ALGO_BITPOS 0
92 : : #define QAT_AUTH_ALGO_MASK 0xF
93 : : #define QAT_AUTH_CMP_BITPOS 8
94 : : #define QAT_AUTH_CMP_MASK 0x7F
95 : : #define QAT_AUTH_SHA3_PADDING_DISABLE_BITPOS 16
96 : : #define QAT_AUTH_SHA3_PADDING_DISABLE_MASK 0x1
97 : : #define QAT_AUTH_SHA3_PADDING_OVERRIDE_BITPOS 17
98 : : #define QAT_AUTH_SHA3_PADDING_OVERRIDE_MASK 0x1
99 : : #define QAT_AUTH_ALGO_SHA3_BITPOS 22
100 : : #define QAT_AUTH_ALGO_SHA3_MASK 0x3
101 : : #define QAT_AUTH_SHA3_PROG_PADDING_POSTFIX_BITPOS 16
102 : : #define QAT_AUTH_SHA3_PROG_PADDING_POSTFIX_MASK 0xF
103 : : #define QAT_AUTH_SHA3_PROG_PADDING_PREFIX_BITPOS 24
104 : : #define QAT_AUTH_SHA3_PROG_PADDING_PREFIX_MASK 0xFF
105 : : #define QAT_AUTH_SHA3_HW_PADDING_ENABLE 0
106 : : #define QAT_AUTH_SHA3_HW_PADDING_DISABLE 1
107 : : #define QAT_AUTH_SHA3_PADDING_DISABLE_USE_DEFAULT 0
108 : : #define QAT_AUTH_SHA3_PADDING_OVERRIDE_USE_DEFAULT 0
109 : : #define QAT_AUTH_SHA3_PADDING_OVERRIDE_PROGRAMMABLE 1
110 : : #define QAT_AUTH_SHA3_PROG_PADDING_POSTFIX_RESERVED 0
111 : : #define QAT_AUTH_SHA3_PROG_PADDING_PREFIX_RESERVED 0
112 : :
113 : : #define ICP_QAT_HW_AUTH_CONFIG_BUILD(mode, algo, cmp_len) \
114 : : ((((mode) & QAT_AUTH_MODE_MASK) << QAT_AUTH_MODE_BITPOS) | \
115 : : (((algo) & QAT_AUTH_ALGO_MASK) << QAT_AUTH_ALGO_BITPOS) | \
116 : : (((algo >> 4) & QAT_AUTH_ALGO_SHA3_MASK) \
117 : : << QAT_AUTH_ALGO_SHA3_BITPOS) | \
118 : : (((QAT_AUTH_SHA3_PADDING_DISABLE_USE_DEFAULT) & \
119 : : QAT_AUTH_SHA3_PADDING_DISABLE_MASK) \
120 : : << QAT_AUTH_SHA3_PADDING_DISABLE_BITPOS) | \
121 : : (((QAT_AUTH_SHA3_PADDING_OVERRIDE_USE_DEFAULT) & \
122 : : QAT_AUTH_SHA3_PADDING_OVERRIDE_MASK) \
123 : : << QAT_AUTH_SHA3_PADDING_OVERRIDE_BITPOS) | \
124 : : (((cmp_len) & QAT_AUTH_CMP_MASK) << QAT_AUTH_CMP_BITPOS))
125 : :
126 : : #define ICP_QAT_HW_AUTH_CONFIG_BUILD_UPPER \
127 : : ((((QAT_AUTH_SHA3_PROG_PADDING_POSTFIX_RESERVED) & \
128 : : QAT_AUTH_SHA3_PROG_PADDING_POSTFIX_MASK) \
129 : : << QAT_AUTH_SHA3_PROG_PADDING_POSTFIX_BITPOS) | \
130 : : (((QAT_AUTH_SHA3_PROG_PADDING_PREFIX_RESERVED) & \
131 : : QAT_AUTH_SHA3_PROG_PADDING_PREFIX_MASK) \
132 : : << QAT_AUTH_SHA3_PROG_PADDING_PREFIX_BITPOS))
133 : :
134 : : struct icp_qat_hw_auth_counter {
135 : : uint32_t counter;
136 : : uint32_t reserved;
137 : : };
138 : :
139 : : #define QAT_AUTH_COUNT_MASK 0xFFFFFFFF
140 : : #define QAT_AUTH_COUNT_BITPOS 0
141 : : #define ICP_QAT_HW_AUTH_COUNT_BUILD(val) \
142 : : (((val) & QAT_AUTH_COUNT_MASK) << QAT_AUTH_COUNT_BITPOS)
143 : :
144 : : struct icp_qat_hw_auth_setup {
145 : : struct icp_qat_hw_auth_config auth_config;
146 : : struct icp_qat_hw_auth_counter auth_counter;
147 : : };
148 : :
149 : : #define QAT_HW_DEFAULT_ALIGNMENT 8
150 : : #define QAT_HW_ROUND_UP(val, n) (((val) + ((n) - 1)) & (~(n - 1)))
151 : : #define ICP_QAT_HW_NULL_STATE1_SZ 32
152 : : #define ICP_QAT_HW_MD5_STATE1_SZ 16
153 : : #define ICP_QAT_HW_SHA1_STATE1_SZ 20
154 : : #define ICP_QAT_HW_SHA224_STATE1_SZ 32
155 : : #define ICP_QAT_HW_SHA3_224_STATE1_SZ 28
156 : : #define ICP_QAT_HW_SHA256_STATE1_SZ 32
157 : : #define ICP_QAT_HW_SM3_STATE1_SZ 32
158 : : #define ICP_QAT_HW_SHA3_256_STATE1_SZ 32
159 : : #define ICP_QAT_HW_SHA384_STATE1_SZ 64
160 : : #define ICP_QAT_HW_SHA3_384_STATE1_SZ 48
161 : : #define ICP_QAT_HW_SHA512_STATE1_SZ 64
162 : : #define ICP_QAT_HW_SHA3_512_STATE1_SZ 64
163 : : #define ICP_QAT_HW_AES_XCBC_MAC_STATE1_SZ 16
164 : : #define ICP_QAT_HW_AES_CBC_MAC_STATE1_SZ 16
165 : : #define ICP_QAT_HW_AES_F9_STATE1_SZ 32
166 : : #define ICP_QAT_HW_KASUMI_F9_STATE1_SZ 16
167 : : #define ICP_QAT_HW_GALOIS_128_STATE1_SZ 16
168 : : #define ICP_QAT_HW_SNOW_3G_UIA2_STATE1_SZ 8
169 : : #define ICP_QAT_HW_ZUC_3G_EIA3_STATE1_SZ 8
170 : :
171 : : #define ICP_QAT_HW_NULL_STATE2_SZ 32
172 : : #define ICP_QAT_HW_MD5_STATE2_SZ 16
173 : : #define ICP_QAT_HW_SHA1_STATE2_SZ 20
174 : : #define ICP_QAT_HW_SHA224_STATE2_SZ 32
175 : : #define ICP_QAT_HW_SHA3_224_STATE2_SZ 0
176 : : #define ICP_QAT_HW_SHA256_STATE2_SZ 32
177 : : #define ICP_QAT_HW_SM3_STATE2_SZ 32
178 : : #define ICP_QAT_HW_SHA3_256_STATE2_SZ 0
179 : : #define ICP_QAT_HW_SHA384_STATE2_SZ 64
180 : : #define ICP_QAT_HW_SHA3_384_STATE2_SZ 0
181 : : #define ICP_QAT_HW_SHA512_STATE2_SZ 64
182 : : #define ICP_QAT_HW_SHA3_512_STATE2_SZ 0
183 : : #define ICP_QAT_HW_AES_XCBC_MAC_STATE2_SZ 48
184 : : #define ICP_QAT_HW_AES_XCBC_MAC_KEY_SZ 16
185 : : #define ICP_QAT_HW_AES_CBC_MAC_KEY_SZ 16
186 : : #define ICP_QAT_HW_AES_CCM_CBC_E_CTR0_SZ 16
187 : : #define ICP_QAT_HW_F9_IK_SZ 16
188 : : #define ICP_QAT_HW_F9_FK_SZ 16
189 : : #define ICP_QAT_HW_KASUMI_F9_STATE2_SZ (ICP_QAT_HW_F9_IK_SZ + \
190 : : ICP_QAT_HW_F9_FK_SZ)
191 : : #define ICP_QAT_HW_AES_F9_STATE2_SZ ICP_QAT_HW_KASUMI_F9_STATE2_SZ
192 : : #define ICP_QAT_HW_SNOW_3G_UIA2_STATE2_SZ 24
193 : : #define ICP_QAT_HW_ZUC_3G_EIA3_STATE2_SZ 32
194 : : #define ICP_QAT_HW_GALOIS_H_SZ 16
195 : : #define ICP_QAT_HW_GALOIS_LEN_A_SZ 8
196 : : #define ICP_QAT_HW_GALOIS_E_CTR0_SZ 16
197 : :
198 : : struct icp_qat_hw_auth_sha512 {
199 : : struct icp_qat_hw_auth_setup inner_setup;
200 : : uint8_t state1[ICP_QAT_HW_SHA512_STATE1_SZ];
201 : : struct icp_qat_hw_auth_setup outer_setup;
202 : : uint8_t state2[ICP_QAT_HW_SHA512_STATE2_SZ];
203 : : };
204 : :
205 : : struct icp_qat_hw_auth_sha3_512 {
206 : : struct icp_qat_hw_auth_setup inner_setup;
207 : : uint8_t state1[ICP_QAT_HW_SHA3_512_STATE1_SZ];
208 : : struct icp_qat_hw_auth_setup outer_setup;
209 : : };
210 : :
211 : : struct icp_qat_hw_auth_algo_blk {
212 : : struct icp_qat_hw_auth_sha512 sha;
213 : : };
214 : :
215 : : #define ICP_QAT_HW_GALOIS_LEN_A_BITPOS 0
216 : : #define ICP_QAT_HW_GALOIS_LEN_A_MASK 0xFFFFFFFF
217 : :
218 : : enum icp_qat_hw_cipher_algo {
219 : : ICP_QAT_HW_CIPHER_ALGO_NULL = 0,
220 : : ICP_QAT_HW_CIPHER_ALGO_DES = 1,
221 : : ICP_QAT_HW_CIPHER_ALGO_3DES = 2,
222 : : ICP_QAT_HW_CIPHER_ALGO_AES128 = 3,
223 : : ICP_QAT_HW_CIPHER_ALGO_AES192 = 4,
224 : : ICP_QAT_HW_CIPHER_ALGO_AES256 = 5,
225 : : ICP_QAT_HW_CIPHER_ALGO_ARC4 = 6,
226 : : ICP_QAT_HW_CIPHER_ALGO_KASUMI = 7,
227 : : ICP_QAT_HW_CIPHER_ALGO_SNOW_3G_UEA2 = 8,
228 : : ICP_QAT_HW_CIPHER_ALGO_ZUC_3G_128_EEA3 = 9,
229 : : ICP_QAT_HW_CIPHER_ALGO_SM4 = 10,
230 : : ICP_QAT_HW_CIPHER_ALGO_CHACHA20_POLY1305 = 11,
231 : : ICP_QAT_HW_CIPHER_DELIMITER = 12
232 : : };
233 : :
234 : : enum icp_qat_hw_cipher_mode {
235 : : ICP_QAT_HW_CIPHER_ECB_MODE = 0,
236 : : ICP_QAT_HW_CIPHER_CBC_MODE = 1,
237 : : ICP_QAT_HW_CIPHER_CTR_MODE = 2,
238 : : ICP_QAT_HW_CIPHER_F8_MODE = 3,
239 : : ICP_QAT_HW_CIPHER_AEAD_MODE = 4,
240 : : ICP_QAT_HW_CIPHER_XTS_MODE = 6,
241 : : ICP_QAT_HW_CIPHER_MODE_DELIMITER = 7
242 : : };
243 : :
244 : : struct icp_qat_hw_cipher_config {
245 : : uint32_t val;
246 : : uint32_t reserved;
247 : : };
248 : :
249 : : enum icp_qat_hw_cipher_dir {
250 : : ICP_QAT_HW_CIPHER_ENCRYPT = 0,
251 : : ICP_QAT_HW_CIPHER_DECRYPT = 1,
252 : : };
253 : :
254 : : enum icp_qat_hw_auth_op {
255 : : ICP_QAT_HW_AUTH_VERIFY = 0,
256 : : ICP_QAT_HW_AUTH_GENERATE = 1,
257 : : };
258 : :
259 : : enum icp_qat_hw_cipher_convert {
260 : : ICP_QAT_HW_CIPHER_NO_CONVERT = 0,
261 : : ICP_QAT_HW_CIPHER_KEY_CONVERT = 1,
262 : : };
263 : :
264 : : #define QAT_CIPHER_MODE_BITPOS 4
265 : : #define QAT_CIPHER_MODE_LE_BITPOS 28
266 : : #define QAT_CIPHER_MODE_MASK 0xF
267 : : #define QAT_CIPHER_ALGO_BITPOS 0
268 : : #define QAT_CIPHER_ALGO_LE_BITPOS 24
269 : : #define QAT_CIPHER_ALGO_MASK 0xF
270 : : #define QAT_CIPHER_CONVERT_BITPOS 9
271 : : #define QAT_CIPHER_CONVERT_LE_BITPOS 17
272 : : #define QAT_CIPHER_CONVERT_MASK 0x1
273 : : #define QAT_CIPHER_DIR_BITPOS 8
274 : : #define QAT_CIPHER_DIR_LE_BITPOS 16
275 : : #define QAT_CIPHER_DIR_MASK 0x1
276 : : #define QAT_CIPHER_AEAD_HASH_CMP_LEN_BITPOS 10
277 : : #define QAT_CIPHER_AEAD_HASH_CMP_LEN_LE_BITPOS 18
278 : : #define QAT_CIPHER_AEAD_HASH_CMP_LEN_MASK 0x1F
279 : : #define QAT_CIPHER_MODE_F8_KEY_SZ_MULT 2
280 : : #define QAT_CIPHER_MODE_XTS_KEY_SZ_MULT 2
281 : : #define ICP_QAT_HW_CIPHER_CONFIG_BUILD(mode, algo, convert, dir) \
282 : : (((mode & QAT_CIPHER_MODE_MASK) << QAT_CIPHER_MODE_BITPOS) | \
283 : : ((algo & QAT_CIPHER_ALGO_MASK) << QAT_CIPHER_ALGO_BITPOS) | \
284 : : ((convert & QAT_CIPHER_CONVERT_MASK) << QAT_CIPHER_CONVERT_BITPOS) | \
285 : : ((dir & QAT_CIPHER_DIR_MASK) << QAT_CIPHER_DIR_BITPOS))
286 : :
287 : : #define QAT_CIPHER_AEAD_AAD_LOWER_SHIFT 24
288 : : #define QAT_CIPHER_AEAD_AAD_UPPER_SHIFT 8
289 : : #define QAT_CIPHER_AEAD_AAD_SIZE_LOWER_MASK 0xFF
290 : : #define QAT_CIPHER_AEAD_AAD_SIZE_UPPER_MASK 0x3F
291 : : #define QAT_CIPHER_AEAD_AAD_SIZE_MASK 0x3FFF
292 : : #define QAT_CIPHER_AEAD_AAD_SIZE_BITPOS 16
293 : : #define QAT_CIPHER_AEAD_AAD_SIZE_LE_BITPOS 0
294 : : #define ICP_QAT_HW_CIPHER_CONFIG_BUILD_UPPER(aad_size) \
295 : : ({ \
296 : : typeof(aad_size) aad_size1 = aad_size; \
297 : : (((((aad_size1) >> QAT_CIPHER_AEAD_AAD_UPPER_SHIFT) & \
298 : : QAT_CIPHER_AEAD_AAD_SIZE_UPPER_MASK) << \
299 : : QAT_CIPHER_AEAD_AAD_SIZE_BITPOS) | \
300 : : (((aad_size1) & QAT_CIPHER_AEAD_AAD_SIZE_LOWER_MASK) << \
301 : : QAT_CIPHER_AEAD_AAD_LOWER_SHIFT)); \
302 : : })
303 : :
304 : : #define ICP_QAT_HW_DES_BLK_SZ 8
305 : : #define ICP_QAT_HW_3DES_BLK_SZ 8
306 : : #define ICP_QAT_HW_NULL_BLK_SZ 8
307 : : #define ICP_QAT_HW_AES_BLK_SZ 16
308 : : #define ICP_QAT_HW_KASUMI_BLK_SZ 8
309 : : #define ICP_QAT_HW_SNOW_3G_BLK_SZ 8
310 : : #define ICP_QAT_HW_ZUC_3G_BLK_SZ 8
311 : : #define ICP_QAT_HW_NULL_KEY_SZ 256
312 : : #define ICP_QAT_HW_DES_KEY_SZ 8
313 : : #define ICP_QAT_HW_3DES_KEY_SZ 24
314 : : #define ICP_QAT_HW_AES_128_KEY_SZ 16
315 : : #define ICP_QAT_HW_AES_192_KEY_SZ 24
316 : : #define ICP_QAT_HW_AES_256_KEY_SZ 32
317 : : #define ICP_QAT_HW_AES_128_F8_KEY_SZ (ICP_QAT_HW_AES_128_KEY_SZ * \
318 : : QAT_CIPHER_MODE_F8_KEY_SZ_MULT)
319 : : #define ICP_QAT_HW_AES_192_F8_KEY_SZ (ICP_QAT_HW_AES_192_KEY_SZ * \
320 : : QAT_CIPHER_MODE_F8_KEY_SZ_MULT)
321 : : #define ICP_QAT_HW_AES_256_F8_KEY_SZ (ICP_QAT_HW_AES_256_KEY_SZ * \
322 : : QAT_CIPHER_MODE_F8_KEY_SZ_MULT)
323 : : #define ICP_QAT_HW_AES_128_XTS_KEY_SZ (ICP_QAT_HW_AES_128_KEY_SZ * \
324 : : QAT_CIPHER_MODE_XTS_KEY_SZ_MULT)
325 : : #define ICP_QAT_HW_AES_256_XTS_KEY_SZ (ICP_QAT_HW_AES_256_KEY_SZ * \
326 : : QAT_CIPHER_MODE_XTS_KEY_SZ_MULT)
327 : : #define ICP_QAT_HW_KASUMI_KEY_SZ 16
328 : : #define ICP_QAT_HW_KASUMI_F8_KEY_SZ (ICP_QAT_HW_KASUMI_KEY_SZ * \
329 : : QAT_CIPHER_MODE_F8_KEY_SZ_MULT)
330 : : #define ICP_QAT_HW_AES_128_XTS_KEY_SZ (ICP_QAT_HW_AES_128_KEY_SZ * \
331 : : QAT_CIPHER_MODE_XTS_KEY_SZ_MULT)
332 : : #define ICP_QAT_HW_AES_256_XTS_KEY_SZ (ICP_QAT_HW_AES_256_KEY_SZ * \
333 : : QAT_CIPHER_MODE_XTS_KEY_SZ_MULT)
334 : : #define ICP_QAT_HW_ARC4_KEY_SZ 256
335 : : #define ICP_QAT_HW_SNOW_3G_UEA2_KEY_SZ 16
336 : : #define ICP_QAT_HW_SNOW_3G_UEA2_IV_SZ 16
337 : : #define ICP_QAT_HW_ZUC_3G_EEA3_KEY_SZ 16
338 : : #define ICP_QAT_HW_ZUC_3G_EEA3_IV_SZ 16
339 : : #define ICP_QAT_HW_MODE_F8_NUM_REG_TO_CLEAR 2
340 : : #define ICP_QAT_HW_CHACHAPOLY_KEY_SZ 32
341 : : #define ICP_QAT_HW_CHACHAPOLY_IV_SZ 12
342 : : #define ICP_QAT_HW_CHACHAPOLY_BLK_SZ 64
343 : : #define ICP_QAT_HW_SPC_CTR_SZ 16
344 : : #define ICP_QAT_HW_CHACHAPOLY_ICV_SZ 16
345 : : #define ICP_QAT_HW_CHACHAPOLY_AAD_MAX_LOG 14
346 : :
347 : : #define ICP_QAT_HW_CIPHER_MAX_KEY_SZ ICP_QAT_HW_AES_256_F8_KEY_SZ
348 : :
349 : : /* These defines describe position of the bit-fields
350 : : * in the flags byte in B0
351 : : */
352 : : #define ICP_QAT_HW_CCM_B0_FLAGS_ADATA_SHIFT 6
353 : : #define ICP_QAT_HW_CCM_B0_FLAGS_T_SHIFT 3
354 : :
355 : : #define ICP_QAT_HW_CCM_BUILD_B0_FLAGS(Adata, t, q) \
356 : : ((((Adata) > 0 ? 1 : 0) << ICP_QAT_HW_CCM_B0_FLAGS_ADATA_SHIFT) \
357 : : | ((((t) - 2) >> 1) << ICP_QAT_HW_CCM_B0_FLAGS_T_SHIFT) \
358 : : | ((q) - 1))
359 : :
360 : : #define ICP_QAT_HW_CCM_NQ_CONST 15
361 : : #define ICP_QAT_HW_CCM_AAD_B0_LEN 16
362 : : #define ICP_QAT_HW_CCM_AAD_LEN_INFO 2
363 : : #define ICP_QAT_HW_CCM_AAD_DATA_OFFSET (ICP_QAT_HW_CCM_AAD_B0_LEN + \
364 : : ICP_QAT_HW_CCM_AAD_LEN_INFO)
365 : : #define ICP_QAT_HW_CCM_AAD_ALIGNMENT 16
366 : : #define ICP_QAT_HW_CCM_MSG_LEN_MAX_FIELD_SIZE 4
367 : : #define ICP_QAT_HW_CCM_NONCE_OFFSET 1
368 : :
369 : : struct icp_qat_hw_cipher_algo_blk {
370 : : struct icp_qat_hw_cipher_config cipher_config;
371 : : uint8_t key[ICP_QAT_HW_CIPHER_MAX_KEY_SZ];
372 : : } __rte_cache_aligned;
373 : :
374 : : struct icp_qat_hw_gen2_crc_cd {
375 : : uint32_t flags;
376 : : uint32_t reserved1[5];
377 : : uint32_t initial_crc;
378 : : uint32_t reserved2[3];
379 : : };
380 : :
381 : : #define QAT_GEN3_COMP_REFLECT_IN_BITPOS 17
382 : : #define QAT_GEN3_COMP_REFLECT_IN_MASK 0x1
383 : : #define QAT_GEN3_COMP_REFLECT_OUT_BITPOS 18
384 : : #define QAT_GEN3_COMP_REFLECT_OUT_MASK 0x1
385 : :
386 : : struct icp_qat_hw_gen3_crc_cd {
387 : : uint32_t flags;
388 : : uint32_t reserved1[3];
389 : : uint32_t polynomial;
390 : : uint32_t xor_val;
391 : : uint32_t reserved2[2];
392 : : uint32_t initial_crc;
393 : : uint32_t reserved3;
394 : : };
395 : :
396 : : struct icp_qat_hw_ucs_cipher_config {
397 : : uint32_t val;
398 : : uint32_t reserved[3];
399 : : };
400 : :
401 : : struct icp_qat_hw_cipher_algo_blk20 {
402 : : struct icp_qat_hw_ucs_cipher_config cipher_config;
403 : : uint8_t key[ICP_QAT_HW_CIPHER_MAX_KEY_SZ];
404 : : } __rte_cache_aligned;
405 : :
406 : : enum icp_qat_hw_ucs_cipher_reflect_out {
407 : : ICP_QAT_HW_CIPHER_UCS_REFLECT_OUT_DISABLED = 0,
408 : : ICP_QAT_HW_CIPHER_UCS_REFLECT_OUT_ENABLED = 1,
409 : : };
410 : :
411 : : enum icp_qat_hw_ucs_cipher_reflect_in {
412 : : ICP_QAT_HW_CIPHER_UCS_REFLECT_IN_DISABLED = 0,
413 : : ICP_QAT_HW_CIPHER_UCS_REFLECT_IN_ENABLED = 1,
414 : : };
415 : :
416 : : enum icp_qat_hw_ucs_cipher_crc_encoding {
417 : : ICP_QAT_HW_CIPHER_UCS_CRC_NOT_REQUIRED = 0,
418 : : ICP_QAT_HW_CIPHER_UCS_CRC32 = 1,
419 : : ICP_QAT_HW_CIPHER_UCS_CRC64 = 2,
420 : : };
421 : :
422 : : #define QAT_CIPHER_UCS_REFLECT_OUT_LE_BITPOS 17
423 : : #define QAT_CIPHER_UCS_REFLECT_OUT_MASK 0x1
424 : : #define QAT_CIPHER_UCS_REFLECT_IN_LE_BITPOS 16
425 : : #define QAT_CIPHER_UCS_REFLECT_IN_MASK 0x1
426 : : #define QAT_CIPHER_UCS_CRC_ENCODING_LE_BITPOS 14
427 : : #define QAT_CIPHER_UCS_CRC_ENCODING_MASK 0x3
428 : :
429 : : struct icp_qat_fw_ucs_slice_cipher_config {
430 : : enum icp_qat_hw_cipher_mode mode;
431 : : enum icp_qat_hw_cipher_algo algo;
432 : : uint16_t hash_cmp_val;
433 : : enum icp_qat_hw_cipher_dir dir;
434 : : uint16_t associated_data_len_in_bytes;
435 : : enum icp_qat_hw_ucs_cipher_reflect_out crc_reflect_out;
436 : : enum icp_qat_hw_ucs_cipher_reflect_in crc_reflect_in;
437 : : enum icp_qat_hw_ucs_cipher_crc_encoding crc_encoding;
438 : : };
439 : :
440 : : struct icp_qat_hw_gen4_crc_cd {
441 : : uint32_t ucs_config[4];
442 : : uint32_t polynomial;
443 : : uint32_t reserved1;
444 : : uint32_t xor_val;
445 : : uint32_t reserved2;
446 : : uint32_t initial_crc;
447 : : uint32_t reserved3;
448 : : };
449 : :
450 : : static inline uint32_t
451 : : ICP_QAT_HW_UCS_CIPHER_GEN4_BUILD_CONFIG_LOWER(
452 : : struct icp_qat_fw_ucs_slice_cipher_config csr)
453 : : {
454 : : uint32_t val32 = 0;
455 : :
456 : : QAT_FIELD_SET(val32,
457 : : csr.mode,
458 : : QAT_CIPHER_MODE_LE_BITPOS,
459 : : QAT_CIPHER_MODE_MASK);
460 : :
461 : : QAT_FIELD_SET(val32,
462 : : csr.algo,
463 : : QAT_CIPHER_ALGO_LE_BITPOS,
464 : : QAT_CIPHER_ALGO_MASK);
465 : :
466 : : QAT_FIELD_SET(val32,
467 : : csr.hash_cmp_val,
468 : : QAT_CIPHER_AEAD_HASH_CMP_LEN_LE_BITPOS,
469 : : QAT_CIPHER_AEAD_HASH_CMP_LEN_MASK);
470 : :
471 : : QAT_FIELD_SET(val32,
472 : : csr.dir,
473 : : QAT_CIPHER_DIR_LE_BITPOS,
474 : : QAT_CIPHER_DIR_MASK);
475 : :
476 : : return rte_bswap32(val32);
477 : : }
478 : :
479 : : static inline uint32_t
480 : 0 : ICP_QAT_HW_UCS_CIPHER_GEN4_BUILD_CONFIG_UPPER(
481 : : struct icp_qat_fw_ucs_slice_cipher_config csr)
482 : : {
483 : : uint32_t val32 = 0;
484 : :
485 : 0 : QAT_FIELD_SET(val32,
486 : : csr.associated_data_len_in_bytes,
487 : : QAT_CIPHER_AEAD_AAD_SIZE_LE_BITPOS,
488 : : QAT_CIPHER_AEAD_AAD_SIZE_MASK);
489 : :
490 : 0 : QAT_FIELD_SET(val32,
491 : : csr.crc_reflect_out,
492 : : QAT_CIPHER_UCS_REFLECT_OUT_LE_BITPOS,
493 : : QAT_CIPHER_UCS_REFLECT_OUT_MASK);
494 : :
495 : 0 : QAT_FIELD_SET(val32,
496 : : csr.crc_reflect_in,
497 : : QAT_CIPHER_UCS_REFLECT_IN_LE_BITPOS,
498 : : QAT_CIPHER_UCS_REFLECT_IN_MASK);
499 : :
500 : 0 : QAT_FIELD_SET(val32,
501 : : csr.crc_encoding,
502 : : QAT_CIPHER_UCS_CRC_ENCODING_LE_BITPOS,
503 : : QAT_CIPHER_UCS_CRC_ENCODING_MASK);
504 : :
505 [ # # ]: 0 : return rte_bswap32(val32);
506 : : }
507 : :
508 : : /* ========================================================================= */
509 : : /* COMPRESSION SLICE */
510 : : /* ========================================================================= */
511 : :
512 : : enum icp_qat_hw_compression_direction {
513 : : ICP_QAT_HW_COMPRESSION_DIR_COMPRESS = 0,
514 : : ICP_QAT_HW_COMPRESSION_DIR_DECOMPRESS = 1,
515 : : ICP_QAT_HW_COMPRESSION_DIR_DELIMITER = 2
516 : : };
517 : :
518 : : enum icp_qat_hw_compression_delayed_match {
519 : : ICP_QAT_HW_COMPRESSION_DELAYED_MATCH_DISABLED = 0,
520 : : ICP_QAT_HW_COMPRESSION_DELAYED_MATCH_ENABLED = 1,
521 : : ICP_QAT_HW_COMPRESSION_DELAYED_MATCH_DELIMITER = 2
522 : : };
523 : :
524 : : enum icp_qat_hw_compression_algo {
525 : : ICP_QAT_HW_COMPRESSION_ALGO_DEFLATE = 0,
526 : : ICP_QAT_HW_COMPRESSION_ALGO_LZS = 1,
527 : : ICP_QAT_HW_COMPRESSION_ALGO_DELIMITER = 2
528 : : };
529 : :
530 : :
531 : : enum icp_qat_hw_compression_depth {
532 : : ICP_QAT_HW_COMPRESSION_DEPTH_1 = 0,
533 : : ICP_QAT_HW_COMPRESSION_DEPTH_4 = 1,
534 : : ICP_QAT_HW_COMPRESSION_DEPTH_8 = 2,
535 : : ICP_QAT_HW_COMPRESSION_DEPTH_16 = 3,
536 : : ICP_QAT_HW_COMPRESSION_DEPTH_DELIMITER = 4
537 : : };
538 : :
539 : : enum icp_qat_hw_compression_file_type {
540 : : ICP_QAT_HW_COMPRESSION_FILE_TYPE_0 = 0,
541 : : ICP_QAT_HW_COMPRESSION_FILE_TYPE_1 = 1,
542 : : ICP_QAT_HW_COMPRESSION_FILE_TYPE_2 = 2,
543 : : ICP_QAT_HW_COMPRESSION_FILE_TYPE_3 = 3,
544 : : ICP_QAT_HW_COMPRESSION_FILE_TYPE_4 = 4,
545 : : ICP_QAT_HW_COMPRESSION_FILE_TYPE_DELIMITER = 5
546 : : };
547 : :
548 : : struct icp_qat_hw_compression_config {
549 : : uint32_t val;
550 : : uint32_t reserved;
551 : : };
552 : :
553 : : #define QAT_COMPRESSION_DIR_BITPOS 4
554 : : #define QAT_COMPRESSION_DIR_MASK 0x7
555 : : #define QAT_COMPRESSION_DELAYED_MATCH_BITPOS 16
556 : : #define QAT_COMPRESSION_DELAYED_MATCH_MASK 0x1
557 : : #define QAT_COMPRESSION_ALGO_BITPOS 31
558 : : #define QAT_COMPRESSION_ALGO_MASK 0x1
559 : : #define QAT_COMPRESSION_DEPTH_BITPOS 28
560 : : #define QAT_COMPRESSION_DEPTH_MASK 0x7
561 : : #define QAT_COMPRESSION_FILE_TYPE_BITPOS 24
562 : : #define QAT_COMPRESSION_FILE_TYPE_MASK 0xF
563 : :
564 : : #define ICP_QAT_HW_COMPRESSION_CONFIG_BUILD( \
565 : : dir, delayed, algo, depth, filetype) \
566 : : ((((dir) & QAT_COMPRESSION_DIR_MASK) << QAT_COMPRESSION_DIR_BITPOS) | \
567 : : (((delayed) & QAT_COMPRESSION_DELAYED_MATCH_MASK) \
568 : : << QAT_COMPRESSION_DELAYED_MATCH_BITPOS) | \
569 : : (((algo) & QAT_COMPRESSION_ALGO_MASK) \
570 : : << QAT_COMPRESSION_ALGO_BITPOS) | \
571 : : (((depth) & QAT_COMPRESSION_DEPTH_MASK) \
572 : : << QAT_COMPRESSION_DEPTH_BITPOS) | \
573 : : (((filetype) & QAT_COMPRESSION_FILE_TYPE_MASK) \
574 : : << QAT_COMPRESSION_FILE_TYPE_BITPOS))
575 : :
576 : : #endif
|