xref: /dpdk/drivers/crypto/bcmfs/bcmfs_sym_req.h (revision cd5db556ace9f01521a039a75f0b1a35cfcd6bcb)
1751dca90SVikas Gupta /* SPDX-License-Identifier: BSD-3-Clause
2751dca90SVikas Gupta  * Copyright(c) 2020 Broadcom
3751dca90SVikas Gupta  * All rights reserved.
4751dca90SVikas Gupta  */
5751dca90SVikas Gupta 
6751dca90SVikas Gupta #ifndef _BCMFS_SYM_REQ_H_
7751dca90SVikas Gupta #define _BCMFS_SYM_REQ_H_
8751dca90SVikas Gupta 
9492a19a0SVikas Gupta #include <rte_cryptodev.h>
10492a19a0SVikas Gupta 
11751dca90SVikas Gupta #include "bcmfs_dev_msg.h"
12492a19a0SVikas Gupta #include "bcmfs_sym_defs.h"
13492a19a0SVikas Gupta 
14*cd5db556SVikas Gupta /** Max variable length. Since we adjust AAD
15*cd5db556SVikas Gupta  * in same BD if it is less than BCMFS_AAD_THRESH_LEN
16*cd5db556SVikas Gupta  * so we add it here.
17*cd5db556SVikas Gupta  */
18*cd5db556SVikas Gupta #define BCMFS_MAX_OMDMD_LEN	((2 * (BCMFS_MAX_KEY_SIZE)) +	\
19*cd5db556SVikas Gupta 				 (2 * (BCMFS_MAX_IV_SIZE)) +	\
20*cd5db556SVikas Gupta 				 (BCMFS_AAD_THRESH_LEN))
21*cd5db556SVikas Gupta 
22492a19a0SVikas Gupta /* Fixed SPU2 Metadata */
23492a19a0SVikas Gupta struct spu2_fmd {
24492a19a0SVikas Gupta 	uint64_t ctrl0;
25492a19a0SVikas Gupta 	uint64_t ctrl1;
26492a19a0SVikas Gupta 	uint64_t ctrl2;
27492a19a0SVikas Gupta 	uint64_t ctrl3;
28492a19a0SVikas Gupta };
29751dca90SVikas Gupta 
30751dca90SVikas Gupta /*
31751dca90SVikas Gupta  * This structure hold the supportive data required to process a
32751dca90SVikas Gupta  * rte_crypto_op
33751dca90SVikas Gupta  */
34751dca90SVikas Gupta struct bcmfs_sym_request {
35*cd5db556SVikas Gupta 	/*
36*cd5db556SVikas Gupta 	 * Only single BD for metadata so
37*cd5db556SVikas Gupta 	 * FMD + OMD must be in continuation
38*cd5db556SVikas Gupta 	 */
39492a19a0SVikas Gupta 	/* spu2 engine related data */
40492a19a0SVikas Gupta 	struct spu2_fmd fmd;
41*cd5db556SVikas Gupta 	/* variable metadata in continuation with fmd */
42*cd5db556SVikas Gupta 	uint8_t omd[BCMFS_MAX_OMDMD_LEN];
43492a19a0SVikas Gupta 	/* digest data output from crypto h/w */
44492a19a0SVikas Gupta 	uint8_t digest[BCMFS_MAX_DIGEST_SIZE];
45492a19a0SVikas Gupta 	/* 2-Bytes response from crypto h/w */
46492a19a0SVikas Gupta 	uint8_t resp[2];
47492a19a0SVikas Gupta 	/*
48492a19a0SVikas Gupta 	 * Below are all iovas for above members
49492a19a0SVikas Gupta 	 * from top
50492a19a0SVikas Gupta 	 */
51492a19a0SVikas Gupta 	/* iova for fmd */
52492a19a0SVikas Gupta 	rte_iova_t fptr;
53*cd5db556SVikas Gupta 	/* iova for omd */
54*cd5db556SVikas Gupta 	rte_iova_t optr;
55492a19a0SVikas Gupta 	/* iova for digest */
56492a19a0SVikas Gupta 	rte_iova_t dptr;
57492a19a0SVikas Gupta 	/* iova for response */
58492a19a0SVikas Gupta 	rte_iova_t rptr;
59751dca90SVikas Gupta 	/* bcmfs qp message for h/w queues to process */
60751dca90SVikas Gupta 	struct bcmfs_qp_message msgs;
61751dca90SVikas Gupta 	/* crypto op */
62751dca90SVikas Gupta 	struct rte_crypto_op *op;
63751dca90SVikas Gupta };
64751dca90SVikas Gupta 
65751dca90SVikas Gupta #endif /* _BCMFS_SYM_REQ_H_ */
66