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