138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk/*
238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  This file is provided under a dual BSD/GPLv2 license.  When using or
338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  redistributing this file, you may do so under either license.
438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  GPL LICENSE SUMMARY
638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  Copyright(c) 2014 Intel Corporation.
738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  This program is free software; you can redistribute it and/or modify
838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  it under the terms of version 2 of the GNU General Public License as
938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  published by the Free Software Foundation.
1038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
1138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  This program is distributed in the hope that it will be useful, but
1238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  WITHOUT ANY WARRANTY; without even the implied warranty of
1338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  General Public License for more details.
1538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
1638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  Contact Information:
1738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  qat-linux@intel.com
1838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
1938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  BSD LICENSE
2038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  Copyright(c) 2014 Intel Corporation.
2138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  Redistribution and use in source and binary forms, with or without
2238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  modification, are permitted provided that the following conditions
2338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  are met:
2438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
2538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk    * Redistributions of source code must retain the above copyright
2638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk      notice, this list of conditions and the following disclaimer.
2738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk    * Redistributions in binary form must reproduce the above copyright
2838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk      notice, this list of conditions and the following disclaimer in
2938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk      the documentation and/or other materials provided with the
3038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk      distribution.
3138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk    * Neither the name of Intel Corporation nor the names of its
3238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk      contributors may be used to endorse or promote products derived
3338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk      from this software without specific prior written permission.
3438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
3538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
3838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
4138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
4238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
4338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
4438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
4538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk*/
4738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#ifndef _ICP_QAT_FW_LA_H_
4838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define _ICP_QAT_FW_LA_H_
4938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#include "icp_qat_fw.h"
5038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
5138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukenum icp_qat_fw_la_cmd_id {
5238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_CIPHER = 0,
5338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_AUTH = 1,
5438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_CIPHER_HASH = 2,
5538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_HASH_CIPHER = 3,
5638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_TRNG_GET_RANDOM = 4,
5738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_TRNG_TEST = 5,
5838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_SSL3_KEY_DERIVE = 6,
5938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_TLS_V1_1_KEY_DERIVE = 7,
6038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_TLS_V1_2_KEY_DERIVE = 8,
6138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_MGF1 = 9,
6238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_AUTH_PRE_COMP = 10,
6338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_CIPHER_PRE_COMP = 11,
6438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ICP_QAT_FW_LA_CMD_DELIMITER = 12
6538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
6638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
6738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_ICV_VER_STATUS_PASS ICP_QAT_FW_COMN_STATUS_FLAG_OK
6838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_ICV_VER_STATUS_FAIL ICP_QAT_FW_COMN_STATUS_FLAG_ERROR
6938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_TRNG_STATUS_PASS ICP_QAT_FW_COMN_STATUS_FLAG_OK
7038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_TRNG_STATUS_FAIL ICP_QAT_FW_COMN_STATUS_FLAG_ERROR
7138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
7238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_la_bulk_req {
7338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	struct icp_qat_fw_comn_req_hdr comn_hdr;
7438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	struct icp_qat_fw_comn_req_hdr_cd_pars cd_pars;
7538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	struct icp_qat_fw_comn_req_mid comn_mid;
7638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	struct icp_qat_fw_comn_req_rqpars serv_specif_rqpars;
7738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	struct icp_qat_fw_comn_req_cd_ctrl cd_ctrl;
7838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
7938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
8038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_GCM_IV_LEN_12_OCTETS 1
8138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_GCM_IV_LEN_NOT_12_OCTETS 0
8238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_FW_LA_ZUC_3G_PROTO_FLAG_BITPOS 12
8338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_ZUC_3G_PROTO 1
8438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_FW_LA_ZUC_3G_PROTO_FLAG_MASK 0x1
8538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_GCM_IV_LEN_FLAG_BITPOS 11
8638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_GCM_IV_LEN_FLAG_MASK 0x1
8738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_DIGEST_IN_BUFFER 1
8838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_NO_DIGEST_IN_BUFFER 0
8938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_DIGEST_IN_BUFFER_BITPOS	10
9038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_DIGEST_IN_BUFFER_MASK 0x1
9138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_SNOW_3G_PROTO 4
9238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_GCM_PROTO	2
9338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_CCM_PROTO	1
9438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_NO_PROTO 0
9538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_PROTO_BITPOS 7
9638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_PROTO_MASK 0x7
9738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_CMP_AUTH_RES 1
9838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_NO_CMP_AUTH_RES 0
9938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_CMP_AUTH_RES_BITPOS 6
10038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_CMP_AUTH_RES_MASK 0x1
10138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_RET_AUTH_RES 1
10238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_NO_RET_AUTH_RES 0
10338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_RET_AUTH_RES_BITPOS 5
10438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_RET_AUTH_RES_MASK 0x1
10538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_UPDATE_STATE 1
10638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_NO_UPDATE_STATE 0
10738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_UPDATE_STATE_BITPOS 4
10838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_UPDATE_STATE_MASK 0x1
10938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPH_AUTH_CFG_OFFSET_IN_CD_SETUP 0
11038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPH_AUTH_CFG_OFFSET_IN_SHRAM_CP 1
11138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_CIPH_AUTH_CFG_OFFSET_BITPOS 3
11238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_CIPH_AUTH_CFG_OFFSET_MASK 0x1
11338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPH_IV_64BIT_PTR 0
11438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPH_IV_16BYTE_DATA 1
11538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_CIPH_IV_FLD_BITPOS 2
11638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_CIPH_IV_FLD_MASK   0x1
11738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_PARTIAL_NONE 0
11838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_PARTIAL_START 1
11938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_PARTIAL_MID 3
12038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_PARTIAL_END 2
12138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_PARTIAL_BITPOS 0
12238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define QAT_LA_PARTIAL_MASK 0x3
12338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_FLAGS_BUILD(zuc_proto, gcm_iv_len, auth_rslt, proto, \
12438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	cmp_auth, ret_auth, update_state, \
12538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	ciph_iv, ciphcfg, partial) \
12638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	(((zuc_proto & QAT_FW_LA_ZUC_3G_PROTO_FLAG_MASK) << \
12738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FW_LA_ZUC_3G_PROTO_FLAG_BITPOS) | \
12838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((gcm_iv_len & QAT_LA_GCM_IV_LEN_FLAG_MASK) << \
12938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_GCM_IV_LEN_FLAG_BITPOS) | \
13038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((auth_rslt & QAT_LA_DIGEST_IN_BUFFER_MASK) << \
13138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_DIGEST_IN_BUFFER_BITPOS) | \
13238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((proto & QAT_LA_PROTO_MASK) << \
13338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_PROTO_BITPOS)	| \
13438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((cmp_auth & QAT_LA_CMP_AUTH_RES_MASK) << \
13538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CMP_AUTH_RES_BITPOS) | \
13638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((ret_auth & QAT_LA_RET_AUTH_RES_MASK) << \
13738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_RET_AUTH_RES_BITPOS) | \
13838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((update_state & QAT_LA_UPDATE_STATE_MASK) << \
13938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_UPDATE_STATE_BITPOS) | \
14038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((ciph_iv & QAT_LA_CIPH_IV_FLD_MASK) << \
14138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CIPH_IV_FLD_BITPOS) | \
14238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((ciphcfg & QAT_LA_CIPH_AUTH_CFG_OFFSET_MASK) << \
14338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CIPH_AUTH_CFG_OFFSET_BITPOS) | \
14438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((partial & QAT_LA_PARTIAL_MASK) << \
14538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_PARTIAL_BITPOS))
14638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
14738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_CIPH_IV_FLD_FLAG_GET(flags) \
14838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_CIPH_IV_FLD_BITPOS, \
14938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CIPH_IV_FLD_MASK)
15038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
15138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_CIPH_AUTH_CFG_OFFSET_FLAG_GET(flags) \
15238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_CIPH_AUTH_CFG_OFFSET_BITPOS, \
15338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CIPH_AUTH_CFG_OFFSET_MASK)
15438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
15538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_ZUC_3G_PROTO_FLAG_GET(flags) \
15638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_FW_LA_ZUC_3G_PROTO_FLAG_BITPOS, \
15738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FW_LA_ZUC_3G_PROTO_FLAG_MASK)
15838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
15938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_GCM_IV_LEN_FLAG_GET(flags) \
16038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_GCM_IV_LEN_FLAG_BITPOS, \
16138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_GCM_IV_LEN_FLAG_MASK)
16238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
16338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_PROTO_GET(flags) \
16438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_PROTO_BITPOS, QAT_LA_PROTO_MASK)
16538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
16638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_CMP_AUTH_GET(flags) \
16738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_CMP_AUTH_RES_BITPOS, \
16838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CMP_AUTH_RES_MASK)
16938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
17038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_RET_AUTH_GET(flags) \
17138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_RET_AUTH_RES_BITPOS, \
17238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_RET_AUTH_RES_MASK)
17338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
17438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_DIGEST_IN_BUFFER_GET(flags) \
17538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_DIGEST_IN_BUFFER_BITPOS, \
17638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_DIGEST_IN_BUFFER_MASK)
17738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
17838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_UPDATE_STATE_GET(flags) \
17938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_UPDATE_STATE_BITPOS, \
18038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_UPDATE_STATE_MASK)
18138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
18238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_PARTIAL_GET(flags) \
18338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_GET(flags, QAT_LA_PARTIAL_BITPOS, \
18438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_PARTIAL_MASK)
18538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
18638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_CIPH_IV_FLD_FLAG_SET(flags, val) \
18738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_CIPH_IV_FLD_BITPOS, \
18838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CIPH_IV_FLD_MASK)
18938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
19038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_CIPH_AUTH_CFG_OFFSET_FLAG_SET(flags, val) \
19138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_CIPH_AUTH_CFG_OFFSET_BITPOS, \
19238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CIPH_AUTH_CFG_OFFSET_MASK)
19338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
19438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_ZUC_3G_PROTO_FLAG_SET(flags, val) \
19538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_FW_LA_ZUC_3G_PROTO_FLAG_BITPOS, \
19638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FW_LA_ZUC_3G_PROTO_FLAG_MASK)
19738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
19838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_GCM_IV_LEN_FLAG_SET(flags, val) \
19938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_GCM_IV_LEN_FLAG_BITPOS, \
20038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_GCM_IV_LEN_FLAG_MASK)
20138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
20238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_PROTO_SET(flags, val) \
20338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_PROTO_BITPOS, \
20438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_PROTO_MASK)
20538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
20638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_CMP_AUTH_SET(flags, val) \
20738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_CMP_AUTH_RES_BITPOS, \
20838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_CMP_AUTH_RES_MASK)
20938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
21038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_RET_AUTH_SET(flags, val) \
21138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_RET_AUTH_RES_BITPOS, \
21238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_RET_AUTH_RES_MASK)
21338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
21438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_DIGEST_IN_BUFFER_SET(flags, val) \
21538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_DIGEST_IN_BUFFER_BITPOS, \
21638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_DIGEST_IN_BUFFER_MASK)
21738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
21838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_UPDATE_STATE_SET(flags, val) \
21938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_UPDATE_STATE_BITPOS, \
22038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_UPDATE_STATE_MASK)
22138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
22238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_LA_PARTIAL_SET(flags, val) \
22338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_FIELD_SET(flags, val, QAT_LA_PARTIAL_BITPOS, \
22438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	QAT_LA_PARTIAL_MASK)
22538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
22638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_cipher_req_hdr_cd_pars {
22738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	union {
22838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		struct {
22938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint64_t content_desc_addr;
23038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint16_t content_desc_resrvd1;
23138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint8_t content_desc_params_sz;
23238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint8_t content_desc_hdr_resrvd2;
23338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint32_t content_desc_resrvd3;
23438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		} s;
23538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		struct {
23638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint32_t cipher_key_array[ICP_QAT_FW_NUM_LONGWORDS_4];
23738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		} s1;
23838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	} u;
23938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
24038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
24138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_cipher_auth_req_hdr_cd_pars {
24238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	union {
24338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		struct {
24438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint64_t content_desc_addr;
24538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint16_t content_desc_resrvd1;
24638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint8_t content_desc_params_sz;
24738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint8_t content_desc_hdr_resrvd2;
24838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint32_t content_desc_resrvd3;
24938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		} s;
25038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		struct {
25138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint32_t cipher_key_array[ICP_QAT_FW_NUM_LONGWORDS_4];
25238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		} sl;
25338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	} u;
25438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
25538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
25638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_cipher_cd_ctrl_hdr {
25738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t cipher_state_sz;
25838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t cipher_key_sz;
25938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t cipher_cfg_offset;
26038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t next_curr_id;
26138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t cipher_padding_sz;
26238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t resrvd1;
26338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint16_t resrvd2;
26438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint32_t resrvd3[ICP_QAT_FW_NUM_LONGWORDS_3];
26538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
26638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
26738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_auth_cd_ctrl_hdr {
26838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint32_t resrvd1;
26938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t resrvd2;
27038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t hash_flags;
27138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t hash_cfg_offset;
27238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t next_curr_id;
27338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t resrvd3;
27438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_prefix_sz;
27538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t final_sz;
27638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t inner_res_sz;
27738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t resrvd4;
27838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t inner_state1_sz;
27938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t inner_state2_offset;
28038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t inner_state2_sz;
28138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_config_offset;
28238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_state1_sz;
28338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_res_sz;
28438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_prefix_offset;
28538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
28638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
28738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_cipher_auth_cd_ctrl_hdr {
28838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t cipher_state_sz;
28938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t cipher_key_sz;
29038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t cipher_cfg_offset;
29138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t next_curr_id_cipher;
29238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t cipher_padding_sz;
29338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t hash_flags;
29438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t hash_cfg_offset;
29538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t next_curr_id_auth;
29638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t resrvd1;
29738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_prefix_sz;
29838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t final_sz;
29938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t inner_res_sz;
30038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t resrvd2;
30138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t inner_state1_sz;
30238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t inner_state2_offset;
30338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t inner_state2_sz;
30438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_config_offset;
30538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_state1_sz;
30638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_res_sz;
30738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t outer_prefix_offset;
30838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
30938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
31038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_AUTH_HDR_FLAG_DO_NESTED 1
31138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_AUTH_HDR_FLAG_NO_NESTED 0
31238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CCM_GCM_AAD_SZ_MAX	240
31338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_HASH_REQUEST_PARAMETERS_OFFSET \
31438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	(sizeof(struct icp_qat_fw_la_cipher_req_params_t))
31538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPHER_REQUEST_PARAMETERS_OFFSET (0)
31638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
31738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_la_cipher_req_params {
31838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint32_t cipher_offset;
31938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint32_t cipher_length;
32038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	union {
32138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		uint32_t cipher_IV_array[ICP_QAT_FW_NUM_LONGWORDS_4];
32238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		struct {
32338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint64_t cipher_IV_ptr;
32438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk			uint64_t resrvd1;
32538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		} s;
32638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	} u;
32738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
32838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
32938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_la_auth_req_params {
33038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint32_t auth_off;
33138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint32_t auth_len;
33238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	union {
33338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		uint64_t auth_partial_st_prefix;
33438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		uint64_t aad_adr;
33538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	} u1;
33638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint64_t auth_res_addr;
33738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	union {
33838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		uint8_t inner_prefix_sz;
33938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		uint8_t aad_sz;
34038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	} u2;
34138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t resrvd1;
34238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t hash_state_sz;
34338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t auth_res_sz;
34438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk} __packed;
34538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
34638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_la_auth_req_params_resrvd_flds {
34738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint32_t resrvd[ICP_QAT_FW_NUM_LONGWORDS_6];
34838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	union {
34938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		uint8_t inner_prefix_sz;
35038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk		uint8_t aad_sz;
35138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	} u2;
35238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint8_t resrvd1;
35338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint16_t resrvd2;
35438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
35538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
35638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Strukstruct icp_qat_fw_la_resp {
35738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	struct icp_qat_fw_comn_resp_hdr comn_resp;
35838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint64_t opaque_data;
35938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	uint32_t resrvd[ICP_QAT_FW_NUM_LONGWORDS_4];
36038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk};
36153275baa0368945ba4f385f2e41918bedd847dceTadeusz Struk
36238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPHER_NEXT_ID_GET(cd_ctrl_hdr_t) \
36338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((((cd_ctrl_hdr_t)->next_curr_id_cipher) & \
36438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	  ICP_QAT_FW_COMN_NEXT_ID_MASK) >> (ICP_QAT_FW_COMN_NEXT_ID_BITPOS))
36538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
36638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPHER_NEXT_ID_SET(cd_ctrl_hdr_t, val) \
36738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk{ (cd_ctrl_hdr_t)->next_curr_id_cipher = \
36838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((((cd_ctrl_hdr_t)->next_curr_id_cipher) \
36938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	& ICP_QAT_FW_COMN_CURR_ID_MASK) | \
37038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((val << ICP_QAT_FW_COMN_NEXT_ID_BITPOS) \
37138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	& ICP_QAT_FW_COMN_NEXT_ID_MASK)) }
37238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
37338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPHER_CURR_ID_GET(cd_ctrl_hdr_t) \
37438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	(((cd_ctrl_hdr_t)->next_curr_id_cipher) \
37538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	& ICP_QAT_FW_COMN_CURR_ID_MASK)
37638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
37738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_CIPHER_CURR_ID_SET(cd_ctrl_hdr_t, val) \
37838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk{ (cd_ctrl_hdr_t)->next_curr_id_cipher = \
37938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((((cd_ctrl_hdr_t)->next_curr_id_cipher) \
38038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	& ICP_QAT_FW_COMN_NEXT_ID_MASK) | \
38138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((val) & ICP_QAT_FW_COMN_CURR_ID_MASK)) }
38238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
38338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_AUTH_NEXT_ID_GET(cd_ctrl_hdr_t) \
38438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((((cd_ctrl_hdr_t)->next_curr_id_auth) & ICP_QAT_FW_COMN_NEXT_ID_MASK) \
38538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	>> (ICP_QAT_FW_COMN_NEXT_ID_BITPOS))
38638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
38738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_AUTH_NEXT_ID_SET(cd_ctrl_hdr_t, val) \
38838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk{ (cd_ctrl_hdr_t)->next_curr_id_auth = \
38938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((((cd_ctrl_hdr_t)->next_curr_id_auth) \
39038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	& ICP_QAT_FW_COMN_CURR_ID_MASK) | \
39138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((val << ICP_QAT_FW_COMN_NEXT_ID_BITPOS) \
39238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	& ICP_QAT_FW_COMN_NEXT_ID_MASK)) }
39338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
39438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_AUTH_CURR_ID_GET(cd_ctrl_hdr_t) \
39538154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	(((cd_ctrl_hdr_t)->next_curr_id_auth) \
39638154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	& ICP_QAT_FW_COMN_CURR_ID_MASK)
39738154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
39838154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#define ICP_QAT_FW_AUTH_CURR_ID_SET(cd_ctrl_hdr_t, val) \
39938154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk{ (cd_ctrl_hdr_t)->next_curr_id_auth = \
40038154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((((cd_ctrl_hdr_t)->next_curr_id_auth) \
40138154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	& ICP_QAT_FW_COMN_NEXT_ID_MASK) | \
40238154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk	((val) & ICP_QAT_FW_COMN_CURR_ID_MASK)) }
40338154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk
40438154e65ce258196c411fc5385eaa13c2fa0eab2Tadeusz Struk#endif
405