The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* SPDX-License-Identifier: BSD-3-Clause */
    2 /* Copyright(c) 2007-2022 Intel Corporation */
    3 /* $FreeBSD$ */
    4 
    5 /**
    6  *****************************************************************************
    7  * @file lac_sym_qat.h
    8  *
    9  * @defgroup LacSymQat  Symmetric QAT
   10  *
   11  * @ingroup LacSym
   12  *
   13  * Interfaces for populating the qat structures for a symmetric operation
   14  *
   15  * @lld_start
   16  *
   17  * @lld_overview
   18  * This file documents the interfaces for populating the qat structures
   19  * that are common for all symmetric operations.
   20  *
   21  * @lld_dependencies
   22  * - \ref LacSymQatHash "Hash QAT Comms" Sym Qat commons for Hash
   23  * - \ref LacSymQat_Cipher "Cipher QAT Comms" Sym Qat commons for Cipher
   24  * - OSAL: logging
   25  * - \ref LacMem "Memory" - Inline memory functions
   26  *
   27  * @lld_initialisation
   28  * This component is initialied during the LAC initialisation sequence. It
   29  * is called by the Symmetric Initialisation function.
   30  *
   31  * @lld_module_algorithms
   32  *
   33  * @lld_process_context
   34  * Refer to \ref LacHash "Hash" and \ref LacCipher "Cipher" for sequence
   35  * diagrams to see their interactions with this code.
   36  *
   37  *
   38  * @lld_end
   39  *
   40  *****************************************************************************/
   41 
   42 /*****************************************************************************/
   43 
   44 #ifndef LAC_SYM_QAT_H
   45 #define LAC_SYM_QAT_H
   46 
   47 /*
   48 ******************************************************************************
   49 * Include public/global header files
   50 ******************************************************************************
   51 */
   52 
   53 #include "cpa.h"
   54 #include "cpa_cy_sym.h"
   55 #include "icp_accel_devices.h"
   56 #include "icp_qat_fw_la.h"
   57 #include "icp_qat_hw.h"
   58 #include "lac_session.h"
   59 #include "sal_qat_cmn_msg.h"
   60 #include "lac_common.h"
   61 
   62 /*
   63 *******************************************************************************
   64 * Include private header files
   65 *******************************************************************************
   66 */
   67 
   68 #define LAC_SYM_DEFAULT_QAT_PTR_TYPE QAT_COMN_PTR_TYPE_SGL
   69 #define LAC_SYM_DP_QAT_PTR_TYPE QAT_COMN_PTR_TYPE_FLAT
   70 #define LAC_SYM_KEY_QAT_PTR_TYPE QAT_COMN_PTR_TYPE_FLAT
   71 /**< @ingroup LacSymQat
   72  * LAC SYM Source & Destination buffer type (FLAT/SGL) */
   73 
   74 #define LAC_QAT_SYM_REQ_SZ_LW 32
   75 #define SYM_TX_MSG_SIZE (LAC_QAT_SYM_REQ_SZ_LW * LAC_LONG_WORD_IN_BYTES)
   76 #define NRBG_TX_MSG_SIZE (LAC_QAT_SYM_REQ_SZ_LW * LAC_LONG_WORD_IN_BYTES)
   77 
   78 #define LAC_QAT_SYM_RESP_SZ_LW 8
   79 #define SYM_RX_MSG_SIZE (LAC_QAT_SYM_RESP_SZ_LW * LAC_LONG_WORD_IN_BYTES)
   80 #define NRBG_RX_MSG_SIZE (LAC_QAT_SYM_RESP_SZ_LW * LAC_LONG_WORD_IN_BYTES)
   81 
   82 /**
   83  *******************************************************************************
   84  * @ingroup LacSymQat
   85  *      Symmetric crypto response handler
   86  *
   87  * @description
   88  *      This function handles the symmetric crypto response
   89  *
   90  * @param[in] trans_handle          transport handle (if ICP_QAT_DBG set)
   91  * @param[in] instanceHandle        void* pRespMsg
   92  *
   93  *
   94  *****************************************************************************/
   95 void LacSymQat_SymRespHandler(void *pRespMsg);
   96 
   97 /**
   98  *******************************************************************************
   99  * @ingroup LacSymQat
  100  *      Initialise the Symmetric QAT code
  101  *
  102  * @description
  103  *      This function initialises the symmetric QAT code
  104  *
  105  * @param[in] device                Pointer to the acceleration device
  106  *                                  structure
  107  * @param[in] instanceHandle        Instance handle
  108  * @param[in] numSymRequests        Number of concurrent requests a pair
  109  *                                  (tx and rx) need to support
  110  *
  111  * @return CPA_STATUS_SUCCESS       Operation successful
  112  * @return CPA_STATUS_FAIL          Initialisation Failed
  113  *
  114  *****************************************************************************/
  115 CpaStatus LacSymQat_Init(CpaInstanceHandle instanceHandle);
  116 
  117 /**
  118  *******************************************************************************
  119  * @ingroup LacSymQat
  120  *      Register a response handler function for a symmetric command ID
  121  *
  122  * @description
  123  *      This function registers a response handler function for a symmetric
  124  *      operation.
  125  *
  126  *      Note: This operation should only be performed once by the init function
  127  *      of a component. There is no corresponding deregister function, but
  128  *      registering a NULL function pointer will have the same effect. There
  129  *      MUST not be any requests in flight when calling this function.
  130  *
  131  * @param[in] lacCmdId          Command Id of operation
  132  * @param[in] pCbHandler        callback handler function
  133  *
  134  * @return None
  135  *
  136  *****************************************************************************/
  137 void LacSymQat_RespHandlerRegister(icp_qat_fw_la_cmd_id_t lacCmdId,
  138                                    sal_qat_resp_handler_func_t pCbHandler);
  139 
  140 /**
  141  ******************************************************************************
  142  * @ingroup LacSymQat
  143  *      get the QAT packet type
  144  *
  145  * @description
  146  *      This function returns the QAT packet type for a LAC packet type. The
  147  *      LAC packet type does not indicate a first partial. therefore for a
  148  *      partial request, the previous packet type needs to be looked at to
  149  *      figure out if the current partial request is a first partial.
  150  *
  151  *
  152  * @param[in] packetType          LAC Packet type
  153  * @param[in] packetState         LAC Previous Packet state
  154  * @param[out] pQatPacketType     Packet type using the QAT macros
  155  *
  156  * @return none
  157  *
  158  *****************************************************************************/
  159 void LacSymQat_packetTypeGet(CpaCySymPacketType packetType,
  160                              CpaCySymPacketType packetState,
  161                              Cpa32U *pQatPacketType);
  162 
  163 /**
  164  ******************************************************************************
  165  * @ingroup LacSymQat
  166  *      Populate the command flags based on the packet type
  167  *
  168  * @description
  169  *      This function populates the following flags in the Symmetric Crypto
  170  *      service_specif_flags field of the common header of the request:
  171  *          - LA_PARTIAL
  172  *          - UPDATE_STATE
  173  *          - RET_AUTH_RES
  174  *          - CMP_AUTH_RES
  175  *          based on looking at the input params listed below.
  176  *
  177  * @param[in] qatPacketType          Packet type
  178  * @param[in] cmdId                  Command Id
  179  * @param[in] cipherAlgorithm        Cipher Algorithm
  180  * @param[out] pLaCommandFlags       Command Flags
  181  *
  182  * @return none
  183  *
  184  *****************************************************************************/
  185 void LacSymQat_LaPacketCommandFlagSet(Cpa32U qatPacketType,
  186                                       icp_qat_fw_la_cmd_id_t laCmdId,
  187                                       CpaCySymCipherAlgorithm cipherAlgorithm,
  188                                       Cpa16U *pLaCommandFlags,
  189                                       Cpa32U ivLenInBytes);
  190 
  191 /**
  192  ******************************************************************************
  193  * @ingroup LacSymQat
  194  *
  195  *
  196  * @description
  197  *             defaults the common request service specific flags
  198  *
  199  * @param[in] laCmdFlags          Common request service specific flags
  200  * @param[in] symOp               Type of operation performed e.g hash or cipher
  201  *
  202  * @return none
  203  *
  204  *****************************************************************************/
  205 
  206 void LacSymQat_LaSetDefaultFlags(icp_qat_fw_serv_specif_flags *laCmdFlags,
  207                                  CpaCySymOp symOp);
  208 
  209 /**
  210  ******************************************************************************
  211  * @ingroup LacSymQat
  212  *
  213  *
  214  * @description
  215  *      this function defines whether the shared constants table can be used
  216  *      for a particular cipher and hash algorithm
  217  *
  218  * @param[in]   ptr to session
  219 
  220  * @param[in]   ptr to return offset into table for cipher config
  221 
  222  * @param[in]   ptr to return offset into table for hash config
  223  *
  224  * @return CPA_TRUE if Constants table is available for use, CPA_FALSE if it's
  225  *         not.
  226  *
  227  *****************************************************************************/
  228 CpaBoolean LacSymQat_UseSymConstantsTable(lac_session_desc_t *pSession,
  229                                           Cpa8U *cipherOffset,
  230                                           Cpa8U *hashOffset);
  231 
  232 /**
  233  ******************************************************************************
  234  * @ingroup LacSymQat
  235  *
  236  *
  237  * @description
  238  *      this function calculates whether the optimized content descriptor can
  239  *      be used for a particular chained cipher and hash algorithm
  240  *
  241  * @param[in]   ptr to session
  242  *
  243  * @return CPA_TRUE if optimized CD can be used, CPA_FALSE if it's not.
  244  *
  245  *****************************************************************************/
  246 CpaBoolean LacSymQat_UseOptimisedContentDesc(lac_session_desc_t *pSession);
  247 
  248 #endif /* LAC_SYM_QAT_H */

Cache object: 40a7f5e0d8982ef7a929729f169a848b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.