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/firmware/include/icp_qat_fw_comp.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  * @file icp_qat_fw_comp.h
    7  * @defgroup icp_qat_fw_comp ICP QAT FW Compression Service
    8  *           Interface Definitions
    9  * @ingroup icp_qat_fw
   10  * @description
   11  *      This file documents structs used to provide the interface to the
   12  *      Compression QAT FW service
   13  *
   14  *****************************************************************************/
   15 
   16 #ifndef _ICP_QAT_FW_COMP_H_
   17 #define _ICP_QAT_FW_COMP_H_
   18 
   19 /*
   20 ******************************************************************************
   21 * Include local header files
   22 ******************************************************************************
   23 */
   24 #include "icp_qat_fw.h"
   25 
   26 /**
   27  *****************************************************************************
   28  * @ingroup icp_qat_fw_comp
   29  *        Definition of the Compression command types
   30  * @description
   31  *        Enumeration which is used to indicate the ids of functions
   32  *        that are exposed by the Compression QAT FW service
   33  *
   34  *****************************************************************************/
   35 
   36 typedef enum {
   37         ICP_QAT_FW_COMP_CMD_STATIC = 0,
   38         /*!< Static Compress Request */
   39 
   40         ICP_QAT_FW_COMP_CMD_DYNAMIC = 1,
   41         /*!< Dynamic Compress Request */
   42 
   43         ICP_QAT_FW_COMP_CMD_DECOMPRESS = 2,
   44         /*!< Decompress Request */
   45 
   46         ICP_QAT_FW_COMP_CMD_DELIMITER
   47         /**< Delimiter type */
   48 
   49 } icp_qat_fw_comp_cmd_id_t;
   50 
   51 /*
   52  *  REQUEST FLAGS IN COMMON COMPRESSION
   53  *  In common message it is named as SERVICE SPECIFIC FLAGS.
   54  *
   55  *  + ===== + ------ + ------ + --- + -----  + ----- + ----- + -- + ---- + --- +
   56  *  |  Bit  | 15 - 8 |   7    |  6  |   5    |   4   |   3   |  2 |   1  |  0  |
   57  *  + ===== + ------ + -----  + --- + -----  + ----- + ----- + -- + ---- + --- +
   58  *  | Flags |  Rsvd  |  Dis.  |Resvd| Dis.   | Enh.  |Auto   |Sess| Rsvd | Rsvd|
   59  *  |       |  Bits  | secure |  =0 | Type0  | ASB   |Select |Type| = 0  | = 0 |
   60  *  |       |  = 0   |RAM use |     | Header |       |Best   |    |      |     |
   61  *  |       |        |as intmd|     |        |       |       |    |      |     |
   62  *  |       |        |  buf   |     |        |       |       |    |      |     |
   63  *  + ===== + ------ + -----  + --- + ------ + ----- + ----- + -- + ---- + --- +
   64  * Note: For QAT 2.0 Disable Secure Ram, DisType0 Header and Enhanced ASB bits
   65  * are don't care. i.e., these features are removed from QAT 2.0.
   66  */
   67 
   68 /** Flag usage */
   69 
   70 #define ICP_QAT_FW_COMP_STATELESS_SESSION 0
   71 /**< @ingroup icp_qat_fw_comp
   72  * Flag representing that session is stateless */
   73 
   74 #define ICP_QAT_FW_COMP_STATEFUL_SESSION 1
   75 /**< @ingroup icp_qat_fw_comp
   76  * Flag representing that session is stateful  */
   77 
   78 #define ICP_QAT_FW_COMP_NOT_AUTO_SELECT_BEST 0
   79 /**< @ingroup icp_qat_fw_comp
   80  * Flag representing that autoselectbest is NOT used */
   81 
   82 #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST 1
   83 /**< @ingroup icp_qat_fw_comp
   84  * Flag representing that autoselectbest is used */
   85 
   86 #define ICP_QAT_FW_COMP_NOT_ENH_AUTO_SELECT_BEST 0
   87 /**< @ingroup icp_qat_fw_comp
   88  * Flag representing that enhanced autoselectbest is NOT used */
   89 
   90 #define ICP_QAT_FW_COMP_ENH_AUTO_SELECT_BEST 1
   91 /**< @ingroup icp_qat_fw_comp
   92  * Flag representing that enhanced autoselectbest is used */
   93 
   94 #define ICP_QAT_FW_COMP_NOT_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 0
   95 /**< @ingroup icp_qat_fw_comp
   96  * Flag representing that enhanced autoselectbest is NOT used */
   97 
   98 #define ICP_QAT_FW_COMP_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 1
   99 /**< @ingroup icp_qat_fw_comp
  100  * Flag representing that enhanced autoselectbest is used */
  101 
  102 #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_USED_AS_INTMD_BUF 1
  103 /**< @ingroup icp_qat_fw_comp
  104  * Flag representing secure RAM from being used as
  105  * an intermediate buffer is DISABLED.  */
  106 
  107 #define ICP_QAT_FW_COMP_ENABLE_SECURE_RAM_USED_AS_INTMD_BUF 0
  108 /**< @ingroup icp_qat_fw_comp
  109  * Flag representing secure RAM from being used as
  110  * an intermediate buffer is ENABLED.  */
  111 
  112 /** Flag mask & bit position */
  113 
  114 #define ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS 2
  115 /**< @ingroup icp_qat_fw_comp
  116  * Starting bit position for the session type */
  117 
  118 #define ICP_QAT_FW_COMP_SESSION_TYPE_MASK 0x1
  119 /**< @ingroup icp_qat_fw_comp
  120  * One bit mask used to determine the session type */
  121 
  122 #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS 3
  123 /**< @ingroup icp_qat_fw_comp
  124  * Starting bit position for auto select best */
  125 
  126 #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK 0x1
  127 /**< @ingroup icp_qat_fw_comp
  128  * One bit mask for auto select best */
  129 
  130 #define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS 4
  131 /**< @ingroup icp_qat_fw_comp
  132  * Starting bit position for enhanced auto select best */
  133 
  134 #define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK 0x1
  135 /**< @ingroup icp_qat_fw_comp
  136  * One bit mask for enhanced auto select best */
  137 
  138 #define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS 5
  139 /**< @ingroup icp_qat_fw_comp
  140  * Starting bit position for disabling type zero header write back
  141    when Enhanced autoselect best is enabled. If set firmware does
  142    not return type0 store block header, only copies src to dest.
  143    (if best output is Type0) */
  144 
  145 #define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK 0x1
  146 /**< @ingroup icp_qat_fw_comp
  147  * One bit mask for auto select best */
  148 
  149 #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS 7
  150 /**< @ingroup icp_qat_fw_comp
  151  * Starting bit position for flag used to disable secure ram from
  152  * being used as an intermediate buffer. */
  153 
  154 #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK 0x1
  155 /**< @ingroup icp_qat_fw_comp
  156  * One bit mask for disable secure ram for use as an intermediate
  157    buffer.  */
  158 
  159 /**
  160  ******************************************************************************
  161  * @ingroup icp_qat_fw_comp
  162  *
  163  * @description
  164  * Macro used for the generation of the command flags for Compression Request.
  165  * This should always be used for the generation of the flags. No direct sets or
  166  * masks should be performed on the flags data
  167  *
  168  * @param sesstype         Session Type
  169  * @param autoselect       AutoSelectBest
  170  * @enhanced_asb           Enhanced AutoSelectBest
  171  * @ret_uncomp             RetUnCompressed
  172  * @secure_ram             Secure Ram usage
  173  *
  174  *********************************************************************************/
  175 #define ICP_QAT_FW_COMP_FLAGS_BUILD(                                           \
  176     sesstype, autoselect, enhanced_asb, ret_uncomp, secure_ram)                \
  177         (((sesstype & ICP_QAT_FW_COMP_SESSION_TYPE_MASK)                       \
  178           << ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS) |                            \
  179          ((autoselect & ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)                 \
  180           << ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS) |                        \
  181          ((enhanced_asb & ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK)      \
  182           << ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS) |               \
  183          ((ret_uncomp & ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK)    \
  184           << ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS) |           \
  185          ((secure_ram & ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK)  \
  186           << ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS))
  187 
  188 /**
  189 ******************************************************************************
  190 * @ingroup icp_qat_fw_comp
  191 *
  192 * @description
  193 * Macro used for the generation of the command flags for Compression Request.
  194 * This should always be used for the generation of the flags. No direct sets or
  195 * masks should be performed on the flags data
  196 *
  197 * @param sesstype         Session Type
  198 * @param autoselect       AutoSelectBest
  199 *                         Selects between compressed and uncompressed output.
  200 *                         No distinction made between static and dynamic
  201 *                         compressed data.
  202 *
  203 *********************************************************************************/
  204 #define ICP_QAT_FW_COMP_20_FLAGS_BUILD(sesstype, autoselect)                   \
  205         (((sesstype & ICP_QAT_FW_COMP_SESSION_TYPE_MASK)                       \
  206           << ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS) |                            \
  207          ((autoselect & ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)                 \
  208           << ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS))
  209 
  210 /**
  211  ******************************************************************************
  212  * @ingroup icp_qat_fw_comp
  213  *
  214  * @description
  215  *        Macro for extraction of the session type bit
  216  *
  217  * @param flags        Flags to extract the session type bit from
  218  *
  219  ******************************************************************************/
  220 #define ICP_QAT_FW_COMP_SESSION_TYPE_GET(flags)                                \
  221         QAT_FIELD_GET(flags,                                                   \
  222                       ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS,                     \
  223                       ICP_QAT_FW_COMP_SESSION_TYPE_MASK)
  224 
  225 /**
  226  ******************************************************************************
  227  * @ingroup icp_qat_fw_comp
  228  *
  229  * @description
  230  *        Macro for extraction of the autoSelectBest bit
  231  *
  232  * @param flags        Flags to extract the autoSelectBest bit from
  233  *
  234  ******************************************************************************/
  235 #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_GET(flags)                            \
  236         QAT_FIELD_GET(flags,                                                   \
  237                       ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS,                 \
  238                       ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)
  239 
  240 /**
  241  ******************************************************************************
  242  * @ingroup icp_qat_fw_comp
  243  *
  244  * @description
  245  *        Macro for extraction of the enhanced asb bit
  246  *
  247  * @param flags        Flags to extract the enhanced asb bit from
  248  *
  249  ******************************************************************************/
  250 #define ICP_QAT_FW_COMP_EN_ASB_GET(flags)                                      \
  251         QAT_FIELD_GET(flags,                                                   \
  252                       ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS,        \
  253                       ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK)
  254 
  255 /**
  256  ******************************************************************************
  257  * @ingroup icp_qat_fw_comp
  258  *
  259  * @description
  260  *        Macro for extraction of the RetUncomp bit
  261  *
  262  * @param flags        Flags to extract the Ret Uncomp bit from
  263  *
  264  ******************************************************************************/
  265 #define ICP_QAT_FW_COMP_RET_UNCOMP_GET(flags)                                  \
  266         QAT_FIELD_GET(flags,                                                   \
  267                       ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS,    \
  268                       ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK)
  269 
  270 /**
  271  ******************************************************************************
  272  * @ingroup icp_qat_fw_comp
  273  *
  274  * @description
  275  *        Macro for extraction of the Secure Ram usage bit
  276  *
  277  * @param flags        Flags to extract the Secure Ram usage from
  278  *
  279  ******************************************************************************/
  280 #define ICP_QAT_FW_COMP_SECURE_RAM_USE_GET(flags)                              \
  281         QAT_FIELD_GET(flags,                                                   \
  282                       ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS,  \
  283                       ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK)
  284 
  285 /**
  286  ******************************************************************************
  287  * @ingroup icp_qat_fw_comp
  288  *        Definition of the compression header cd pars block
  289  * @description
  290  *      Definition of the compression processing cd pars block.
  291  *      The structure is a service-specific implementation of the common
  292  *      structure.
  293  ******************************************************************************/
  294 typedef union icp_qat_fw_comp_req_hdr_cd_pars_s {
  295         /**< LWs 2-5 */
  296         struct {
  297                 uint64_t content_desc_addr;
  298                 /**< Address of the content descriptor */
  299 
  300                 uint16_t content_desc_resrvd1;
  301                 /**< Content descriptor reserved field */
  302 
  303                 uint8_t content_desc_params_sz;
  304                 /**< Size of the content descriptor parameters in quad words.
  305                  * These
  306                  * parameters describe the session setup configuration info for
  307                  * the
  308                  * slices that this request relies upon i.e. the configuration
  309                  * word and
  310                  * cipher key needed by the cipher slice if there is a request
  311                  * for
  312                  * cipher
  313                  * processing. */
  314 
  315                 uint8_t content_desc_hdr_resrvd2;
  316                 /**< Content descriptor reserved field */
  317 
  318                 uint32_t content_desc_resrvd3;
  319                 /**< Content descriptor reserved field */
  320         } s;
  321 
  322         struct {
  323                 uint32_t comp_slice_cfg_word[ICP_QAT_FW_NUM_LONGWORDS_2];
  324                 /* Compression Slice Config Word */
  325 
  326                 uint32_t content_desc_resrvd4;
  327                 /**< Content descriptor reserved field */
  328         } sl;
  329 
  330 } icp_qat_fw_comp_req_hdr_cd_pars_t;
  331 
  332 /**
  333  ******************************************************************************
  334  * @ingroup icp_qat_fw_comp
  335  *        Definition of the compression request parameters block
  336  * @description
  337  *      Definition of the compression processing request parameters block.
  338  *      The structure below forms part of the Compression + Translation
  339  *      Parameters block spanning LWs 14-21, thus differing from the common
  340  *      base Parameters block structure. Unused fields must be set to 0.
  341  *
  342  ******************************************************************************/
  343 typedef struct icp_qat_fw_comp_req_params_s {
  344         /**< LW 14 */
  345         uint32_t comp_len;
  346         /**< Size of input to process in bytes Note:  Only EOP requests can be
  347          * odd
  348          * for decompression. IA must set LSB to zero for odd sized intermediate
  349          * inputs */
  350 
  351         /**< LW 15 */
  352         uint32_t out_buffer_sz;
  353         /**< Size of output buffer in bytes */
  354 
  355         /**< LW 16 */
  356         union {
  357                 struct {
  358                         /** LW 16 */
  359                         uint32_t initial_crc32;
  360                         /**< CRC for processed bytes (input byte count) */
  361 
  362                         /** LW 17 */
  363                         uint32_t initial_adler;
  364                         /**< Adler for processed bytes (input byte count) */
  365                 } legacy;
  366 
  367                 /** LW 16-17 */
  368                 uint64_t crc_data_addr;
  369                 /**< CRC data structure pointer */
  370         } crc;
  371 
  372         /** LW 18 */
  373         uint32_t req_par_flags;
  374 
  375         /** LW 19 */
  376         uint32_t rsrvd;
  377 
  378 } icp_qat_fw_comp_req_params_t;
  379 
  380 /**
  381  ******************************************************************************
  382  * @ingroup icp_qat_fw_comp
  383  *
  384  * @description
  385  * Macro used for the generation of the request parameter flags.
  386  * This should always be used for the generation of the flags. No direct sets or
  387  * masks should be performed on the flags data
  388  *
  389  * @param sop                SOP Flag, 0 restore, 1 don't restore
  390  * @param eop                EOP Flag, 0 restore, 1 don't restore
  391  * @param bfinal             Set bfinal in this block or not
  392  * @param cnv                Whether internal CNV check is to be performed
  393  *                            * ICP_QAT_FW_COMP_NO_CNV
  394  *                            * ICP_QAT_FW_COMP_CNV
  395  * @param cnvnr              Whether internal CNV recovery is to be performed
  396  *                            * ICP_QAT_FW_COMP_NO_CNV_RECOVERY
  397  *                            * ICP_QAT_FW_COMP_CNV_RECOVERY
  398  * @param crc                CRC Mode Flag - 0 legacy, 1 crc data struct
  399  *
  400  *****************************************************************************/
  401 #define ICP_QAT_FW_COMP_REQ_PARAM_FLAGS_BUILD(                                 \
  402     sop, eop, bfinal, cnv, cnvnr, cnvdfx, crc)                                 \
  403         (((sop & ICP_QAT_FW_COMP_SOP_MASK) << ICP_QAT_FW_COMP_SOP_BITPOS) |    \
  404          ((eop & ICP_QAT_FW_COMP_EOP_MASK) << ICP_QAT_FW_COMP_EOP_BITPOS) |    \
  405          ((bfinal & ICP_QAT_FW_COMP_BFINAL_MASK)                               \
  406           << ICP_QAT_FW_COMP_BFINAL_BITPOS) |                                  \
  407          ((cnv & ICP_QAT_FW_COMP_CNV_MASK) << ICP_QAT_FW_COMP_CNV_BITPOS) |    \
  408          ((cnvnr & ICP_QAT_FW_COMP_CNVNR_MASK)                                 \
  409           << ICP_QAT_FW_COMP_CNVNR_BITPOS) |                                   \
  410          ((cnvdfx & ICP_QAT_FW_COMP_CNV_DFX_MASK)                              \
  411           << ICP_QAT_FW_COMP_CNV_DFX_BITPOS) |                                 \
  412          ((crc & ICP_QAT_FW_COMP_CRC_MODE_MASK)                                \
  413           << ICP_QAT_FW_COMP_CRC_MODE_BITPOS))
  414 
  415 /*
  416  *  REQUEST FLAGS IN REQUEST PARAMETERS COMPRESSION
  417  *
  418  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- + ---- + --- +
  419  * --- +
  420  *  |  Bit  | 31-20 |  19 |  18 |   17  | 16  |  15 - 7  |  6  |  5-2 |  1  |  0
  421  * |
  422  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- | ---- + --- +
  423  * --- +
  424  *  | Flags | Resvd | CRC |Resvd| CNVNR | CNV |Resvd Bits|BFin |Resvd | EOP |
  425  * SOP |
  426  *  |       | =0    | Mode| =0  |       |     | =0       |     | =0   |     | |
  427  *  |       |       |     |     |       |     |          |     |      |     | |
  428  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- | ---- + --- +
  429  * --- +
  430  */
  431 
  432 #define ICP_QAT_FW_COMP_NOT_SOP 0
  433 /**< @ingroup icp_qat_fw_comp
  434  * Flag representing that a request is NOT Start of Packet */
  435 
  436 #define ICP_QAT_FW_COMP_SOP 1
  437 /**< @ingroup icp_qat_fw_comp
  438  * Flag representing that a request IS Start of Packet */
  439 
  440 #define ICP_QAT_FW_COMP_NOT_EOP 0
  441 /**< @ingroup icp_qat_fw_comp
  442  * Flag representing that a request is NOT Start of Packet */
  443 
  444 #define ICP_QAT_FW_COMP_EOP 1
  445 /**< @ingroup icp_qat_fw_comp
  446  * Flag representing that a request IS End of Packet */
  447 
  448 #define ICP_QAT_FW_COMP_NOT_BFINAL 0
  449 /**< @ingroup icp_qat_fw_comp
  450  * Flag representing to indicate firmware this is not the last block */
  451 
  452 #define ICP_QAT_FW_COMP_BFINAL 1
  453 /**< @ingroup icp_qat_fw_comp
  454  * Flag representing to indicate firmware this is the last block */
  455 
  456 #define ICP_QAT_FW_COMP_NO_CNV 0
  457 /**< @ingroup icp_qat_fw_comp
  458  * Flag indicating that NO cnv check is to be performed on the request */
  459 
  460 #define ICP_QAT_FW_COMP_CNV 1
  461 /**< @ingroup icp_qat_fw_comp
  462  * Flag indicating that a cnv check IS to be performed on the request */
  463 
  464 #define ICP_QAT_FW_COMP_NO_CNV_RECOVERY 0
  465 /**< @ingroup icp_qat_fw_comp
  466  * Flag indicating that NO cnv recovery is to be performed on the request */
  467 
  468 #define ICP_QAT_FW_COMP_CNV_RECOVERY 1
  469 /**< @ingroup icp_qat_fw_comp
  470  * Flag indicating that a cnv recovery is to be performed on the request */
  471 
  472 #define ICP_QAT_FW_COMP_NO_CNV_DFX 0
  473 /**< @ingroup icp_qat_fw_comp
  474  * Flag indicating that NO CNV inject error is to be performed on the request */
  475 
  476 #define ICP_QAT_FW_COMP_CNV_DFX 1
  477 /**< @ingroup icp_qat_fw_comp
  478  * Flag indicating that CNV inject error is to be performed on the request */
  479 
  480 #define ICP_QAT_FW_COMP_CRC_MODE_LEGACY 0
  481 /**< @ingroup icp_qat_fw_comp
  482  * Flag representing to use the legacy CRC mode */
  483 
  484 #define ICP_QAT_FW_COMP_CRC_MODE_E2E 1
  485 /**< @ingroup icp_qat_fw_comp
  486  * Flag representing to use the external CRC data struct */
  487 
  488 #define ICP_QAT_FW_COMP_SOP_BITPOS 0
  489 /**< @ingroup icp_qat_fw_comp
  490  * Starting bit position for SOP */
  491 
  492 #define ICP_QAT_FW_COMP_SOP_MASK 0x1
  493 /**< @ingroup icp_qat_fw_comp
  494  * One bit mask used to determine SOP */
  495 
  496 #define ICP_QAT_FW_COMP_EOP_BITPOS 1
  497 /**< @ingroup icp_qat_fw_comp
  498  * Starting bit position for EOP */
  499 
  500 #define ICP_QAT_FW_COMP_EOP_MASK 0x1
  501 /**< @ingroup icp_qat_fw_comp
  502  * One bit mask used to determine EOP */
  503 
  504 #define ICP_QAT_FW_COMP_BFINAL_MASK 0x1
  505 /**< @ingroup icp_qat_fw_comp
  506  * One bit mask for the bfinal bit */
  507 
  508 #define ICP_QAT_FW_COMP_BFINAL_BITPOS 6
  509 /**< @ingroup icp_qat_fw_comp
  510  * Starting bit position for the bfinal bit */
  511 
  512 #define ICP_QAT_FW_COMP_CNV_MASK 0x1
  513 /**< @ingroup icp_qat_fw_comp
  514  * One bit mask for the CNV bit */
  515 
  516 #define ICP_QAT_FW_COMP_CNV_BITPOS 16
  517 /**< @ingroup icp_qat_fw_comp
  518  * Starting bit position for the CNV bit */
  519 
  520 #define ICP_QAT_FW_COMP_CNV_RECOVERY_MASK 0x1
  521 /**< @ingroup icp_qat_fw_comp
  522  * One bit mask for the CNV Recovery bit */
  523 
  524 #define ICP_QAT_FW_COMP_CNV_RECOVERY_BITPOS 17
  525 /**< @ingroup icp_qat_fw_comp
  526  * Starting bit position for the CNV Recovery bit */
  527 
  528 #define ICP_QAT_FW_COMP_CNVNR_MASK 0x1
  529 /**< @ingroup icp_qat_fw_comp
  530  * One bit mask for the CNV Recovery bit */
  531 
  532 #define ICP_QAT_FW_COMP_CNVNR_BITPOS 17
  533 /**< @ingroup icp_qat_fw_comp
  534  * Starting bit position for the CNV Recovery bit */
  535 
  536 #define ICP_QAT_FW_COMP_CNV_DFX_BITPOS 18
  537 /**< @ingroup icp_qat_fw_comp
  538  * Starting bit position for the CNV DFX bit */
  539 
  540 #define ICP_QAT_FW_COMP_CNV_DFX_MASK 0x1
  541 /**< @ingroup icp_qat_fw_comp
  542  * One bit mask for the CNV DFX bit */
  543 
  544 #define ICP_QAT_FW_COMP_CRC_MODE_BITPOS 19
  545 /**< @ingroup icp_qat_fw_comp
  546  * Starting bit position for CRC mode */
  547 
  548 #define ICP_QAT_FW_COMP_CRC_MODE_MASK 0x1
  549 /**< @ingroup icp_qat_fw_comp
  550  * One bit mask used to determine CRC mode */
  551 
  552 #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS 20
  553 /**< @ingroup icp_qat_fw_comp
  554  * Starting bit position for xxHash accumulate mode */
  555 
  556 #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK 0x1
  557 /**< @ingroup icp_qat_fw_comp
  558  * One bit mask used to determine xxHash accumulate mode */
  559 
  560 /**
  561  ******************************************************************************
  562  * @ingroup icp_qat_fw_comp
  563  *
  564  * @description
  565  *        Macro for extraction of the SOP bit
  566  *
  567  * @param flags        Flags to extract the SOP bit from
  568  *
  569  ******************************************************************************/
  570 #define ICP_QAT_FW_COMP_SOP_GET(flags)                                         \
  571         QAT_FIELD_GET(flags,                                                   \
  572                       ICP_QAT_FW_COMP_SOP_BITPOS,                              \
  573                       ICP_QAT_FW_COMP_SOP_MASK)
  574 
  575 /**
  576 ******************************************************************************
  577 * @ingroup icp_qat_fw_comp
  578 *
  579 * @description
  580 *        Macro for extraction of the EOP bit
  581 *
  582 * @param flags        Flags to extract the EOP bit from
  583 *
  584 *****************************************************************************/
  585 #define ICP_QAT_FW_COMP_EOP_GET(flags)                                         \
  586         QAT_FIELD_GET(flags,                                                   \
  587                       ICP_QAT_FW_COMP_EOP_BITPOS,                              \
  588                       ICP_QAT_FW_COMP_EOP_MASK)
  589 
  590 /**
  591  ******************************************************************************
  592  * @ingroup icp_qat_fw_comp
  593  *
  594  * @description
  595  *        Macro for extraction of the bfinal bit
  596  *
  597  * @param flags        Flags to extract the bfinal bit from
  598  *
  599  ******************************************************************************/
  600 #define ICP_QAT_FW_COMP_BFINAL_GET(flags)                                      \
  601         QAT_FIELD_GET(flags,                                                   \
  602                       ICP_QAT_FW_COMP_BFINAL_BITPOS,                           \
  603                       ICP_QAT_FW_COMP_BFINAL_MASK)
  604 
  605 /**
  606  ******************************************************************************
  607  * @ingroup icp_qat_fw_comp
  608  *
  609  * @description
  610  *        Macro for extraction of the CNV bit
  611  *
  612  * @param flags        Flag set containing the CNV flag
  613  *
  614  *****************************************************************************/
  615 #define ICP_QAT_FW_COMP_CNV_GET(flags)                                         \
  616         QAT_FIELD_GET(flags,                                                   \
  617                       ICP_QAT_FW_COMP_CNV_BITPOS,                              \
  618                       ICP_QAT_FW_COMP_CNV_MASK)
  619 
  620 /**
  621  ******************************************************************************
  622  * @ingroup icp_qat_fw_comp
  623  *
  624  * @description
  625  *        Macro for extraction of the crc mode bit
  626  *
  627  * @param flags        Flags to extract the crc mode bit from
  628  *
  629  ******************************************************************************/
  630 #define ICP_QAT_FW_COMP_CRC_MODE_GET(flags)                                    \
  631         QAT_FIELD_GET(flags,                                                   \
  632                       ICP_QAT_FW_COMP_CRC_MODE_BITPOS,                         \
  633                       ICP_QAT_FW_COMP_CRC_MODE_MASK)
  634 
  635 /**
  636  ******************************************************************************
  637  * @ingroup icp_qat_fw_comp
  638  *
  639  * @description
  640  *        Macro for extraction of the xxHash accumulate mode bit
  641  *
  642  * @param flags        Flags to extract the xxHash accumulate mode bit from
  643  *
  644  *****************************************************************************/
  645 #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_GET(flags)                             \
  646         QAT_FIELD_GET(flags,                                                   \
  647                       ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS,                  \
  648                       ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK)
  649 
  650 /**
  651  ******************************************************************************
  652  * @ingroup icp_qat_fw_comp
  653  *
  654  * @description
  655  *        Macro for setting of the xxHash accumulate mode bit
  656  *
  657  * @param flags        Flags to set the xxHash accumulate mode bit to
  658  * @param val          xxHash accumulate mode to set
  659  *
  660  *****************************************************************************/
  661 #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_SET(flags, val)                        \
  662         QAT_FIELD_SET(flags,                                                   \
  663                       val,                                                     \
  664                       ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS,                  \
  665                       ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK)
  666 
  667 /**
  668  ******************************************************************************
  669  * @ingroup icp_qat_fw_comp
  670  *        Definition of the translator request parameters block
  671  * @description
  672  *        Definition of the translator processing request parameters block
  673  *        The structure below forms part of the Compression + Translation
  674  *        Parameters block spanning LWs 20-21, thus differing from the common
  675  *        base Parameters block structure. Unused fields must be set to 0.
  676  *
  677  ******************************************************************************/
  678 typedef struct icp_qat_fw_xlt_req_params_s {
  679         /**< LWs 20-21 */
  680         uint64_t inter_buff_ptr;
  681         /**< This field specifies the physical address of an intermediate
  682          *  buffer SGL array. The array contains a pair of 64-bit
  683          *  intermediate buffer pointers to SGL buffer descriptors, one pair
  684          *  per CPM. Please refer to the CPM1.6 Firmware Interface HLD
  685          *  specification for more details.
  686          *  Placeholder for QAT2.0. */
  687 } icp_qat_fw_xlt_req_params_t;
  688 
  689 /**
  690  ******************************************************************************
  691  * @ingroup icp_qat_fw_comp
  692  *      Compression header of the content descriptor block
  693  * @description
  694  *      Definition of the service-specific compression control block header
  695  *      structure. The compression parameters are defined per algorithm
  696  *      and are located in the icp_qat_hw.h file. This compression
  697  *      cd block spans LWs 24-29, forming part of the compression + translation
  698  *      cd block, thus differing from the common base content descriptor
  699  *      structure.
  700  *
  701  ******************************************************************************/
  702 typedef struct icp_qat_fw_comp_cd_hdr_s {
  703         /**< LW 24 */
  704         uint16_t ram_bank_flags;
  705         /**< Flags to show which ram banks to access */
  706 
  707         uint8_t comp_cfg_offset;
  708         /**< Quad word offset from the content descriptor parameters address to
  709          * the
  710          * parameters for the compression processing */
  711 
  712         uint8_t next_curr_id;
  713         /**< This field combines the next and current id (each four bits) -
  714           * the next id is the most significant nibble.
  715           * Next Id:  Set to the next slice to pass the compressed data through.
  716           * Set to ICP_QAT_FW_SLICE_DRAM_WR if the data is not to go through
  717           * anymore slices after compression
  718           * Current Id: Initialised with the compression slice type */
  719 
  720         /**< LW 25 */
  721         uint32_t resrvd;
  722 
  723         /**< LWs 26-27 */
  724         uint64_t comp_state_addr;
  725         /**< Pointer to compression state */
  726 
  727         /**< LWs 28-29 */
  728         uint64_t ram_banks_addr;
  729         /**< Pointer to banks */
  730 
  731 } icp_qat_fw_comp_cd_hdr_t;
  732 
  733 #define COMP_CPR_INITIAL_CRC 0
  734 #define COMP_CPR_INITIAL_ADLER 1
  735 
  736 /**
  737  ******************************************************************************
  738  * @ingroup icp_qat_fw_comp
  739  *      Translator content descriptor header block
  740  * @description
  741  *      Definition of the structure used to describe the translation processing
  742  *      to perform on data. The translator parameters are defined per algorithm
  743  *      and are located in the icp_qat_hw.h file. This translation cd block
  744  *      spans LWs 30-31, forming part of the compression + translation cd block,
  745  *      thus differing from the common base content descriptor structure.
  746  *
  747  ******************************************************************************/
  748 typedef struct icp_qat_fw_xlt_cd_hdr_s {
  749         /**< LW 30 */
  750         uint16_t resrvd1;
  751         /**< Reserved field and assumed set to 0 */
  752 
  753         uint8_t resrvd2;
  754         /**< Reserved field and assumed set to 0 */
  755 
  756         uint8_t next_curr_id;
  757         /**< This field combines the next and current id (each four bits) -
  758           * the next id is the most significant nibble.
  759           * Next Id:  Set to the next slice to pass the translated data through.
  760           * Set to ICP_QAT_FW_SLICE_DRAM_WR if the data is not to go through
  761           * any more slices after compression
  762           * Current Id: Initialised with the translation slice type */
  763 
  764         /**< LW 31 */
  765         uint32_t resrvd3;
  766         /**< Reserved and should be set to zero, needed for quadword alignment
  767          */
  768 } icp_qat_fw_xlt_cd_hdr_t;
  769 
  770 /**
  771  ******************************************************************************
  772  * @ingroup icp_qat_fw_comp
  773  *        Definition of the common Compression QAT FW request
  774  * @description
  775  *        This is a definition of the full request structure for
  776  *        compression and translation.
  777  *
  778  ******************************************************************************/
  779 typedef struct icp_qat_fw_comp_req_s {
  780         /**< LWs 0-1 */
  781         icp_qat_fw_comn_req_hdr_t comn_hdr;
  782         /**< Common request header - for Service Command Id,
  783          * use service-specific Compression Command Id.
  784          * Service Specific Flags - use Compression Command Flags */
  785 
  786         /**< LWs 2-5 */
  787         icp_qat_fw_comp_req_hdr_cd_pars_t cd_pars;
  788         /**< Compression service-specific content descriptor field which points
  789          * either to a content descriptor parameter block or contains the
  790          * compression slice config word. */
  791 
  792         /**< LWs 6-13 */
  793         icp_qat_fw_comn_req_mid_t comn_mid;
  794         /**< Common request middle section */
  795 
  796         /**< LWs 14-19 */
  797         icp_qat_fw_comp_req_params_t comp_pars;
  798         /**< Compression request Parameters block */
  799 
  800         /**< LWs 20-21 */
  801         union {
  802                 icp_qat_fw_xlt_req_params_t xlt_pars;
  803                 /**< Translation request Parameters block */
  804 
  805                 uint32_t resrvd1[ICP_QAT_FW_NUM_LONGWORDS_2];
  806                 /**< Reserved if not used for translation */
  807         } u1;
  808 
  809         /**< LWs 22-23 */
  810         union {
  811                 uint32_t resrvd2[ICP_QAT_FW_NUM_LONGWORDS_2];
  812                 /**< Reserved - not used if Batch and Pack is disabled.*/
  813 
  814                 uint64_t bnp_res_table_addr;
  815                 /**< A generic pointer to the unbounded list of
  816                  * icp_qat_fw_resp_comp_pars_t members. This pointer is only
  817                  * used when the Batch and Pack is enabled. */
  818         } u3;
  819 
  820         /**< LWs 24-29 */
  821         icp_qat_fw_comp_cd_hdr_t comp_cd_ctrl;
  822         /**< Compression request content descriptor control
  823          * block header */
  824 
  825         /**< LWs 30-31 */
  826         union {
  827                 icp_qat_fw_xlt_cd_hdr_t xlt_cd_ctrl;
  828                 /**< Translation request content descriptor
  829                  * control block header */
  830 
  831                 uint32_t resrvd3[ICP_QAT_FW_NUM_LONGWORDS_2];
  832                 /**< Reserved if not used for translation */
  833         } u2;
  834 
  835 } icp_qat_fw_comp_req_t;
  836 
  837 /**
  838  ******************************************************************************
  839  * @ingroup icp_qat_fw_comp
  840  *        Definition of the compression QAT FW response descriptor
  841  *        parameters
  842  * @description
  843  *        This part of the response is specific to the compression response.
  844  *
  845  ******************************************************************************/
  846 typedef struct icp_qat_fw_resp_comp_pars_s {
  847         /**< LW 4 */
  848         uint32_t input_byte_counter;
  849         /**< Input byte counter */
  850 
  851         /**< LW 5 */
  852         uint32_t output_byte_counter;
  853         /**< Output byte counter */
  854 
  855         /** LW 6-7 */
  856         union {
  857                 struct {
  858                         /** LW 6 */
  859                         uint32_t curr_crc32;
  860                         /**< Current CRC32 */
  861 
  862                         /** LW 7 */
  863                         uint32_t curr_adler_32;
  864                         /**< Current Adler32 */
  865                 } legacy;
  866 
  867                 uint32_t resrvd[ICP_QAT_FW_NUM_LONGWORDS_2];
  868                 /**< Reserved if not in legacy mode */
  869         } crc;
  870 
  871 } icp_qat_fw_resp_comp_pars_t;
  872 
  873 /**
  874  *****************************************************************************
  875  * @ingroup icp_qat_fw_comp
  876  *       Definition of a single result metadata structure inside Batch and Pack
  877  *       results table array. It describes the output if single job in the
  878  *       batch and pack jobs.
  879  *       Total number of entries in BNP Out table shall be equal to total
  880  *       number of requests in the 'batch'.
  881  * @description
  882  *        This structure is specific to the compression output.
  883  *
  884  *****************************************************************************/
  885 typedef struct icp_qat_fw_comp_bnp_out_tbl_entry_s {
  886         /**< LWs 0-3 */
  887         icp_qat_fw_resp_comp_pars_t comp_out_pars;
  888         /**< Common output params (checksums and byte counts) */
  889 
  890         /**< LW 4 */
  891         icp_qat_fw_comn_error_t comn_error;
  892         /**< This field is overloaded to allow for one 8 bit common error field
  893          *   or two 8 bit error fields from compression and translator  */
  894 
  895         uint8_t comn_status;
  896         /**< Status field which specifies which slice(s) report an error */
  897 
  898         uint8_t reserved0;
  899         /**< Reserved, shall be set to zero */
  900 
  901         uint32_t reserved1;
  902         /**< Reserved, shall be set to zero,
  903         added for aligning entries to quadword boundary */
  904 } icp_qat_fw_comp_bnp_out_tbl_entry_t;
  905 
  906 /**
  907 *****************************************************************************
  908 * @ingroup icp_qat_fw_comp
  909 *      Supported modes for skipping regions of input or output buffers.
  910 *
  911 * @description
  912 *      This enumeration lists the supported modes for skipping regions of
  913 *      input or output buffers.
  914 *
  915 *****************************************************************************/
  916 typedef enum icp_qat_fw_comp_bnp_skip_mode_s {
  917         ICP_QAT_FW_SKIP_DISABLED = 0,
  918         /**< Skip mode is disabled */
  919         ICP_QAT_FW_SKIP_AT_START = 1,
  920         /**< Skip region is at the start of the buffer. */
  921         ICP_QAT_FW_SKIP_AT_END = 2,
  922         /**< Skip region is at the end of the buffer. */
  923         ICP_QAT_FW_SKIP_STRIDE = 3
  924         /**< Skip region occurs at regular intervals within the buffer.
  925          specifies the number of bytes between each
  926          skip region. */
  927 } icp_qat_fw_comp_bnp_skip_mode_t;
  928 
  929 /**
  930  *****************************************************************************
  931  * @ingroup icp_qat_fw_comn
  932  *      Flags describing the skip and compression job bahaviour. refer to flag
  933  *      definitions on skip mode and reset/flush types.
  934  *      Note: compression behaviour flags are ignored for destination skip info.
  935  * @description
  936  *      Definition of the common request flags.
  937  *
  938  *****************************************************************************/
  939 typedef uint8_t icp_qat_fw_comp_bnp_flags_t;
  940 
  941 /**
  942  *****************************************************************************
  943  * @ingroup icp_qat_fw_comn
  944  *      Skip Region Data.
  945  * @description
  946  *      This structure contains data relating to configuring skip region
  947  *      behaviour. A skip region is a region of an input buffer that
  948  *      should be omitted from processing or a region that should be inserted
  949  *      into the output buffer.
  950  *
  951  *****************************************************************************/
  952 typedef struct icp_qat_fw_comp_bnp_skip_info_s {
  953         /**< LW 0 */
  954         uint16_t skip_length;
  955         /**<Number of bytes to skip when skip mode is enabled */
  956 
  957         /**< LW 1 */
  958         uint16_t stride_length;
  959         /**<Size of the stride between skip regions when skip mode is
  960          * enabled */
  961 
  962         /**< LW 2 */
  963         uint16_t firstSkipOffset;
  964         /**< Number of bytes to skip in a buffer before reading/writing the
  965          * input/output data. */
  966 
  967         /**< LWs 3 */
  968         icp_qat_fw_comp_bnp_flags_t bnp_flags;
  969         /**< Translation request Parameters block */
  970 
  971         uint8_t resrvd1;
  972         /**< Reserved if not used for translation */
  973 
  974 } icp_qat_fw_comp_bnp_skip_info_t;
  975 
  976 /**
  977  *****************************************************************************
  978  * @ingroup icp_qat_fw_comn
  979  *      Batch and Pack operation header.
  980  * @description
  981  *      This structure contains address of the next bnp op data, and the
  982  *      length of the compression operation.
  983  *****************************************************************************/
  984 typedef struct icp_qat_fw_comp_bnp_op_header_s {
  985         /**< LW 0*/
  986         uint64_t next_opdata_addr;
  987         /**< Physical pointer to the Address of the next bnp op data structure.
  988         */
  989 
  990         /**< LW 2*/
  991         uint32_t comp_len;
  992         /**< Size of input to process in bytes  */
  993 
  994         /**< LW 3*/
  995         uint32_t resrvd1;
  996         /**< Reserved - Should be set to zero. */
  997 
  998 } icp_qat_fw_comp_bnp_op_header_t;
  999 
 1000 /**
 1001  *****************************************************************************
 1002  * @ingroup icp_qat_fw_comn
 1003  *      Batch and Pack operation op data structure.
 1004  * @description
 1005  *      This structure contains data relating to describing the skipping and
 1006  *      reset behaviour of source and skipping behaviour of destination buffer
 1007  *      associated with the input job where job has a single sgl vector, and
 1008  *      batch and pack might contain multiple jobs.
 1009  *      The structure also contains a pointer to the next 'job' described by
 1010  *      the next op_data structure.
 1011  *      Corresponding SGL Buffer shall physically follow this structure.
 1012  *****************************************************************************/
 1013 typedef struct icp_qat_fw_comp_bnp_op_data_s {
 1014         icp_qat_fw_comp_bnp_op_header_t bnp_op_header;
 1015         /**< Pointer to next Op data, and general information on the operation
 1016         */
 1017         icp_qat_fw_comp_bnp_skip_info_t src_bnp_skip_info;
 1018         /**< Optional skip regions in the input buffers */
 1019         icp_qat_fw_comp_bnp_skip_info_t dst_bnp_skip_info;
 1020         /**< Optional skip regions in the output buffers */
 1021 
 1022 } icp_qat_fw_comp_bnp_op_data_t;
 1023 
 1024 /**
 1025  ******************************************************************************
 1026  * @ingroup icp_qat_fw_comp
 1027  *        Definition of the Compression Eagle Tail Response
 1028  * @description
 1029  *        This is the response delivered to the ET rings by the Compression
 1030  *        QAT FW service for all commands
 1031  *
 1032  ******************************************************************************/
 1033 typedef struct icp_qat_fw_comp_resp_s {
 1034         /**< LWs 0-1 */
 1035         icp_qat_fw_comn_resp_hdr_t comn_resp;
 1036         /**< Common interface response format see icp_qat_fw.h */
 1037 
 1038         /**< LWs 2-3 */
 1039         uint64_t opaque_data;
 1040         /**< Opaque data passed from the request to the response message */
 1041 
 1042         /**< LWs 4-7 */
 1043         icp_qat_fw_resp_comp_pars_t comp_resp_pars;
 1044         /**< Common response params (checksums and byte counts) */
 1045 } icp_qat_fw_comp_resp_t;
 1046 
 1047 /* RAM Bank defines */
 1048 #define QAT_FW_COMP_BANK_FLAG_MASK 0x1
 1049 
 1050 #define QAT_FW_COMP_BANK_I_BITPOS 8
 1051 #define QAT_FW_COMP_BANK_H_BITPOS 7
 1052 #define QAT_FW_COMP_BANK_G_BITPOS 6
 1053 #define QAT_FW_COMP_BANK_F_BITPOS 5
 1054 #define QAT_FW_COMP_BANK_E_BITPOS 4
 1055 #define QAT_FW_COMP_BANK_D_BITPOS 3
 1056 #define QAT_FW_COMP_BANK_C_BITPOS 2
 1057 #define QAT_FW_COMP_BANK_B_BITPOS 1
 1058 #define QAT_FW_COMP_BANK_A_BITPOS 0
 1059 
 1060 /**
 1061  ******************************************************************************
 1062  * @ingroup icp_qat_fw_comp
 1063  *      Definition of the ram bank enabled values
 1064  * @description
 1065  *      Enumeration used to define whether a ram bank is enabled or not
 1066  *
 1067  ******************************************************************************/
 1068 typedef enum {
 1069         ICP_QAT_FW_COMP_BANK_DISABLED = 0, /*!< BANK DISABLED */
 1070         ICP_QAT_FW_COMP_BANK_ENABLED = 1,  /*!< BANK ENABLED */
 1071         ICP_QAT_FW_COMP_BANK_DELIMITER = 2 /**< Delimiter type */
 1072 } icp_qat_fw_comp_bank_enabled_t;
 1073 
 1074 /**
 1075  ******************************************************************************
 1076  * @ingroup icp_qat_fw_comp
 1077  *
 1078  * @description
 1079  *      Build the ram bank flags in the compression content descriptor
 1080  *      which specify which banks are used to save history
 1081  *
 1082  * @param bank_i_enable
 1083  * @param bank_h_enable
 1084  * @param bank_g_enable
 1085  * @param bank_f_enable
 1086  * @param bank_e_enable
 1087  * @param bank_d_enable
 1088  * @param bank_c_enable
 1089  * @param bank_b_enable
 1090  * @param bank_a_enable
 1091  ******************************************************************************/
 1092 #define ICP_QAT_FW_COMP_RAM_FLAGS_BUILD(bank_i_enable,                         \
 1093                                         bank_h_enable,                         \
 1094                                         bank_g_enable,                         \
 1095                                         bank_f_enable,                         \
 1096                                         bank_e_enable,                         \
 1097                                         bank_d_enable,                         \
 1098                                         bank_c_enable,                         \
 1099                                         bank_b_enable,                         \
 1100                                         bank_a_enable)                         \
 1101         ((((bank_i_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1102           << QAT_FW_COMP_BANK_I_BITPOS) |                                      \
 1103          (((bank_h_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1104           << QAT_FW_COMP_BANK_H_BITPOS) |                                      \
 1105          (((bank_g_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1106           << QAT_FW_COMP_BANK_G_BITPOS) |                                      \
 1107          (((bank_f_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1108           << QAT_FW_COMP_BANK_F_BITPOS) |                                      \
 1109          (((bank_e_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1110           << QAT_FW_COMP_BANK_E_BITPOS) |                                      \
 1111          (((bank_d_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1112           << QAT_FW_COMP_BANK_D_BITPOS) |                                      \
 1113          (((bank_c_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1114           << QAT_FW_COMP_BANK_C_BITPOS) |                                      \
 1115          (((bank_b_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1116           << QAT_FW_COMP_BANK_B_BITPOS) |                                      \
 1117          (((bank_a_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
 1118           << QAT_FW_COMP_BANK_A_BITPOS))
 1119 
 1120 /**
 1121  *****************************************************************************
 1122  * @ingroup icp_qat_fw_comp
 1123  *      Definition of the xxhash32 acc state buffer
 1124  * @description
 1125  *      This is data structure used in stateful lite for xxhash32
 1126  *
 1127  *****************************************************************************/
 1128 typedef struct xxhash_acc_state_buff_s {
 1129         /**< LW 0 */
 1130         uint32_t in_counter;
 1131         /**< Accumulated (total) consumed bytes. As oppose to the per request
 1132          * IBC in the response.*/
 1133 
 1134         /**< LW 1 */
 1135         uint32_t out_counter;
 1136         /**< OBC as in the response.*/
 1137 
 1138         /**< LW 2-5 */
 1139         uint32_t xxhash_state[4];
 1140         /**< Initial value is set by IA to the values stated in HAS.*/
 1141 
 1142         /**< LW 6-9 */
 1143         uint32_t clear_txt[4];
 1144         /**< Set to 0 for the first request.*/
 1145 } xxhash_acc_state_buff_t;
 1146 
 1147 #endif /* _ICP_QAT_FW_COMP_H_ */

Cache object: baf08be77351c9eadab53fbc05c5e9a0


[ 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.