1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017-2019 Intel Corporation
3  */
4 
5 #ifndef _QAT_SYM_CAPABILITIES_H_
6 #define _QAT_SYM_CAPABILITIES_H_
7 
8 #define QAT_BASE_GEN1_SYM_CAPABILITIES					\
9 	{	/* SHA1 */						\
10 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
11 		{.sym = {						\
12 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
13 			{.auth = {					\
14 				.algo = RTE_CRYPTO_AUTH_SHA1,		\
15 				.block_size = 64,			\
16 				.key_size = {				\
17 					.min = 0,			\
18 					.max = 0,			\
19 					.increment = 0			\
20 				},					\
21 				.digest_size = {			\
22 					.min = 1,			\
23 					.max = 20,			\
24 					.increment = 1			\
25 				},					\
26 				.iv_size = { 0 }			\
27 			}, }						\
28 		}, }							\
29 	},								\
30 	{	/* SHA224 */						\
31 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
32 		{.sym = {						\
33 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
34 			{.auth = {					\
35 				.algo = RTE_CRYPTO_AUTH_SHA224,		\
36 				.block_size = 64,			\
37 				.key_size = {				\
38 					.min = 0,			\
39 					.max = 0,			\
40 					.increment = 0			\
41 				},					\
42 				.digest_size = {			\
43 					.min = 1,			\
44 					.max = 28,			\
45 					.increment = 1			\
46 				},					\
47 				.iv_size = { 0 }			\
48 			}, }						\
49 		}, }							\
50 	},								\
51 	{	/* SHA256 */						\
52 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
53 		{.sym = {						\
54 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
55 			{.auth = {					\
56 				.algo = RTE_CRYPTO_AUTH_SHA256,		\
57 				.block_size = 64,			\
58 				.key_size = {				\
59 					.min = 0,			\
60 					.max = 0,			\
61 					.increment = 0			\
62 				},					\
63 				.digest_size = {			\
64 					.min = 1,			\
65 					.max = 32,			\
66 					.increment = 1			\
67 				},					\
68 				.iv_size = { 0 }			\
69 			}, }						\
70 		}, }							\
71 	},								\
72 	{	/* SHA384 */						\
73 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
74 		{.sym = {						\
75 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
76 			{.auth = {					\
77 				.algo = RTE_CRYPTO_AUTH_SHA384,		\
78 				.block_size = 128,			\
79 				.key_size = {				\
80 					.min = 0,			\
81 					.max = 0,			\
82 					.increment = 0			\
83 				},					\
84 				.digest_size = {			\
85 					.min = 1,			\
86 					.max = 48,			\
87 					.increment = 1			\
88 				},					\
89 				.iv_size = { 0 }			\
90 			}, }						\
91 		}, }							\
92 	},								\
93 	{	/* SHA512 */						\
94 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
95 		{.sym = {						\
96 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
97 			{.auth = {					\
98 				.algo = RTE_CRYPTO_AUTH_SHA512,		\
99 				.block_size = 128,			\
100 				.key_size = {				\
101 					.min = 0,			\
102 					.max = 0,			\
103 					.increment = 0			\
104 				},					\
105 				.digest_size = {			\
106 					.min = 1,			\
107 					.max = 64,			\
108 					.increment = 1			\
109 				},					\
110 				.iv_size = { 0 }			\
111 			}, }						\
112 		}, }							\
113 	},								\
114 	{	/* SHA1 HMAC */						\
115 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
116 		{.sym = {						\
117 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
118 			{.auth = {					\
119 				.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,	\
120 				.block_size = 64,			\
121 				.key_size = {				\
122 					.min = 1,			\
123 					.max = 64,			\
124 					.increment = 1			\
125 				},					\
126 				.digest_size = {			\
127 					.min = 1,			\
128 					.max = 20,			\
129 					.increment = 1			\
130 				},					\
131 				.iv_size = { 0 }			\
132 			}, }						\
133 		}, }							\
134 	},								\
135 	{	/* SHA224 HMAC */					\
136 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
137 		{.sym = {						\
138 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
139 			{.auth = {					\
140 				.algo = RTE_CRYPTO_AUTH_SHA224_HMAC,	\
141 				.block_size = 64,			\
142 				.key_size = {				\
143 					.min = 1,			\
144 					.max = 64,			\
145 					.increment = 1			\
146 				},					\
147 				.digest_size = {			\
148 					.min = 1,			\
149 					.max = 28,			\
150 					.increment = 1			\
151 				},					\
152 				.iv_size = { 0 }			\
153 			}, }						\
154 		}, }							\
155 	},								\
156 	{	/* SHA256 HMAC */					\
157 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
158 		{.sym = {						\
159 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
160 			{.auth = {					\
161 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,	\
162 				.block_size = 64,			\
163 				.key_size = {				\
164 					.min = 1,			\
165 					.max = 64,			\
166 					.increment = 1			\
167 				},					\
168 				.digest_size = {			\
169 					.min = 1,			\
170 					.max = 32,			\
171 					.increment = 1			\
172 				},					\
173 				.iv_size = { 0 }			\
174 			}, }						\
175 		}, }							\
176 	},								\
177 	{	/* SHA384 HMAC */					\
178 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
179 		{.sym = {						\
180 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
181 			{.auth = {					\
182 				.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,	\
183 				.block_size = 128,			\
184 				.key_size = {				\
185 					.min = 1,			\
186 					.max = 128,			\
187 					.increment = 1			\
188 				},					\
189 				.digest_size = {			\
190 					.min = 1,			\
191 					.max = 48,			\
192 					.increment = 1			\
193 				},					\
194 				.iv_size = { 0 }			\
195 			}, }						\
196 		}, }							\
197 	},								\
198 	{	/* SHA512 HMAC */					\
199 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
200 		{.sym = {						\
201 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
202 			{.auth = {					\
203 				.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,	\
204 				.block_size = 128,			\
205 				.key_size = {				\
206 					.min = 1,			\
207 					.max = 128,			\
208 					.increment = 1			\
209 				},					\
210 				.digest_size = {			\
211 					.min = 1,			\
212 					.max = 64,			\
213 					.increment = 1			\
214 				},					\
215 				.iv_size = { 0 }			\
216 			}, }						\
217 		}, }							\
218 	},								\
219 	{	/* MD5 HMAC */						\
220 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
221 		{.sym = {						\
222 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
223 			{.auth = {					\
224 				.algo = RTE_CRYPTO_AUTH_MD5_HMAC,	\
225 				.block_size = 64,			\
226 				.key_size = {				\
227 					.min = 1,			\
228 					.max = 64,			\
229 					.increment = 1			\
230 				},					\
231 				.digest_size = {			\
232 					.min = 1,			\
233 					.max = 16,			\
234 					.increment = 1			\
235 				},					\
236 				.iv_size = { 0 }			\
237 			}, }						\
238 		}, }							\
239 	},								\
240 	{	/* AES XCBC MAC */					\
241 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
242 		{.sym = {						\
243 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
244 			{.auth = {					\
245 				.algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,	\
246 				.block_size = 16,			\
247 				.key_size = {				\
248 					.min = 16,			\
249 					.max = 16,			\
250 					.increment = 0			\
251 				},					\
252 				.digest_size = {			\
253 					.min = 12,			\
254 					.max = 12,			\
255 					.increment = 0			\
256 				},					\
257 				.aad_size = { 0 },			\
258 				.iv_size = { 0 }			\
259 			}, }						\
260 		}, }							\
261 	},								\
262 	{	/* AES CMAC */						\
263 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
264 		{.sym = {						\
265 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
266 			{.auth = {					\
267 				.algo = RTE_CRYPTO_AUTH_AES_CMAC,	\
268 				.block_size = 16,			\
269 				.key_size = {				\
270 					.min = 16,			\
271 					.max = 16,			\
272 					.increment = 0			\
273 				},					\
274 				.digest_size = {			\
275 					.min = 4,			\
276 					.max = 16,			\
277 					.increment = 4			\
278 				}					\
279 			}, }						\
280 		}, }							\
281 	},								\
282 	{	/* AES CCM */						\
283 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
284 		{.sym = {						\
285 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,	\
286 			{.aead = {					\
287 				.algo = RTE_CRYPTO_AEAD_AES_CCM,	\
288 				.block_size = 16,			\
289 				.key_size = {				\
290 					.min = 16,			\
291 					.max = 16,			\
292 					.increment = 0			\
293 				},					\
294 				.digest_size = {			\
295 					.min = 4,			\
296 					.max = 16,			\
297 					.increment = 2			\
298 				},					\
299 				.aad_size = {				\
300 					.min = 0,			\
301 					.max = 224,			\
302 					.increment = 1			\
303 				},					\
304 				.iv_size = {				\
305 					.min = 7,			\
306 					.max = 13,			\
307 					.increment = 1			\
308 				},					\
309 			}, }						\
310 		}, }							\
311 	},								\
312 	{	/* AES GCM */						\
313 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
314 		{.sym = {						\
315 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,	\
316 			{.aead = {					\
317 				.algo = RTE_CRYPTO_AEAD_AES_GCM,	\
318 				.block_size = 16,			\
319 				.key_size = {				\
320 					.min = 16,			\
321 					.max = 32,			\
322 					.increment = 8			\
323 				},					\
324 				.digest_size = {			\
325 					.min = 8,			\
326 					.max = 16,			\
327 					.increment = 4			\
328 				},					\
329 				.aad_size = {				\
330 					.min = 0,			\
331 					.max = 240,			\
332 					.increment = 1			\
333 				},					\
334 				.iv_size = {				\
335 					.min = 0,			\
336 					.max = 12,			\
337 					.increment = 12			\
338 				},					\
339 			}, }						\
340 		}, }							\
341 	},								\
342 	{	/* AES GMAC (AUTH) */					\
343 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
344 		{.sym = {						\
345 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
346 			{.auth = {					\
347 				.algo = RTE_CRYPTO_AUTH_AES_GMAC,	\
348 				.block_size = 16,			\
349 				.key_size = {				\
350 					.min = 16,			\
351 					.max = 32,			\
352 					.increment = 8			\
353 				},					\
354 				.digest_size = {			\
355 					.min = 8,			\
356 					.max = 16,			\
357 					.increment = 4			\
358 				},					\
359 				.iv_size = {				\
360 					.min = 0,			\
361 					.max = 12,			\
362 					.increment = 12			\
363 				}					\
364 			}, }						\
365 		}, }							\
366 	},								\
367 	{	/* SNOW 3G (UIA2) */					\
368 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
369 		{.sym = {						\
370 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
371 			{.auth = {					\
372 				.algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2,	\
373 				.block_size = 16,			\
374 				.key_size = {				\
375 					.min = 16,			\
376 					.max = 16,			\
377 					.increment = 0			\
378 				},					\
379 				.digest_size = {			\
380 					.min = 4,			\
381 					.max = 4,			\
382 					.increment = 0			\
383 				},					\
384 				.iv_size = {				\
385 					.min = 16,			\
386 					.max = 16,			\
387 					.increment = 0			\
388 				}					\
389 			}, }						\
390 		}, }							\
391 	},								\
392 	{	/* AES CBC */						\
393 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
394 		{.sym = {						\
395 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
396 			{.cipher = {					\
397 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,	\
398 				.block_size = 16,			\
399 				.key_size = {				\
400 					.min = 16,			\
401 					.max = 32,			\
402 					.increment = 8			\
403 				},					\
404 				.iv_size = {				\
405 					.min = 16,			\
406 					.max = 16,			\
407 					.increment = 0			\
408 				}					\
409 			}, }						\
410 		}, }							\
411 	},								\
412 	{	/* AES XTS */					\
413 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
414 		{.sym = {						\
415 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
416 			{.cipher = {					\
417 				.algo = RTE_CRYPTO_CIPHER_AES_XTS,	\
418 				.block_size = 16,			\
419 				.key_size = {				\
420 					.min = 32,			\
421 					.max = 64,			\
422 					.increment = 32			\
423 				},					\
424 				.iv_size = {				\
425 					.min = 16,			\
426 					.max = 16,			\
427 					.increment = 0			\
428 				}					\
429 			}, }						\
430 		}, }							\
431 	},								\
432 	{	/* AES DOCSIS BPI */					\
433 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
434 		{.sym = {						\
435 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
436 			{.cipher = {					\
437 				.algo = RTE_CRYPTO_CIPHER_AES_DOCSISBPI,\
438 				.block_size = 16,			\
439 				.key_size = {				\
440 					.min = 16,			\
441 					.max = 32,			\
442 					.increment = 16			\
443 				},					\
444 				.iv_size = {				\
445 					.min = 16,			\
446 					.max = 16,			\
447 					.increment = 0			\
448 				}					\
449 			}, }						\
450 		}, }							\
451 	},								\
452 	{	/* SNOW 3G (UEA2) */					\
453 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
454 		{.sym = {						\
455 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
456 			{.cipher = {					\
457 				.algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,	\
458 				.block_size = 16,			\
459 				.key_size = {				\
460 					.min = 16,			\
461 					.max = 16,			\
462 					.increment = 0			\
463 				},					\
464 				.iv_size = {				\
465 					.min = 16,			\
466 					.max = 16,			\
467 					.increment = 0			\
468 				}					\
469 			}, }						\
470 		}, }							\
471 	},								\
472 	{	/* AES CTR */						\
473 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
474 		{.sym = {						\
475 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
476 			{.cipher = {					\
477 				.algo = RTE_CRYPTO_CIPHER_AES_CTR,	\
478 				.block_size = 16,			\
479 				.key_size = {				\
480 					.min = 16,			\
481 					.max = 32,			\
482 					.increment = 8			\
483 				},					\
484 				.iv_size = {				\
485 					.min = 16,			\
486 					.max = 16,			\
487 					.increment = 0			\
488 				}					\
489 			}, }						\
490 		}, }							\
491 	},								\
492 	{	/* NULL (AUTH) */					\
493 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
494 		{.sym = {						\
495 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
496 			{.auth = {					\
497 				.algo = RTE_CRYPTO_AUTH_NULL,		\
498 				.block_size = 1,			\
499 				.key_size = {				\
500 					.min = 0,			\
501 					.max = 0,			\
502 					.increment = 0			\
503 				},					\
504 				.digest_size = {			\
505 					.min = 0,			\
506 					.max = 0,			\
507 					.increment = 0			\
508 				},					\
509 				.iv_size = { 0 }			\
510 			}, },						\
511 		}, },							\
512 	},								\
513 	{	/* NULL (CIPHER) */					\
514 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
515 		{.sym = {						\
516 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
517 			{.cipher = {					\
518 				.algo = RTE_CRYPTO_CIPHER_NULL,		\
519 				.block_size = 1,			\
520 				.key_size = {				\
521 					.min = 0,			\
522 					.max = 0,			\
523 					.increment = 0			\
524 				},					\
525 				.iv_size = {				\
526 					.min = 0,			\
527 					.max = 0,			\
528 					.increment = 0			\
529 				}					\
530 			}, },						\
531 		}, }							\
532 	},								\
533 	{       /* KASUMI (F8) */					\
534 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
535 		{.sym = {						\
536 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
537 			{.cipher = {					\
538 				.algo = RTE_CRYPTO_CIPHER_KASUMI_F8,	\
539 				.block_size = 8,			\
540 				.key_size = {				\
541 					.min = 16,			\
542 					.max = 16,			\
543 					.increment = 0			\
544 				},					\
545 				.iv_size = {				\
546 					.min = 8,			\
547 					.max = 8,			\
548 					.increment = 0			\
549 				}					\
550 			}, }						\
551 		}, }							\
552 	},								\
553 	{       /* KASUMI (F9) */					\
554 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
555 		{.sym = {						\
556 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
557 			{.auth = {					\
558 				.algo = RTE_CRYPTO_AUTH_KASUMI_F9,	\
559 				.block_size = 8,			\
560 				.key_size = {				\
561 					.min = 16,			\
562 					.max = 16,			\
563 					.increment = 0			\
564 				},					\
565 				.digest_size = {			\
566 					.min = 4,			\
567 					.max = 4,			\
568 					.increment = 0			\
569 				},					\
570 				.iv_size = { 0 }			\
571 			}, }						\
572 		}, }							\
573 	},								\
574 	{	/* 3DES CBC */						\
575 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
576 		{.sym = {						\
577 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
578 			{.cipher = {					\
579 				.algo = RTE_CRYPTO_CIPHER_3DES_CBC,	\
580 				.block_size = 8,			\
581 				.key_size = {				\
582 					.min = 8,			\
583 					.max = 24,			\
584 					.increment = 8			\
585 				},					\
586 				.iv_size = {				\
587 					.min = 8,			\
588 					.max = 8,			\
589 					.increment = 0			\
590 				}					\
591 			}, }						\
592 		}, }							\
593 	},								\
594 	{	/* 3DES CTR */						\
595 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
596 		{.sym = {						\
597 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
598 			{.cipher = {					\
599 				.algo = RTE_CRYPTO_CIPHER_3DES_CTR,	\
600 				.block_size = 8,			\
601 				.key_size = {				\
602 					.min = 16,			\
603 					.max = 24,			\
604 					.increment = 8			\
605 				},					\
606 				.iv_size = {				\
607 					.min = 8,			\
608 					.max = 8,			\
609 					.increment = 0			\
610 				}					\
611 			}, }						\
612 		}, }							\
613 	},								\
614 	{	/* DES CBC */						\
615 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
616 		{.sym = {						\
617 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
618 			{.cipher = {					\
619 				.algo = RTE_CRYPTO_CIPHER_DES_CBC,	\
620 				.block_size = 8,			\
621 				.key_size = {				\
622 					.min = 8,			\
623 					.max = 8,			\
624 					.increment = 0			\
625 				},					\
626 				.iv_size = {				\
627 					.min = 8,			\
628 					.max = 8,			\
629 					.increment = 0			\
630 				}					\
631 			}, }						\
632 		}, }							\
633 	},								\
634 	{	/* DES DOCSISBPI */					\
635 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
636 		{.sym = {						\
637 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
638 			{.cipher = {					\
639 				.algo = RTE_CRYPTO_CIPHER_DES_DOCSISBPI,\
640 				.block_size = 8,			\
641 				.key_size = {				\
642 					.min = 8,			\
643 					.max = 8,			\
644 					.increment = 0			\
645 				},					\
646 				.iv_size = {				\
647 					.min = 8,			\
648 					.max = 8,			\
649 					.increment = 0			\
650 				}					\
651 			}, }						\
652 		}, }							\
653 	}
654 
655 #define QAT_EXTRA_GEN2_SYM_CAPABILITIES					\
656 	{	/* ZUC (EEA3) */					\
657 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
658 		{.sym = {						\
659 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
660 			{.cipher = {					\
661 				.algo = RTE_CRYPTO_CIPHER_ZUC_EEA3,	\
662 				.block_size = 16,			\
663 				.key_size = {				\
664 					.min = 16,			\
665 					.max = 16,			\
666 					.increment = 0			\
667 				},					\
668 				.iv_size = {				\
669 					.min = 16,			\
670 					.max = 16,			\
671 					.increment = 0			\
672 				}					\
673 			}, }						\
674 		}, }							\
675 	},								\
676 	{	/* ZUC (EIA3) */					\
677 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
678 		{.sym = {						\
679 			.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,	\
680 			{.auth = {					\
681 				.algo = RTE_CRYPTO_AUTH_ZUC_EIA3,	\
682 				.block_size = 16,			\
683 				.key_size = {				\
684 					.min = 16,			\
685 					.max = 16,			\
686 					.increment = 0			\
687 				},					\
688 				.digest_size = {			\
689 					.min = 4,			\
690 					.max = 4,			\
691 					.increment = 0			\
692 				},					\
693 				.iv_size = {				\
694 					.min = 16,			\
695 					.max = 16,			\
696 					.increment = 0			\
697 				}					\
698 			}, }						\
699 		}, }							\
700 	}
701 
702 #define QAT_EXTRA_GEN3_SYM_CAPABILITIES					\
703 	{	/* Chacha20-Poly1305 */					\
704 	.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
705 		{.sym = {						\
706 			.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,	\
707 			{.aead = {					\
708 				.algo = RTE_CRYPTO_AEAD_CHACHA20_POLY1305, \
709 				.block_size = 64,			\
710 				.key_size = {				\
711 					.min = 32,			\
712 					.max = 32,			\
713 					.increment = 0			\
714 				},					\
715 				.digest_size = {			\
716 					.min = 16,			\
717 					.max = 16,			\
718 					.increment = 0			\
719 				},					\
720 				.aad_size = {				\
721 					.min = 0,			\
722 					.max = 240,			\
723 					.increment = 1			\
724 				},					\
725 				.iv_size = {				\
726 					.min = 12,			\
727 					.max = 12,			\
728 					.increment = 0			\
729 				},					\
730 			}, }						\
731 		}, }							\
732 	}
733 
734 #ifdef RTE_LIB_SECURITY
735 #define QAT_SECURITY_SYM_CAPABILITIES					\
736 	{	/* AES DOCSIS BPI */					\
737 		.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,			\
738 		{.sym = {						\
739 			.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,	\
740 			{.cipher = {					\
741 				.algo = RTE_CRYPTO_CIPHER_AES_DOCSISBPI,\
742 				.block_size = 16,			\
743 				.key_size = {				\
744 					.min = 16,			\
745 					.max = 32,			\
746 					.increment = 16			\
747 				},					\
748 				.iv_size = {				\
749 					.min = 16,			\
750 					.max = 16,			\
751 					.increment = 0			\
752 				}					\
753 			}, }						\
754 		}, }							\
755 	}
756 
757 #define QAT_SECURITY_CAPABILITIES(sym)					\
758 	[0] = {	/* DOCSIS Uplink */					\
759 		.action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,	\
760 		.protocol = RTE_SECURITY_PROTOCOL_DOCSIS,		\
761 		.docsis = {						\
762 			.direction = RTE_SECURITY_DOCSIS_UPLINK		\
763 		},							\
764 		.crypto_capabilities = (sym)				\
765 	},								\
766 	[1] = {	/* DOCSIS Downlink */					\
767 		.action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,	\
768 		.protocol = RTE_SECURITY_PROTOCOL_DOCSIS,		\
769 		.docsis = {						\
770 			.direction = RTE_SECURITY_DOCSIS_DOWNLINK	\
771 		},							\
772 		.crypto_capabilities = (sym)				\
773 	}
774 #endif
775 
776 #endif /* _QAT_SYM_CAPABILITIES_H_ */
777