xref: /dpdk/drivers/common/qat/qat_adf/icp_qat_fw_la.h (revision e77506397fc8005c5129e22e9e2d15d5876790fd)
198c4a35cSTomasz Jozwiak /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
216b67601SAdam Dybkowski  * Copyright(c) 2015-2019 Intel Corporation
398c4a35cSTomasz Jozwiak  */
498c4a35cSTomasz Jozwiak #ifndef _ICP_QAT_FW_LA_H_
598c4a35cSTomasz Jozwiak #define _ICP_QAT_FW_LA_H_
698c4a35cSTomasz Jozwiak #include "icp_qat_fw.h"
798c4a35cSTomasz Jozwiak 
898c4a35cSTomasz Jozwiak enum icp_qat_fw_la_cmd_id {
998c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_CIPHER = 0,
1098c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_AUTH = 1,
1198c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_CIPHER_HASH = 2,
1298c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_HASH_CIPHER = 3,
1398c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_TRNG_GET_RANDOM = 4,
1498c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_TRNG_TEST = 5,
1598c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_SSL3_KEY_DERIVE = 6,
1698c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_TLS_V1_1_KEY_DERIVE = 7,
1798c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_TLS_V1_2_KEY_DERIVE = 8,
1898c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_MGF1 = 9,
1998c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_AUTH_PRE_COMP = 10,
2098c4a35cSTomasz Jozwiak 	ICP_QAT_FW_LA_CMD_CIPHER_PRE_COMP = 11,
21840aabfaSKevin O'Sullivan 	ICP_QAT_FW_LA_CMD_CIPHER_CRC = 17,
22840aabfaSKevin O'Sullivan 	ICP_QAT_FW_LA_CMD_DELIMITER = 18
2398c4a35cSTomasz Jozwiak };
2498c4a35cSTomasz Jozwiak 
25e9271821SNishikant Nayak /* In GEN_LCE Command ID 4 corresponds to AEAD */
26e9271821SNishikant Nayak #define ICP_QAT_FW_LA_CMD_AEAD 4
27e9271821SNishikant Nayak 
2898c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_ICV_VER_STATUS_PASS ICP_QAT_FW_COMN_STATUS_FLAG_OK
2998c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_ICV_VER_STATUS_FAIL ICP_QAT_FW_COMN_STATUS_FLAG_ERROR
3098c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_TRNG_STATUS_PASS ICP_QAT_FW_COMN_STATUS_FLAG_OK
3198c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_TRNG_STATUS_FAIL ICP_QAT_FW_COMN_STATUS_FLAG_ERROR
3298c4a35cSTomasz Jozwiak 
33e9271821SNishikant Nayak /* GEN_LCE Hash, HMAC and GCM Verification Status */
34e9271821SNishikant Nayak #define ICP_QAT_FW_LA_VER_STATUS_FAIL ICP_QAT_FW_COMN_GEN_LCE_STATUS_FLAG_ERROR
35e9271821SNishikant Nayak 
36e9271821SNishikant Nayak 
3798c4a35cSTomasz Jozwiak struct icp_qat_fw_la_bulk_req {
3898c4a35cSTomasz Jozwiak 	struct icp_qat_fw_comn_req_hdr comn_hdr;
39e9271821SNishikant Nayak 	union {
4098c4a35cSTomasz Jozwiak 		struct icp_qat_fw_comn_req_hdr_cd_pars cd_pars;
41e9271821SNishikant Nayak 		struct lce_key_buff_desc key_buff;
42e9271821SNishikant Nayak 	};
4398c4a35cSTomasz Jozwiak 	struct icp_qat_fw_comn_req_mid comn_mid;
4498c4a35cSTomasz Jozwiak 	struct icp_qat_fw_comn_req_rqpars serv_specif_rqpars;
4598c4a35cSTomasz Jozwiak 	struct icp_qat_fw_comn_req_cd_ctrl cd_ctrl;
4698c4a35cSTomasz Jozwiak };
4798c4a35cSTomasz Jozwiak 
4816b67601SAdam Dybkowski #define QAT_FW_LA_SINGLE_PASS_PROTO_FLAG_BITPOS 13
4916b67601SAdam Dybkowski #define ICP_QAT_FW_LA_SINGLE_PASS_PROTO 1
5016b67601SAdam Dybkowski #define QAT_FW_LA_SINGLE_PASS_PROTO_FLAG_MASK 0x1
5198c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_GCM_IV_LEN_12_OCTETS 1
5298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_GCM_IV_LEN_NOT_12_OCTETS 0
5398c4a35cSTomasz Jozwiak #define QAT_FW_LA_ZUC_3G_PROTO_FLAG_BITPOS 12
5498c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_ZUC_3G_PROTO 1
5598c4a35cSTomasz Jozwiak #define QAT_FW_LA_ZUC_3G_PROTO_FLAG_MASK 0x1
5698c4a35cSTomasz Jozwiak #define QAT_LA_GCM_IV_LEN_FLAG_BITPOS 11
5798c4a35cSTomasz Jozwiak #define QAT_LA_GCM_IV_LEN_FLAG_MASK 0x1
5898c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_DIGEST_IN_BUFFER 1
5998c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_NO_DIGEST_IN_BUFFER 0
6098c4a35cSTomasz Jozwiak #define QAT_LA_DIGEST_IN_BUFFER_BITPOS	10
6198c4a35cSTomasz Jozwiak #define QAT_LA_DIGEST_IN_BUFFER_MASK 0x1
6298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_SNOW_3G_PROTO 4
6398c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_GCM_PROTO	2
6498c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_CCM_PROTO	1
6598c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_NO_PROTO 0
6698c4a35cSTomasz Jozwiak #define QAT_LA_PROTO_BITPOS 7
6798c4a35cSTomasz Jozwiak #define QAT_LA_PROTO_MASK 0x7
6898c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_CMP_AUTH_RES 1
6998c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_NO_CMP_AUTH_RES 0
7098c4a35cSTomasz Jozwiak #define QAT_LA_CMP_AUTH_RES_BITPOS 6
7198c4a35cSTomasz Jozwiak #define QAT_LA_CMP_AUTH_RES_MASK 0x1
7298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_RET_AUTH_RES 1
7398c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_NO_RET_AUTH_RES 0
7498c4a35cSTomasz Jozwiak #define QAT_LA_RET_AUTH_RES_BITPOS 5
7598c4a35cSTomasz Jozwiak #define QAT_LA_RET_AUTH_RES_MASK 0x1
7698c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_UPDATE_STATE 1
7798c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_NO_UPDATE_STATE 0
7898c4a35cSTomasz Jozwiak #define QAT_LA_UPDATE_STATE_BITPOS 4
7998c4a35cSTomasz Jozwiak #define QAT_LA_UPDATE_STATE_MASK 0x1
8098c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPH_AUTH_CFG_OFFSET_IN_CD_SETUP 0
8198c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPH_AUTH_CFG_OFFSET_IN_SHRAM_CP 1
8298c4a35cSTomasz Jozwiak #define QAT_LA_CIPH_AUTH_CFG_OFFSET_BITPOS 3
8398c4a35cSTomasz Jozwiak #define QAT_LA_CIPH_AUTH_CFG_OFFSET_MASK 0x1
8498c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPH_IV_64BIT_PTR 0
8598c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPH_IV_16BYTE_DATA 1
8698c4a35cSTomasz Jozwiak #define QAT_LA_CIPH_IV_FLD_BITPOS 2
8798c4a35cSTomasz Jozwiak #define QAT_LA_CIPH_IV_FLD_MASK   0x1
8898c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_PARTIAL_NONE 0
8998c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_PARTIAL_START 1
9098c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_PARTIAL_MID 3
9198c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_PARTIAL_END 2
9298c4a35cSTomasz Jozwiak #define QAT_LA_PARTIAL_BITPOS 0
9398c4a35cSTomasz Jozwiak #define QAT_LA_PARTIAL_MASK 0x3
946c868d6eSCiara Power #define QAT_LA_USE_EXTENDED_PROTOCOL_FLAGS_BITPOS 0
956c868d6eSCiara Power #define QAT_LA_USE_EXTENDED_PROTOCOL_FLAGS 1
966c868d6eSCiara Power #define QAT_LA_USE_EXTENDED_PROTOCOL_FLAGS_MASK 0x1
976c868d6eSCiara Power #define QAT_LA_USE_WCP_SLICE 1
986c868d6eSCiara Power #define QAT_LA_USE_WCP_SLICE_BITPOS 2
996c868d6eSCiara Power #define QAT_LA_USE_WCP_SLICE_MASK 0x1
1006c868d6eSCiara Power #define QAT_LA_USE_WAT_SLICE_BITPOS 3
1016c868d6eSCiara Power #define QAT_LA_USE_WAT_SLICE 1
1026c868d6eSCiara Power #define QAT_LA_USE_WAT_SLICE_MASK 0x1
103e9271821SNishikant Nayak 
104e9271821SNishikant Nayak /* GEN_LCE specific Crypto Flags fields */
105e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_AEAD_ALGO_BITPOS 6
106e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_AEAD_ALGO_MASK 0x3
107e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_IV_SIZE_BITPOS 9
108e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_IV_SIZE_MASK 0x3
109e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_IV_IN_DESC_BITPOS 11
110e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_IV_IN_DESC_MASK 0x1
111e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_IV_IN_DESC_VALID 1
112e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_DIRECTION_BITPOS 15
113e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_DIRECTION_MASK 0x1
114e8eb6e0aSCiara Power #define ICP_QAT_FW_SYM_COMM_ADDR_SGL 1
115e9271821SNishikant Nayak 
116e9271821SNishikant Nayak /* In GEN_LCE AEAD AES GCM Algorithm has ID 0 */
117e9271821SNishikant Nayak #define QAT_LA_CRYPTO_AEAD_AES_GCM_GEN_LCE 0
118e9271821SNishikant Nayak 
11998c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_FLAGS_BUILD(zuc_proto, gcm_iv_len, auth_rslt, proto, \
12098c4a35cSTomasz Jozwiak 	cmp_auth, ret_auth, update_state, \
12198c4a35cSTomasz Jozwiak 	ciph_iv, ciphcfg, partial) \
12298c4a35cSTomasz Jozwiak 	(((zuc_proto & QAT_FW_LA_ZUC_3G_PROTO_FLAG_MASK) << \
12398c4a35cSTomasz Jozwiak 	QAT_FW_LA_ZUC_3G_PROTO_FLAG_BITPOS) | \
12498c4a35cSTomasz Jozwiak 	((gcm_iv_len & QAT_LA_GCM_IV_LEN_FLAG_MASK) << \
12598c4a35cSTomasz Jozwiak 	QAT_LA_GCM_IV_LEN_FLAG_BITPOS) | \
12698c4a35cSTomasz Jozwiak 	((auth_rslt & QAT_LA_DIGEST_IN_BUFFER_MASK) << \
12798c4a35cSTomasz Jozwiak 	QAT_LA_DIGEST_IN_BUFFER_BITPOS) | \
12898c4a35cSTomasz Jozwiak 	((proto & QAT_LA_PROTO_MASK) << \
12998c4a35cSTomasz Jozwiak 	QAT_LA_PROTO_BITPOS)	| \
13098c4a35cSTomasz Jozwiak 	((cmp_auth & QAT_LA_CMP_AUTH_RES_MASK) << \
13198c4a35cSTomasz Jozwiak 	QAT_LA_CMP_AUTH_RES_BITPOS) | \
13298c4a35cSTomasz Jozwiak 	((ret_auth & QAT_LA_RET_AUTH_RES_MASK) << \
13398c4a35cSTomasz Jozwiak 	QAT_LA_RET_AUTH_RES_BITPOS) | \
13498c4a35cSTomasz Jozwiak 	((update_state & QAT_LA_UPDATE_STATE_MASK) << \
13598c4a35cSTomasz Jozwiak 	QAT_LA_UPDATE_STATE_BITPOS) | \
13698c4a35cSTomasz Jozwiak 	((ciph_iv & QAT_LA_CIPH_IV_FLD_MASK) << \
13798c4a35cSTomasz Jozwiak 	QAT_LA_CIPH_IV_FLD_BITPOS) | \
13898c4a35cSTomasz Jozwiak 	((ciphcfg & QAT_LA_CIPH_AUTH_CFG_OFFSET_MASK) << \
13998c4a35cSTomasz Jozwiak 	QAT_LA_CIPH_AUTH_CFG_OFFSET_BITPOS) | \
14098c4a35cSTomasz Jozwiak 	((partial & QAT_LA_PARTIAL_MASK) << \
14198c4a35cSTomasz Jozwiak 	QAT_LA_PARTIAL_BITPOS))
14298c4a35cSTomasz Jozwiak 
14398c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_CIPH_IV_FLD_FLAG_GET(flags) \
14498c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_CIPH_IV_FLD_BITPOS, \
14598c4a35cSTomasz Jozwiak 	QAT_LA_CIPH_IV_FLD_MASK)
14698c4a35cSTomasz Jozwiak 
14798c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_CIPH_AUTH_CFG_OFFSET_FLAG_GET(flags) \
14898c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_CIPH_AUTH_CFG_OFFSET_BITPOS, \
14998c4a35cSTomasz Jozwiak 	QAT_LA_CIPH_AUTH_CFG_OFFSET_MASK)
15098c4a35cSTomasz Jozwiak 
15198c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_ZUC_3G_PROTO_FLAG_GET(flags) \
15298c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_FW_LA_ZUC_3G_PROTO_FLAG_BITPOS, \
15398c4a35cSTomasz Jozwiak 	QAT_FW_LA_ZUC_3G_PROTO_FLAG_MASK)
15498c4a35cSTomasz Jozwiak 
15598c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_GCM_IV_LEN_FLAG_GET(flags) \
15698c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_GCM_IV_LEN_FLAG_BITPOS, \
15798c4a35cSTomasz Jozwiak 	QAT_LA_GCM_IV_LEN_FLAG_MASK)
15898c4a35cSTomasz Jozwiak 
15998c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_PROTO_GET(flags) \
16098c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_PROTO_BITPOS, QAT_LA_PROTO_MASK)
16198c4a35cSTomasz Jozwiak 
16298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_CMP_AUTH_GET(flags) \
16398c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_CMP_AUTH_RES_BITPOS, \
16498c4a35cSTomasz Jozwiak 	QAT_LA_CMP_AUTH_RES_MASK)
16598c4a35cSTomasz Jozwiak 
16698c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_RET_AUTH_GET(flags) \
16798c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_RET_AUTH_RES_BITPOS, \
16898c4a35cSTomasz Jozwiak 	QAT_LA_RET_AUTH_RES_MASK)
16998c4a35cSTomasz Jozwiak 
17098c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_DIGEST_IN_BUFFER_GET(flags) \
17198c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_DIGEST_IN_BUFFER_BITPOS, \
17298c4a35cSTomasz Jozwiak 	QAT_LA_DIGEST_IN_BUFFER_MASK)
17398c4a35cSTomasz Jozwiak 
17498c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_UPDATE_STATE_GET(flags) \
17598c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_UPDATE_STATE_BITPOS, \
17698c4a35cSTomasz Jozwiak 	QAT_LA_UPDATE_STATE_MASK)
17798c4a35cSTomasz Jozwiak 
17898c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_PARTIAL_GET(flags) \
17998c4a35cSTomasz Jozwiak 	QAT_FIELD_GET(flags, QAT_LA_PARTIAL_BITPOS, \
18098c4a35cSTomasz Jozwiak 	QAT_LA_PARTIAL_MASK)
18198c4a35cSTomasz Jozwiak 
18298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_CIPH_IV_FLD_FLAG_SET(flags, val) \
18398c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_CIPH_IV_FLD_BITPOS, \
18498c4a35cSTomasz Jozwiak 	QAT_LA_CIPH_IV_FLD_MASK)
18598c4a35cSTomasz Jozwiak 
18698c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_CIPH_AUTH_CFG_OFFSET_FLAG_SET(flags, val) \
18798c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_CIPH_AUTH_CFG_OFFSET_BITPOS, \
18898c4a35cSTomasz Jozwiak 	QAT_LA_CIPH_AUTH_CFG_OFFSET_MASK)
18998c4a35cSTomasz Jozwiak 
19098c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_ZUC_3G_PROTO_FLAG_SET(flags, val) \
19198c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_FW_LA_ZUC_3G_PROTO_FLAG_BITPOS, \
19298c4a35cSTomasz Jozwiak 	QAT_FW_LA_ZUC_3G_PROTO_FLAG_MASK)
19398c4a35cSTomasz Jozwiak 
19416b67601SAdam Dybkowski #define ICP_QAT_FW_LA_SINGLE_PASS_PROTO_FLAG_SET(flags, val) \
19516b67601SAdam Dybkowski 	QAT_FIELD_SET(flags, val, QAT_FW_LA_SINGLE_PASS_PROTO_FLAG_BITPOS, \
19616b67601SAdam Dybkowski 	QAT_FW_LA_SINGLE_PASS_PROTO_FLAG_MASK)
19716b67601SAdam Dybkowski 
19898c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_GCM_IV_LEN_FLAG_SET(flags, val) \
19998c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_GCM_IV_LEN_FLAG_BITPOS, \
20098c4a35cSTomasz Jozwiak 	QAT_LA_GCM_IV_LEN_FLAG_MASK)
20198c4a35cSTomasz Jozwiak 
20298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_PROTO_SET(flags, val) \
20398c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_PROTO_BITPOS, \
20498c4a35cSTomasz Jozwiak 	QAT_LA_PROTO_MASK)
20598c4a35cSTomasz Jozwiak 
20698c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_CMP_AUTH_SET(flags, val) \
20798c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_CMP_AUTH_RES_BITPOS, \
20898c4a35cSTomasz Jozwiak 	QAT_LA_CMP_AUTH_RES_MASK)
20998c4a35cSTomasz Jozwiak 
21098c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_RET_AUTH_SET(flags, val) \
21198c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_RET_AUTH_RES_BITPOS, \
21298c4a35cSTomasz Jozwiak 	QAT_LA_RET_AUTH_RES_MASK)
21398c4a35cSTomasz Jozwiak 
21498c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_DIGEST_IN_BUFFER_SET(flags, val) \
21598c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_DIGEST_IN_BUFFER_BITPOS, \
21698c4a35cSTomasz Jozwiak 	QAT_LA_DIGEST_IN_BUFFER_MASK)
21798c4a35cSTomasz Jozwiak 
21898c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_UPDATE_STATE_SET(flags, val) \
21998c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_UPDATE_STATE_BITPOS, \
22098c4a35cSTomasz Jozwiak 	QAT_LA_UPDATE_STATE_MASK)
22198c4a35cSTomasz Jozwiak 
22298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_LA_PARTIAL_SET(flags, val) \
22398c4a35cSTomasz Jozwiak 	QAT_FIELD_SET(flags, val, QAT_LA_PARTIAL_BITPOS, \
22498c4a35cSTomasz Jozwiak 	QAT_LA_PARTIAL_MASK)
22598c4a35cSTomasz Jozwiak 
2266c868d6eSCiara Power #define ICP_QAT_FW_USE_EXTENDED_PROTOCOL_FLAGS_SET(flags, val)	\
2276c868d6eSCiara Power 	QAT_FIELD_SET(flags, val,				\
2286c868d6eSCiara Power 	QAT_LA_USE_EXTENDED_PROTOCOL_FLAGS_BITPOS,		\
2296c868d6eSCiara Power 	QAT_LA_USE_EXTENDED_PROTOCOL_FLAGS_MASK)
2306c868d6eSCiara Power 
2316c868d6eSCiara Power #define ICP_QAT_FW_USE_WCP_SLICE_SET(flags, val) \
2326c868d6eSCiara Power 	QAT_FIELD_SET(flags, val, \
2336c868d6eSCiara Power 	QAT_LA_USE_WCP_SLICE_BITPOS, \
2346c868d6eSCiara Power 	QAT_LA_USE_WCP_SLICE_MASK)
2356c868d6eSCiara Power 
2366c868d6eSCiara Power #define ICP_QAT_FW_USE_WAT_SLICE_SET(flags, val) \
2376c868d6eSCiara Power 	QAT_FIELD_SET(flags, val, \
2386c868d6eSCiara Power 	QAT_LA_USE_WAT_SLICE_BITPOS, \
2396c868d6eSCiara Power 	QAT_LA_USE_WAT_SLICE_MASK)
2406c868d6eSCiara Power 
241e9271821SNishikant Nayak /* GEN_LCE specific Crypto Flags operations */
242e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_AEAD_ALGO_SET(flags, val) \
243e9271821SNishikant Nayak 	QAT_FIELD_SET(flags, val, ICP_QAT_FW_SYM_AEAD_ALGO_BITPOS, \
244e9271821SNishikant Nayak 	ICP_QAT_FW_SYM_AEAD_ALGO_MASK)
245e9271821SNishikant Nayak 
246e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_IV_SIZE_SET(flags, val) \
247e9271821SNishikant Nayak 	QAT_FIELD_SET(flags, val, ICP_QAT_FW_SYM_IV_SIZE_BITPOS, \
248e9271821SNishikant Nayak 	ICP_QAT_FW_SYM_IV_SIZE_MASK)
249e9271821SNishikant Nayak 
250e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_IV_IN_DESC_FLAG_SET(flags, val) \
251e9271821SNishikant Nayak 	QAT_FIELD_SET(flags, val, ICP_QAT_FW_SYM_IV_IN_DESC_BITPOS, \
252e9271821SNishikant Nayak 	ICP_QAT_FW_SYM_IV_IN_DESC_MASK)
253e9271821SNishikant Nayak 
254e9271821SNishikant Nayak #define ICP_QAT_FW_SYM_DIR_FLAG_SET(flags, val) \
255e9271821SNishikant Nayak 	QAT_FIELD_SET(flags, val, ICP_QAT_FW_SYM_DIRECTION_BITPOS, \
256e9271821SNishikant Nayak 	ICP_QAT_FW_SYM_DIRECTION_MASK)
257e9271821SNishikant Nayak 
258171c655bSArkadiusz Kusztal #define QAT_FW_LA_MODE2 1
259171c655bSArkadiusz Kusztal #define QAT_FW_LA_NO_MODE2 0
260171c655bSArkadiusz Kusztal #define QAT_FW_LA_MODE2_MASK 0x1
261171c655bSArkadiusz Kusztal #define QAT_FW_LA_MODE2_BITPOS 5
262171c655bSArkadiusz Kusztal #define ICP_QAT_FW_HASH_FLAG_MODE2_SET(flags, val) \
263171c655bSArkadiusz Kusztal QAT_FIELD_SET(flags, \
264171c655bSArkadiusz Kusztal 		val, \
265171c655bSArkadiusz Kusztal 		QAT_FW_LA_MODE2_BITPOS, \
266171c655bSArkadiusz Kusztal 		QAT_FW_LA_MODE2_MASK)
267171c655bSArkadiusz Kusztal 
26898c4a35cSTomasz Jozwiak struct icp_qat_fw_cipher_req_hdr_cd_pars {
26998c4a35cSTomasz Jozwiak 	union {
27098c4a35cSTomasz Jozwiak 		struct {
27198c4a35cSTomasz Jozwiak 			uint64_t content_desc_addr;
27298c4a35cSTomasz Jozwiak 			uint16_t content_desc_resrvd1;
27398c4a35cSTomasz Jozwiak 			uint8_t content_desc_params_sz;
27498c4a35cSTomasz Jozwiak 			uint8_t content_desc_hdr_resrvd2;
27598c4a35cSTomasz Jozwiak 			uint32_t content_desc_resrvd3;
27698c4a35cSTomasz Jozwiak 		} s;
27798c4a35cSTomasz Jozwiak 		struct {
27898c4a35cSTomasz Jozwiak 			uint32_t cipher_key_array[ICP_QAT_FW_NUM_LONGWORDS_4];
27998c4a35cSTomasz Jozwiak 		} s1;
28098c4a35cSTomasz Jozwiak 	} u;
28198c4a35cSTomasz Jozwiak };
28298c4a35cSTomasz Jozwiak 
28398c4a35cSTomasz Jozwiak struct icp_qat_fw_cipher_auth_req_hdr_cd_pars {
28498c4a35cSTomasz Jozwiak 	union {
28598c4a35cSTomasz Jozwiak 		struct {
28698c4a35cSTomasz Jozwiak 			uint64_t content_desc_addr;
28798c4a35cSTomasz Jozwiak 			uint16_t content_desc_resrvd1;
28898c4a35cSTomasz Jozwiak 			uint8_t content_desc_params_sz;
28998c4a35cSTomasz Jozwiak 			uint8_t content_desc_hdr_resrvd2;
29098c4a35cSTomasz Jozwiak 			uint32_t content_desc_resrvd3;
29198c4a35cSTomasz Jozwiak 		} s;
29298c4a35cSTomasz Jozwiak 		struct {
29398c4a35cSTomasz Jozwiak 			uint32_t cipher_key_array[ICP_QAT_FW_NUM_LONGWORDS_4];
29498c4a35cSTomasz Jozwiak 		} sl;
29598c4a35cSTomasz Jozwiak 	} u;
29698c4a35cSTomasz Jozwiak };
29798c4a35cSTomasz Jozwiak 
29898c4a35cSTomasz Jozwiak struct icp_qat_fw_cipher_cd_ctrl_hdr {
29998c4a35cSTomasz Jozwiak 	uint8_t cipher_state_sz;
30098c4a35cSTomasz Jozwiak 	uint8_t cipher_key_sz;
30198c4a35cSTomasz Jozwiak 	uint8_t cipher_cfg_offset;
30298c4a35cSTomasz Jozwiak 	uint8_t next_curr_id;
30398c4a35cSTomasz Jozwiak 	uint8_t cipher_padding_sz;
30498c4a35cSTomasz Jozwiak 	uint8_t resrvd1;
30598c4a35cSTomasz Jozwiak 	uint16_t resrvd2;
30698c4a35cSTomasz Jozwiak 	uint32_t resrvd3[ICP_QAT_FW_NUM_LONGWORDS_3];
30798c4a35cSTomasz Jozwiak };
30898c4a35cSTomasz Jozwiak 
30998c4a35cSTomasz Jozwiak struct icp_qat_fw_auth_cd_ctrl_hdr {
31098c4a35cSTomasz Jozwiak 	uint32_t resrvd1;
31198c4a35cSTomasz Jozwiak 	uint8_t resrvd2;
31298c4a35cSTomasz Jozwiak 	uint8_t hash_flags;
31398c4a35cSTomasz Jozwiak 	uint8_t hash_cfg_offset;
31498c4a35cSTomasz Jozwiak 	uint8_t next_curr_id;
31598c4a35cSTomasz Jozwiak 	uint8_t resrvd3;
31698c4a35cSTomasz Jozwiak 	uint8_t outer_prefix_sz;
31798c4a35cSTomasz Jozwiak 	uint8_t final_sz;
31898c4a35cSTomasz Jozwiak 	uint8_t inner_res_sz;
31998c4a35cSTomasz Jozwiak 	uint8_t resrvd4;
32098c4a35cSTomasz Jozwiak 	uint8_t inner_state1_sz;
32198c4a35cSTomasz Jozwiak 	uint8_t inner_state2_offset;
32298c4a35cSTomasz Jozwiak 	uint8_t inner_state2_sz;
32398c4a35cSTomasz Jozwiak 	uint8_t outer_config_offset;
32498c4a35cSTomasz Jozwiak 	uint8_t outer_state1_sz;
32598c4a35cSTomasz Jozwiak 	uint8_t outer_res_sz;
32698c4a35cSTomasz Jozwiak 	uint8_t outer_prefix_offset;
32798c4a35cSTomasz Jozwiak };
32898c4a35cSTomasz Jozwiak 
32998c4a35cSTomasz Jozwiak struct icp_qat_fw_cipher_auth_cd_ctrl_hdr {
33098c4a35cSTomasz Jozwiak 	uint8_t cipher_state_sz;
33198c4a35cSTomasz Jozwiak 	uint8_t cipher_key_sz;
33298c4a35cSTomasz Jozwiak 	uint8_t cipher_cfg_offset;
33398c4a35cSTomasz Jozwiak 	uint8_t next_curr_id_cipher;
33498c4a35cSTomasz Jozwiak 	uint8_t cipher_padding_sz;
33598c4a35cSTomasz Jozwiak 	uint8_t hash_flags;
33698c4a35cSTomasz Jozwiak 	uint8_t hash_cfg_offset;
33798c4a35cSTomasz Jozwiak 	uint8_t next_curr_id_auth;
33898c4a35cSTomasz Jozwiak 	uint8_t resrvd1;
33998c4a35cSTomasz Jozwiak 	uint8_t outer_prefix_sz;
34098c4a35cSTomasz Jozwiak 	uint8_t final_sz;
34198c4a35cSTomasz Jozwiak 	uint8_t inner_res_sz;
34298c4a35cSTomasz Jozwiak 	uint8_t resrvd2;
34398c4a35cSTomasz Jozwiak 	uint8_t inner_state1_sz;
34498c4a35cSTomasz Jozwiak 	uint8_t inner_state2_offset;
34598c4a35cSTomasz Jozwiak 	uint8_t inner_state2_sz;
34698c4a35cSTomasz Jozwiak 	uint8_t outer_config_offset;
34798c4a35cSTomasz Jozwiak 	uint8_t outer_state1_sz;
34898c4a35cSTomasz Jozwiak 	uint8_t outer_res_sz;
34998c4a35cSTomasz Jozwiak 	uint8_t outer_prefix_offset;
35098c4a35cSTomasz Jozwiak };
35198c4a35cSTomasz Jozwiak 
35298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_AUTH_HDR_FLAG_DO_NESTED 1
35398c4a35cSTomasz Jozwiak #define ICP_QAT_FW_AUTH_HDR_FLAG_NO_NESTED 0
354bcd7e3e8SAdam Dybkowski #define ICP_QAT_FW_AUTH_HDR_FLAG_SNOW3G_UIA2_BITPOS 3
355bcd7e3e8SAdam Dybkowski #define ICP_QAT_FW_AUTH_HDR_FLAG_ZUC_EIA3_BITPOS 4
35698c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CCM_GCM_AAD_SZ_MAX	240
35716b67601SAdam Dybkowski #define ICP_QAT_FW_HASH_REQUEST_PARAMETERS_OFFSET 24
35898c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPHER_REQUEST_PARAMETERS_OFFSET (0)
35998c4a35cSTomasz Jozwiak 
360*e7750639SAndre Muezerie struct __rte_packed_begin icp_qat_fw_la_cipher_req_params {
36198c4a35cSTomasz Jozwiak 	uint32_t cipher_offset;
36298c4a35cSTomasz Jozwiak 	uint32_t cipher_length;
36398c4a35cSTomasz Jozwiak 	union {
36498c4a35cSTomasz Jozwiak 		uint32_t cipher_IV_array[ICP_QAT_FW_NUM_LONGWORDS_4];
36598c4a35cSTomasz Jozwiak 		struct {
36698c4a35cSTomasz Jozwiak 			uint64_t cipher_IV_ptr;
36798c4a35cSTomasz Jozwiak 			uint64_t resrvd1;
36898c4a35cSTomasz Jozwiak 		} s;
36998c4a35cSTomasz Jozwiak 	} u;
37016b67601SAdam Dybkowski 	uint64_t spc_aad_addr;
37116b67601SAdam Dybkowski 	uint64_t spc_auth_res_addr;
37216b67601SAdam Dybkowski 	uint16_t spc_aad_sz;
37316b67601SAdam Dybkowski 	uint8_t reserved;
37416b67601SAdam Dybkowski 	uint8_t spc_auth_res_sz;
375*e7750639SAndre Muezerie } __rte_packed_end;
37698c4a35cSTomasz Jozwiak 
377*e7750639SAndre Muezerie struct __rte_packed_begin icp_qat_fw_la_auth_req_params {
37898c4a35cSTomasz Jozwiak 	uint32_t auth_off;
37998c4a35cSTomasz Jozwiak 	uint32_t auth_len;
38098c4a35cSTomasz Jozwiak 	union {
38198c4a35cSTomasz Jozwiak 		uint64_t auth_partial_st_prefix;
38298c4a35cSTomasz Jozwiak 		uint64_t aad_adr;
38398c4a35cSTomasz Jozwiak 	} u1;
38498c4a35cSTomasz Jozwiak 	uint64_t auth_res_addr;
38598c4a35cSTomasz Jozwiak 	union {
38698c4a35cSTomasz Jozwiak 		uint8_t inner_prefix_sz;
38798c4a35cSTomasz Jozwiak 		uint8_t aad_sz;
38898c4a35cSTomasz Jozwiak 	} u2;
38998c4a35cSTomasz Jozwiak 	uint8_t resrvd1;
39098c4a35cSTomasz Jozwiak 	uint8_t hash_state_sz;
39198c4a35cSTomasz Jozwiak 	uint8_t auth_res_sz;
392*e7750639SAndre Muezerie } __rte_packed_end;
39398c4a35cSTomasz Jozwiak 
39498c4a35cSTomasz Jozwiak struct icp_qat_fw_la_auth_req_params_resrvd_flds {
39598c4a35cSTomasz Jozwiak 	uint32_t resrvd[ICP_QAT_FW_NUM_LONGWORDS_6];
39698c4a35cSTomasz Jozwiak 	union {
39798c4a35cSTomasz Jozwiak 		uint8_t inner_prefix_sz;
39898c4a35cSTomasz Jozwiak 		uint8_t aad_sz;
39998c4a35cSTomasz Jozwiak 	} u2;
40098c4a35cSTomasz Jozwiak 	uint8_t resrvd1;
40198c4a35cSTomasz Jozwiak 	uint16_t resrvd2;
40298c4a35cSTomasz Jozwiak };
40398c4a35cSTomasz Jozwiak 
40498c4a35cSTomasz Jozwiak struct icp_qat_fw_la_resp {
40598c4a35cSTomasz Jozwiak 	struct icp_qat_fw_comn_resp_hdr comn_resp;
40698c4a35cSTomasz Jozwiak 	uint64_t opaque_data;
40798c4a35cSTomasz Jozwiak 	uint32_t resrvd[ICP_QAT_FW_NUM_LONGWORDS_4];
40898c4a35cSTomasz Jozwiak };
40998c4a35cSTomasz Jozwiak 
41098c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPHER_NEXT_ID_GET(cd_ctrl_hdr_t) \
41198c4a35cSTomasz Jozwiak 	((((cd_ctrl_hdr_t)->next_curr_id_cipher) & \
41298c4a35cSTomasz Jozwiak 	  ICP_QAT_FW_COMN_NEXT_ID_MASK) >> (ICP_QAT_FW_COMN_NEXT_ID_BITPOS))
41398c4a35cSTomasz Jozwiak 
41498c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPHER_NEXT_ID_SET(cd_ctrl_hdr_t, val) \
41598c4a35cSTomasz Jozwiak { (cd_ctrl_hdr_t)->next_curr_id_cipher = \
41698c4a35cSTomasz Jozwiak 	((((cd_ctrl_hdr_t)->next_curr_id_cipher) \
41798c4a35cSTomasz Jozwiak 	& ICP_QAT_FW_COMN_CURR_ID_MASK) | \
41898c4a35cSTomasz Jozwiak 	((val << ICP_QAT_FW_COMN_NEXT_ID_BITPOS) \
41998c4a35cSTomasz Jozwiak 	& ICP_QAT_FW_COMN_NEXT_ID_MASK)) }
42098c4a35cSTomasz Jozwiak 
42198c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPHER_CURR_ID_GET(cd_ctrl_hdr_t) \
42298c4a35cSTomasz Jozwiak 	(((cd_ctrl_hdr_t)->next_curr_id_cipher) \
42398c4a35cSTomasz Jozwiak 	& ICP_QAT_FW_COMN_CURR_ID_MASK)
42498c4a35cSTomasz Jozwiak 
42598c4a35cSTomasz Jozwiak #define ICP_QAT_FW_CIPHER_CURR_ID_SET(cd_ctrl_hdr_t, val) \
42698c4a35cSTomasz Jozwiak { (cd_ctrl_hdr_t)->next_curr_id_cipher = \
42798c4a35cSTomasz Jozwiak 	((((cd_ctrl_hdr_t)->next_curr_id_cipher) \
42898c4a35cSTomasz Jozwiak 	& ICP_QAT_FW_COMN_NEXT_ID_MASK) | \
42998c4a35cSTomasz Jozwiak 	((val) & ICP_QAT_FW_COMN_CURR_ID_MASK)) }
43098c4a35cSTomasz Jozwiak 
43198c4a35cSTomasz Jozwiak #define ICP_QAT_FW_AUTH_NEXT_ID_GET(cd_ctrl_hdr_t) \
43298c4a35cSTomasz Jozwiak 	((((cd_ctrl_hdr_t)->next_curr_id_auth) & ICP_QAT_FW_COMN_NEXT_ID_MASK) \
43398c4a35cSTomasz Jozwiak 	>> (ICP_QAT_FW_COMN_NEXT_ID_BITPOS))
43498c4a35cSTomasz Jozwiak 
43598c4a35cSTomasz Jozwiak #define ICP_QAT_FW_AUTH_NEXT_ID_SET(cd_ctrl_hdr_t, val) \
43698c4a35cSTomasz Jozwiak { (cd_ctrl_hdr_t)->next_curr_id_auth = \
43798c4a35cSTomasz Jozwiak 	((((cd_ctrl_hdr_t)->next_curr_id_auth) \
43898c4a35cSTomasz Jozwiak 	& ICP_QAT_FW_COMN_CURR_ID_MASK) | \
43998c4a35cSTomasz Jozwiak 	((val << ICP_QAT_FW_COMN_NEXT_ID_BITPOS) \
44098c4a35cSTomasz Jozwiak 	& ICP_QAT_FW_COMN_NEXT_ID_MASK)) }
44198c4a35cSTomasz Jozwiak 
44298c4a35cSTomasz Jozwiak #define ICP_QAT_FW_AUTH_CURR_ID_GET(cd_ctrl_hdr_t) \
44398c4a35cSTomasz Jozwiak 	(((cd_ctrl_hdr_t)->next_curr_id_auth) \
44498c4a35cSTomasz Jozwiak 	& ICP_QAT_FW_COMN_CURR_ID_MASK)
44598c4a35cSTomasz Jozwiak 
44698c4a35cSTomasz Jozwiak #define ICP_QAT_FW_AUTH_CURR_ID_SET(cd_ctrl_hdr_t, val) \
44798c4a35cSTomasz Jozwiak { (cd_ctrl_hdr_t)->next_curr_id_auth = \
44898c4a35cSTomasz Jozwiak 	((((cd_ctrl_hdr_t)->next_curr_id_auth) \
44998c4a35cSTomasz Jozwiak 	& ICP_QAT_FW_COMN_NEXT_ID_MASK) | \
45098c4a35cSTomasz Jozwiak 	((val) & ICP_QAT_FW_COMN_CURR_ID_MASK)) }
45198c4a35cSTomasz Jozwiak 
452d0549291SArek Kusztal #define ICP_QAT_FW_LA_USE_WIRELESS_SLICE_TYPE 2
453d0549291SArek Kusztal #define ICP_QAT_FW_LA_USE_UCS_SLICE_TYPE 1
454d0549291SArek Kusztal #define ICP_QAT_FW_LA_USE_LEGACY_SLICE_TYPE 0
455d0549291SArek Kusztal #define QAT_LA_SLICE_TYPE_BITPOS 14
456d0549291SArek Kusztal #define QAT_LA_SLICE_TYPE_MASK 0x3
457d0549291SArek Kusztal #define ICP_QAT_FW_LA_SLICE_TYPE_SET(flags, val)	\
458d0549291SArek Kusztal 	QAT_FIELD_SET(flags, val, QAT_LA_SLICE_TYPE_BITPOS,	\
459d0549291SArek Kusztal 		QAT_LA_SLICE_TYPE_MASK)
460d0549291SArek Kusztal 
461d0549291SArek Kusztal struct icp_qat_fw_la_cipher_20_req_params {
462d0549291SArek Kusztal 	uint32_t cipher_offset;
463d0549291SArek Kusztal 	uint32_t cipher_length;
464d0549291SArek Kusztal 	union {
465d0549291SArek Kusztal 	uint32_t cipher_IV_array[ICP_QAT_FW_NUM_LONGWORDS_4];
466d0549291SArek Kusztal 	struct {
467d0549291SArek Kusztal 		uint64_t cipher_IV_ptr;
468d0549291SArek Kusztal 		uint64_t resrvd1;
469d0549291SArek Kusztal 		} s;
470d0549291SArek Kusztal 
471d0549291SArek Kusztal 	} u;
472d0549291SArek Kusztal 	uint32_t   spc_aad_offset;
473d0549291SArek Kusztal 	uint32_t   spc_aad_sz;
474d0549291SArek Kusztal 	uint64_t   spc_aad_addr;
475d0549291SArek Kusztal 	uint64_t   spc_auth_res_addr;
476d0549291SArek Kusztal 	uint8_t    reserved[3];
477d0549291SArek Kusztal 	uint8_t    spc_auth_res_sz;
478d0549291SArek Kusztal };
479d0549291SArek Kusztal 
480e9271821SNishikant Nayak struct icp_qat_fw_la_cipher_30_req_params {
481e9271821SNishikant Nayak 		uint32_t   spc_aad_sz;
482e9271821SNishikant Nayak 		uint8_t    cipher_length;
483e9271821SNishikant Nayak 		uint8_t    reserved[2];
484e9271821SNishikant Nayak 		uint8_t    spc_auth_res_sz;
485e9271821SNishikant Nayak 		union {
486e9271821SNishikant Nayak 				uint32_t cipher_IV_array[ICP_QAT_FW_NUM_LONGWORDS_4];
487e9271821SNishikant Nayak 				struct {
488e9271821SNishikant Nayak 						uint64_t cipher_IV_ptr;
489e9271821SNishikant Nayak 						uint64_t resrvd1;
490e9271821SNishikant Nayak 			} s;
491e9271821SNishikant Nayak 
492e9271821SNishikant Nayak 		} u;
493e9271821SNishikant Nayak };
494e9271821SNishikant Nayak 
49598c4a35cSTomasz Jozwiak #endif
496