1 /* SPDX-License-Identifier: BSD-3-Clause */ 2 /* Copyright(c) 2007-2022 Intel Corporation */ 3 4 /** 5 ***************************************************************************** 6 * @file lac_sym_qat_constants_table.h 7 * 8 * @ingroup LacSymQat 9 * 10 * API to be used for the CySym constants table. 11 * 12 *****************************************************************************/ 13 14 #ifndef LAC_SYM_QAT_CONSTANTS_TABLE_H 15 #define LAC_SYM_QAT_CONSTANTS_TABLE_H 16 17 #include "cpa.h" 18 #include "icp_qat_fw_la.h" 19 20 typedef struct lac_sym_qat_constants_s { 21 /* Note these arrays must match the tables in lac_sym_qat_constants.c 22 * icp_qat_hw_cipher_lookup_tbl and icp_qat_hw_auth_lookup_tbl */ 23 uint8_t cipher_offset[ICP_QAT_HW_CIPHER_DELIMITER] 24 [ICP_QAT_HW_CIPHER_MODE_DELIMITER][2][2]; 25 uint8_t auth_offset[ICP_QAT_HW_AUTH_ALGO_DELIMITER] 26 [ICP_QAT_HW_AUTH_MODE_DELIMITER][2]; 27 } lac_sym_qat_constants_t; 28 29 /** 30 ******************************************************************************* 31 * @ingroup LacSymQat 32 * LacSymQat_ConstantsInitLookupTables 33 * 34 * 35 * @description 36 * The SymCy constants table is 1K of static data which is passed down 37 * to the FW to be stored in SHRAM for use by the FW. 38 * This function populates the associated lookup tables which the IA 39 * driver uses. 40 * Where there is config data available in the constants table the lookup 41 * table stores the offset into the constants table. 42 * Where there's no suitable config data available in the constants table 43 * zero is stored in the lookup table. 44 * 45 * @return none 46 * 47 *****************************************************************************/ 48 void LacSymQat_ConstantsInitLookupTables(CpaInstanceHandle instanceHandle); 49 50 /** 51 ******************************************************************************* 52 * @ingroup LacSymQat 53 * LacSymQat_ConstantsGetCipherOffset 54 * 55 * @description 56 * This function looks up the cipher constants lookup array for 57 * a specific cipher algorithm, mode, direction and convert flag. 58 * If the lookup table value is zero then there's no suitable config data 59 * available in the constants table. 60 * If the value > zero, then there is config data available in the constants 61 * table which is stored in SHRAM for use by the FW. The value is the offset 62 * into the constants table, it is returned to the caller in poffset. 63 * 64 * 65 * @param[in] Cipher Algorithm 66 * @param[in] Cipher Mode 67 * @param[in] Direction - encrypt/decrypt 68 * @param[in] convert / no convert 69 * @param[out] offset into constants table 70 * 71 * @return none 72 * 73 *****************************************************************************/ 74 void LacSymQat_ConstantsGetCipherOffset(CpaInstanceHandle instanceHandle, 75 uint8_t algo, 76 uint8_t mode, 77 uint8_t direction, 78 uint8_t convert, 79 uint8_t *poffset); 80 81 /** 82 ******************************************************************************* 83 * @ingroup LacSymQat 84 * LacSymQat_ConstantsGetAuthOffset 85 * 86 * @description 87 * This function looks up the auth constants lookup array for 88 * a specific auth algorithm, mode, direction and convert flag. 89 * If the lookup table value is zero then there's no suitable config data 90 * available in the constants table. 91 * If the value > zero, then there is config data available in the constants 92 * table which is stored in SHRAM for use by the FW. The value is the offset 93 * into the constants table, it is returned to the caller in poffset. 94 * 95 * 96 * @param[in] auth Algorithm 97 * @param[in] auth Mode 98 * @param[in] nested / no nested 99 * @param[out] offset into constants table 100 * 101 * @return none 102 * 103 *****************************************************************************/ 104 void LacSymQat_ConstantsGetAuthOffset(CpaInstanceHandle instanceHandle, 105 uint8_t algo, 106 uint8_t mode, 107 uint8_t nested, 108 uint8_t *poffset); 109 110 #endif /* LAC_SYM_QAT_SHRAM_CONSTANTS_TABLE_H */ 111