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.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.h
    7  * @defgroup icp_qat_fw_comn ICP QAT FW Common Processing Definitions
    8  * @ingroup icp_qat_fw
    9  *
   10  * @description
   11  *      This file documents the common interfaces that the QAT FW running on
   12  *      the QAT AE exports. This common layer is used by a number of services
   13  *      to export content processing services.
   14  *
   15  *****************************************************************************/
   16 
   17 #ifndef _ICP_QAT_FW_H_
   18 #define _ICP_QAT_FW_H_
   19 
   20 /*
   21 * ==============================
   22 * General Notes on the Interface
   23 */
   24 
   25 /*
   26 *
   27 * ==============================
   28 *
   29 * Introduction
   30 *
   31 * Data movement and slice chaining
   32 *
   33 * Endianness
   34 *      - Unless otherwise stated, all structures are defined in LITTLE ENDIAN
   35 *        MODE
   36 *
   37 * Alignment
   38 *      - In general all data structures provided to a request should be aligned
   39 *      on the 64 byte boundary so as to allow optimal memory transfers. At the
   40 *      minimum they must be aligned to the 8 byte boundary
   41 *
   42 * Sizes
   43 *   Quad words = 8 bytes
   44 *
   45 * Terminology
   46 *
   47 * ==============================
   48 */
   49 
   50 /*
   51 ******************************************************************************
   52 * Include public/global header files
   53 ******************************************************************************
   54 */
   55 
   56 #include "icp_qat_hw.h"
   57 
   58 /* Big assumptions that both bitpos and mask are constants */
   59 #define QAT_FIELD_SET(flags, val, bitpos, mask)                                \
   60         (flags) = (((flags) & (~((mask) << (bitpos)))) |                       \
   61                    (((val) & (mask)) << (bitpos)))
   62 
   63 #define QAT_FIELD_GET(flags, bitpos, mask) (((flags) >> (bitpos)) & (mask))
   64 #define QAT_FLAG_SET(flags, val, bitpos)                                       \
   65         ((flags) = (((flags) & (~(1 << (bitpos)))) | (((val)&1) << (bitpos))))
   66 
   67 #define QAT_FLAG_CLEAR(flags, bitpos) (flags) = ((flags) & (~(1 << (bitpos))))
   68 
   69 #define QAT_FLAG_GET(flags, bitpos) (((flags) >> (bitpos)) & 1)
   70 
   71 /**< @ingroup icp_qat_fw_comn
   72  * Default request and response ring size in bytes */
   73 #define ICP_QAT_FW_REQ_DEFAULT_SZ 128
   74 #define ICP_QAT_FW_RESP_DEFAULT_SZ 32
   75 
   76 #define ICP_QAT_FW_COMN_ONE_BYTE_SHIFT 8
   77 #define ICP_QAT_FW_COMN_SINGLE_BYTE_MASK 0xFF
   78 
   79 /**< @ingroup icp_qat_fw_comn
   80  * Common Request - Block sizes definitions in multiples of individual long
   81  * words */
   82 #define ICP_QAT_FW_NUM_LONGWORDS_1 1
   83 #define ICP_QAT_FW_NUM_LONGWORDS_2 2
   84 #define ICP_QAT_FW_NUM_LONGWORDS_3 3
   85 #define ICP_QAT_FW_NUM_LONGWORDS_4 4
   86 #define ICP_QAT_FW_NUM_LONGWORDS_5 5
   87 #define ICP_QAT_FW_NUM_LONGWORDS_6 6
   88 #define ICP_QAT_FW_NUM_LONGWORDS_7 7
   89 #define ICP_QAT_FW_NUM_LONGWORDS_10 10
   90 #define ICP_QAT_FW_NUM_LONGWORDS_13 13
   91 
   92 /**< @ingroup icp_qat_fw_comn
   93  * Definition of the associated service Id for NULL service type.
   94  * Note: the response is expected to use ICP_QAT_FW_COMN_RESP_SERV_CPM_FW */
   95 #define ICP_QAT_FW_NULL_REQ_SERV_ID 1
   96 
   97 /**
   98  *****************************************************************************
   99  * @ingroup icp_qat_fw_comn
  100  *              Definition of the firmware interface service users, for
  101  *              responses.
  102  * @description
  103  *              Enumeration which is used to indicate the ids of the services
  104  *              for responses using the external firmware interfaces.
  105  *
  106  *****************************************************************************/
  107 
  108 typedef enum {
  109         ICP_QAT_FW_COMN_RESP_SERV_NULL,     /**< NULL service id type */
  110         ICP_QAT_FW_COMN_RESP_SERV_CPM_FW,   /**< CPM FW Service ID */
  111         ICP_QAT_FW_COMN_RESP_SERV_DELIMITER /**< Delimiter service id type */
  112 } icp_qat_fw_comn_resp_serv_id_t;
  113 
  114 /**
  115  *****************************************************************************
  116  * @ingroup icp_qat_fw_comn
  117  *              Definition of the request types
  118  * @description
  119  *              Enumeration which is used to indicate the ids of the request
  120  *              types used in each of the external firmware interfaces
  121  *
  122  *****************************************************************************/
  123 
  124 typedef enum {
  125         ICP_QAT_FW_COMN_REQ_NULL = 0,   /**< NULL request type */
  126         ICP_QAT_FW_COMN_REQ_CPM_FW_PKE = 3,  /**< CPM FW PKE Request */
  127         ICP_QAT_FW_COMN_REQ_CPM_FW_LA = 4,   /**< CPM FW Lookaside Request */
  128         ICP_QAT_FW_COMN_REQ_CPM_FW_DMA = 7,  /**< CPM FW DMA Request */
  129         ICP_QAT_FW_COMN_REQ_CPM_FW_COMP = 9, /**< CPM FW Compression Request */
  130         ICP_QAT_FW_COMN_REQ_DELIMITER   /**< End delimiter */
  131 
  132 } icp_qat_fw_comn_request_id_t;
  133 
  134 /* ========================================================================= */
  135 /*                           QAT FW REQUEST STRUCTURES                       */
  136 /* ========================================================================= */
  137 
  138 /**
  139  *****************************************************************************
  140  * @ingroup icp_qat_fw_comn
  141  *      Common request flags type
  142  *
  143  * @description
  144  *      Definition of the common request flags.
  145  *
  146  *****************************************************************************/
  147 typedef uint8_t icp_qat_fw_comn_flags;
  148 
  149 /**
  150  *****************************************************************************
  151  * @ingroup icp_qat_fw_comn
  152  *      Common request - Service specific flags type
  153  *
  154  * @description
  155  *      Definition of the common request service specific flags.
  156  *
  157  *****************************************************************************/
  158 typedef uint16_t icp_qat_fw_serv_specif_flags;
  159 
  160 /**
  161  *****************************************************************************
  162  * @ingroup icp_qat_fw_comn
  163  *      Common request - Extended service specific flags type
  164  *
  165  * @description
  166  *      Definition of the common request extended service specific flags.
  167  *
  168  *****************************************************************************/
  169 typedef uint8_t icp_qat_fw_ext_serv_specif_flags;
  170 
  171 /**
  172  *****************************************************************************
  173  * @ingroup icp_qat_fw_comn
  174  *      Definition of the common QAT FW request content descriptor field -
  175  *      points to the content descriptor parameters or itself contains service-
  176  *      specific data. Also specifies content descriptor parameter size.
  177  *      Contains reserved fields.
  178  * @description
  179  *      Common section of the request used across all of the services exposed
  180  *      by the QAT FW. Each of the services inherit these common fields
  181  *
  182  *****************************************************************************/
  183 typedef union icp_qat_fw_comn_req_hdr_cd_pars_s {
  184         /**< LWs 2-5 */
  185         struct {
  186                 uint64_t content_desc_addr;
  187                 /**< Address of the content descriptor */
  188 
  189                 uint16_t content_desc_resrvd1;
  190                 /**< Content descriptor reserved field */
  191 
  192                 uint8_t content_desc_params_sz;
  193                 /**< Size of the content descriptor parameters in quad words.
  194                  * These
  195                  * parameters describe the session setup configuration info for
  196                  * the
  197                  * slices that this request relies upon i.e. the configuration
  198                  * word and
  199                  * cipher key needed by the cipher slice if there is a request
  200                  * for
  201                  * cipher processing. */
  202 
  203                 uint8_t content_desc_hdr_resrvd2;
  204                 /**< Content descriptor reserved field */
  205 
  206                 uint32_t content_desc_resrvd3;
  207                 /**< Content descriptor reserved field */
  208         } s;
  209 
  210         struct {
  211                 uint32_t serv_specif_fields[ICP_QAT_FW_NUM_LONGWORDS_4];
  212 
  213         } s1;
  214 
  215 } icp_qat_fw_comn_req_hdr_cd_pars_t;
  216 
  217 /**
  218  *****************************************************************************
  219  * @ingroup icp_qat_fw_comn
  220  *      Definition of the common QAT FW request middle block.
  221  * @description
  222  *      Common section of the request used across all of the services exposed
  223  *      by the QAT FW. Each of the services inherit these common fields
  224  *
  225  *****************************************************************************/
  226 typedef struct icp_qat_fw_comn_req_mid_s {
  227         /**< LWs 6-13 */
  228         uint64_t opaque_data;
  229         /**< Opaque data passed unmodified from the request to response messages
  230          * by
  231          * firmware (fw) */
  232 
  233         uint64_t src_data_addr;
  234         /**< Generic definition of the source data supplied to the QAT AE. The
  235          * common flags are used to further describe the attributes of this
  236          * field */
  237 
  238         uint64_t dest_data_addr;
  239         /**< Generic definition of the destination data supplied to the QAT AE.
  240          * The
  241          * common flags are used to further describe the attributes of this
  242          * field */
  243 
  244         uint32_t src_length;
  245         /** < Length of source flat buffer incase src buffer
  246          * type is flat */
  247 
  248         uint32_t dst_length;
  249         /** < Length of source flat buffer incase dst buffer
  250          * type is flat */
  251 
  252 } icp_qat_fw_comn_req_mid_t;
  253 
  254 /**
  255  *****************************************************************************
  256  * @ingroup icp_qat_fw_comn
  257  *      Definition of the common QAT FW request content descriptor control
  258  *      block.
  259  *
  260  * @description
  261  *      Service specific section of the request used across all of the services
  262  *      exposed by the QAT FW. Each of the services populates this block
  263  *      uniquely. Refer to the service-specific header structures e.g.
  264  *      'icp_qat_fw_cipher_hdr_s' (for Cipher) etc.
  265  *
  266  *****************************************************************************/
  267 typedef struct icp_qat_fw_comn_req_cd_ctrl_s {
  268         /**< LWs 27-31 */
  269         uint32_t content_desc_ctrl_lw[ICP_QAT_FW_NUM_LONGWORDS_5];
  270 
  271 } icp_qat_fw_comn_req_cd_ctrl_t;
  272 
  273 /**
  274  *****************************************************************************
  275  * @ingroup icp_qat_fw_comn
  276  *      Definition of the common QAT FW request header.
  277  * @description
  278  *      Common section of the request used across all of the services exposed
  279  *      by the QAT FW. Each of the services inherit these common fields. The
  280  *      reserved field of 7 bits and the service command Id field are all
  281  *      service-specific fields, along with the service specific flags.
  282  *
  283  *****************************************************************************/
  284 typedef struct icp_qat_fw_comn_req_hdr_s {
  285         /**< LW0 */
  286         uint8_t resrvd1;
  287         /**< reserved field */
  288 
  289         uint8_t service_cmd_id;
  290         /**< Service Command Id  - this field is service-specific
  291          * Please use service-specific command Id here e.g.Crypto Command Id
  292          * or Compression Command Id etc. */
  293 
  294         uint8_t service_type;
  295         /**< Service type */
  296 
  297         uint8_t hdr_flags;
  298         /**< This represents a flags field for the Service Request.
  299          * The most significant bit is the 'valid' flag and the only
  300          * one used. All remaining bit positions are unused and
  301          * are therefore reserved and need to be set to 0. */
  302 
  303         /**< LW1 */
  304         icp_qat_fw_serv_specif_flags serv_specif_flags;
  305         /**< Common Request service-specific flags
  306          * e.g. Symmetric Crypto Command Flags */
  307 
  308         icp_qat_fw_comn_flags comn_req_flags;
  309         /**< Common Request Flags consisting of
  310          * - 6 reserved bits,
  311          * - 1 Content Descriptor field type bit and
  312          * - 1 Source/destination pointer type bit */
  313 
  314         icp_qat_fw_ext_serv_specif_flags extended_serv_specif_flags;
  315         /**< An extension of serv_specif_flags
  316          */
  317 } icp_qat_fw_comn_req_hdr_t;
  318 
  319 /**
  320  *****************************************************************************
  321  * @ingroup icp_qat_fw_comn
  322  *      Definition of the common QAT FW request parameter field.
  323  *
  324  * @description
  325  *      Service specific section of the request used across all of the services
  326  *      exposed by the QAT FW. Each of the services populates this block
  327  *      uniquely. Refer to service-specific header structures e.g.
  328  *      'icp_qat_fw_comn_req_cipher_rqpars_s' (for Cipher) etc.
  329  *
  330  *****************************************************************************/
  331 typedef struct icp_qat_fw_comn_req_rqpars_s {
  332         /**< LWs 14-26 */
  333         uint32_t serv_specif_rqpars_lw[ICP_QAT_FW_NUM_LONGWORDS_13];
  334 
  335 } icp_qat_fw_comn_req_rqpars_t;
  336 
  337 /**
  338  *****************************************************************************
  339  * @ingroup icp_qat_fw_comn
  340  *      Definition of the common request structure with service specific
  341  *      fields
  342  * @description
  343  *      This is a definition of the full qat request structure used by all
  344  *      services. Each service is free to use the service fields in its own
  345  *      way. This struct is useful as a message passing argument before the
  346  *      service contained within the request is determined.
  347  *
  348  *****************************************************************************/
  349 typedef struct icp_qat_fw_comn_req_s {
  350         /**< LWs 0-1 */
  351         icp_qat_fw_comn_req_hdr_t comn_hdr;
  352         /**< Common request header */
  353 
  354         /**< LWs 2-5 */
  355         icp_qat_fw_comn_req_hdr_cd_pars_t cd_pars;
  356         /**< Common Request content descriptor field which points either to a
  357          * content descriptor
  358          * parameter block or contains the service-specific data itself. */
  359 
  360         /**< LWs 6-13 */
  361         icp_qat_fw_comn_req_mid_t comn_mid;
  362         /**< Common request middle section */
  363 
  364         /**< LWs 14-26 */
  365         icp_qat_fw_comn_req_rqpars_t serv_specif_rqpars;
  366         /**< Common request service-specific parameter field */
  367 
  368         /**< LWs 27-31 */
  369         icp_qat_fw_comn_req_cd_ctrl_t cd_ctrl;
  370         /**< Common request content descriptor control block -
  371          * this field is service-specific */
  372 
  373 } icp_qat_fw_comn_req_t;
  374 
  375 /* ========================================================================= */
  376 /*                           QAT FW RESPONSE STRUCTURES                      */
  377 /* ========================================================================= */
  378 
  379 /**
  380  *****************************************************************************
  381  * @ingroup icp_qat_fw_comn
  382  *      Error code field
  383  *
  384  * @description
  385  *      Overloaded field with 8 bit common error field or two
  386  *      8 bit compression error fields for compression and translator slices
  387  *
  388  *****************************************************************************/
  389 typedef union icp_qat_fw_comn_error_s {
  390         struct {
  391                 uint8_t resrvd;
  392                 /**< 8 bit reserved field */
  393 
  394                 uint8_t comn_err_code;
  395                 /**< 8 bit common error code */
  396 
  397         } s;
  398         /**< Structure which is used for non-compression responses */
  399 
  400         struct {
  401                 uint8_t xlat_err_code;
  402                 /**< 8 bit translator error field */
  403 
  404                 uint8_t cmp_err_code;
  405                 /**< 8 bit compression error field */
  406 
  407         } s1;
  408         /** Structure which is used for compression responses */
  409 
  410 } icp_qat_fw_comn_error_t;
  411 
  412 /**
  413  *****************************************************************************
  414  * @ingroup icp_qat_fw_comn
  415  *      Definition of the common QAT FW response header.
  416  * @description
  417  *      This section of the response is common across all of the services
  418  *      that generate a firmware interface response
  419  *
  420  *****************************************************************************/
  421 typedef struct icp_qat_fw_comn_resp_hdr_s {
  422         /**< LW0 */
  423         uint8_t resrvd1;
  424         /**< Reserved field - this field is service-specific -
  425          * Note: The Response Destination Id has been removed
  426          * from first QWord */
  427 
  428         uint8_t service_id;
  429         /**< Service Id returned by service block */
  430 
  431         uint8_t response_type;
  432         /**< Response type - copied from the request to
  433          * the response message */
  434 
  435         uint8_t hdr_flags;
  436         /**< This represents a flags field for the Response.
  437          * Bit<7> = 'valid' flag
  438          * Bit<6> = 'CNV' flag indicating that CNV was executed
  439          *          on the current request
  440          * Bit<5> = 'CNVNR' flag indicating that a recovery happened
  441          *          on the current request following a CNV error
  442          * All remaining bits are unused and are therefore reserved.
  443          * They must to be set to 0.
  444          */
  445 
  446         /**< LW 1 */
  447         icp_qat_fw_comn_error_t comn_error;
  448         /**< This field is overloaded to allow for one 8 bit common error field
  449          *   or two 8 bit error fields from compression and translator  */
  450 
  451         uint8_t comn_status;
  452         /**< Status field which specifies which slice(s) report an error */
  453 
  454         uint8_t cmd_id;
  455         /**< Command Id - passed from the request to the response message */
  456 
  457 } icp_qat_fw_comn_resp_hdr_t;
  458 
  459 /**
  460  *****************************************************************************
  461  * @ingroup icp_qat_fw_comn
  462  *      Definition of the common response structure with service specific
  463  *      fields
  464  * @description
  465  *      This is a definition of the full qat response structure used by all
  466  *      services.
  467  *
  468  *****************************************************************************/
  469 typedef struct icp_qat_fw_comn_resp_s {
  470         /**< LWs 0-1 */
  471         icp_qat_fw_comn_resp_hdr_t comn_hdr;
  472         /**< Common header fields */
  473 
  474         /**< LWs 2-3 */
  475         uint64_t opaque_data;
  476         /**< Opaque data passed from the request to the response message */
  477 
  478         /**< LWs 4-7 */
  479         uint32_t resrvd[ICP_QAT_FW_NUM_LONGWORDS_4];
  480         /**< Reserved */
  481 
  482 } icp_qat_fw_comn_resp_t;
  483 
  484 /* ========================================================================= */
  485 /*                           MACRO DEFINITIONS                               */
  486 /* ========================================================================= */
  487 
  488 /*  Common QAT FW request header - structure of LW0
  489  *  + ===== + ------- + ----------- + ----------- + ----------- + -------- +
  490  *  |  Bit  |  31/30  |  29 - 24    |  21 - 16    |  15 - 8     |  7 - 0   |
  491  *  + ===== + ------- + ----------- + ----------- + ----------- + -------- +
  492  *  | Flags |  V/Gen  |   Reserved  | Serv Type   | Serv Cmd Id |  Rsv     |
  493  *  + ===== + ------- + ----------- + ----------- + ----------- + -------- +
  494  */
  495 
  496 /**< @ingroup icp_qat_fw_comn
  497  *  Definition of the setting of the header's valid flag */
  498 #define ICP_QAT_FW_COMN_REQ_FLAG_SET 1
  499 /**< @ingroup icp_qat_fw_comn
  500  *  Definition of the setting of the header's valid flag */
  501 #define ICP_QAT_FW_COMN_REQ_FLAG_CLR 0
  502 
  503 /**< @ingroup icp_qat_fw_comn
  504  * Macros defining the bit position and mask of the 'valid' flag, within the
  505  * hdr_flags field of LW0 (service request and response) */
  506 #define ICP_QAT_FW_COMN_VALID_FLAG_BITPOS 7
  507 #define ICP_QAT_FW_COMN_VALID_FLAG_MASK 0x1
  508 
  509 /**< @ingroup icp_qat_fw_comn
  510  * Macros defining the bit position and mask of the 'generation' flag, within
  511  * the hdr_flags field of LW0 (service request and response) */
  512 #define ICP_QAT_FW_COMN_GEN_FLAG_BITPOS 6
  513 #define ICP_QAT_FW_COMN_GEN_FLAG_MASK 0x1
  514 /**< @ingroup icp_qat_fw_comn
  515  *  The request is targeted for QAT2.0 */
  516 #define ICP_QAT_FW_COMN_GEN_2 1
  517 /**< @ingroup icp_qat_fw_comn
  518 *  The request is targeted for QAT1.x. QAT2.0 FW will return
  519    'unsupported request' if GEN1 request type is sent to QAT2.0 FW */
  520 #define ICP_QAT_FW_COMN_GEN_1 0
  521 
  522 #define ICP_QAT_FW_COMN_HDR_RESRVD_FLD_MASK 0x7F
  523 
  524 /*  Common QAT FW response header - structure of LW0
  525  *  + ===== + --- + --- + ----- + ----- + --------- + ----------- + ----- +
  526  *  |  Bit  | 31  | 30  |   29  | 28-24 |  21 - 16  |  15 - 8     |  7-0  |
  527  *  + ===== + --- + ----+ ----- + ----- + --------- + ----------- + ----- +
  528  *  | Flags |  V  | CNV | CNVNR | Rsvd  | Serv Type | Serv Cmd Id |  Rsvd |
  529  *  + ===== + --- + --- + ----- + ----- + --------- + ----------- + ----- + */
  530 /**< @ingroup icp_qat_fw_comn
  531  * Macros defining the bit position and mask of 'CNV' flag
  532  * within the hdr_flags field of LW0 (service response only) */
  533 #define ICP_QAT_FW_COMN_CNV_FLAG_BITPOS 6
  534 #define ICP_QAT_FW_COMN_CNV_FLAG_MASK 0x1
  535 
  536 /**< @ingroup icp_qat_fw_comn
  537  * Macros defining the bit position and mask of CNVNR flag
  538  * within the hdr_flags field of LW0 (service response only) */
  539 #define ICP_QAT_FW_COMN_CNVNR_FLAG_BITPOS 5
  540 #define ICP_QAT_FW_COMN_CNVNR_FLAG_MASK 0x1
  541 
  542 /**< @ingroup icp_qat_fw_comn
  543  * Macros defining the bit position and mask of Stored Blocks flag
  544  * within the hdr_flags field of LW0 (service response only)
  545  */
  546 #define ICP_QAT_FW_COMN_ST_BLK_FLAG_BITPOS 4
  547 #define ICP_QAT_FW_COMN_ST_BLK_FLAG_MASK 0x1
  548 
  549 /**
  550  ******************************************************************************
  551  * @ingroup icp_qat_fw_comn
  552  *
  553  * @description
  554  *      Macro for extraction of Service Type Field
  555  *
  556  * @param icp_qat_fw_comn_req_hdr_t  Structure 'icp_qat_fw_comn_req_hdr_t'
  557  *                                   to extract the Service Type Field
  558  *
  559  *****************************************************************************/
  560 #define ICP_QAT_FW_COMN_OV_SRV_TYPE_GET(icp_qat_fw_comn_req_hdr_t)             \
  561         icp_qat_fw_comn_req_hdr_t.service_type
  562 
  563 /**
  564  ******************************************************************************
  565  * @ingroup icp_qat_fw_comn
  566  *
  567  * @description
  568  *      Macro for setting of Service Type Field
  569  *
  570  * @param 'icp_qat_fw_comn_req_hdr_t' structure to set the Service
  571  *                                    Type Field
  572  * @param val    Value of the Service Type Field
  573  *
  574  *****************************************************************************/
  575 #define ICP_QAT_FW_COMN_OV_SRV_TYPE_SET(icp_qat_fw_comn_req_hdr_t, val)        \
  576         icp_qat_fw_comn_req_hdr_t.service_type = val
  577 
  578 /**
  579  ******************************************************************************
  580  * @ingroup icp_qat_fw_comn
  581  *
  582  * @description
  583  *      Macro for extraction of Service Command Id Field
  584  *
  585  * @param icp_qat_fw_comn_req_hdr_t  Structure 'icp_qat_fw_comn_req_hdr_t'
  586  *                                   to extract the Service Command Id Field
  587  *
  588  *****************************************************************************/
  589 #define ICP_QAT_FW_COMN_OV_SRV_CMD_ID_GET(icp_qat_fw_comn_req_hdr_t)           \
  590         icp_qat_fw_comn_req_hdr_t.service_cmd_id
  591 
  592 /**
  593  ******************************************************************************
  594  * @ingroup icp_qat_fw_comn
  595  *
  596  * @description
  597  *      Macro for setting of Service Command Id Field
  598  *
  599  * @param 'icp_qat_fw_comn_req_hdr_t' structure to set the
  600  *                                    Service Command Id Field
  601  * @param val    Value of the Service Command Id Field
  602  *
  603  *****************************************************************************/
  604 #define ICP_QAT_FW_COMN_OV_SRV_CMD_ID_SET(icp_qat_fw_comn_req_hdr_t, val)      \
  605         icp_qat_fw_comn_req_hdr_t.service_cmd_id = val
  606 
  607 /**
  608  ******************************************************************************
  609  * @ingroup icp_qat_fw_comn
  610  *
  611  * @description
  612  *      Extract the valid flag from the request or response's header flags.
  613  *
  614  * @param hdr_t  Request or Response 'hdr_t' structure to extract the valid bit
  615  *               from the  'hdr_flags' field.
  616  *
  617  *****************************************************************************/
  618 #define ICP_QAT_FW_COMN_HDR_VALID_FLAG_GET(hdr_t)                              \
  619         ICP_QAT_FW_COMN_VALID_FLAG_GET(hdr_t.hdr_flags)
  620 
  621 /**
  622  ******************************************************************************
  623  * @ingroup icp_qat_fw_comn
  624  *
  625  * @description
  626  *      Extract the CNVNR flag from the header flags in the response only.
  627  *
  628  * @param hdr_t  Response 'hdr_t' structure to extract the CNVNR bit
  629  *               from the  'hdr_flags' field.
  630  *
  631  *****************************************************************************/
  632 #define ICP_QAT_FW_COMN_HDR_CNVNR_FLAG_GET(hdr_flags)                          \
  633         QAT_FIELD_GET(hdr_flags,                                               \
  634                       ICP_QAT_FW_COMN_CNVNR_FLAG_BITPOS,                       \
  635                       ICP_QAT_FW_COMN_CNVNR_FLAG_MASK)
  636 
  637 /**
  638  ******************************************************************************
  639  * @ingroup icp_qat_fw_comn
  640  *
  641  * @description
  642  *      Extract the CNV flag from the header flags in the response only.
  643  *
  644  * @param hdr_t  Response 'hdr_t' structure to extract the CNV bit
  645  *               from the  'hdr_flags' field.
  646  *
  647  *****************************************************************************/
  648 #define ICP_QAT_FW_COMN_HDR_CNV_FLAG_GET(hdr_flags)                            \
  649         QAT_FIELD_GET(hdr_flags,                                               \
  650                       ICP_QAT_FW_COMN_CNV_FLAG_BITPOS,                         \
  651                       ICP_QAT_FW_COMN_CNV_FLAG_MASK)
  652 
  653 /**
  654  ******************************************************************************
  655  * @ingroup icp_qat_fw_comn
  656  *
  657  * @description
  658  *      Set the valid bit in the request's header flags.
  659  *
  660  * @param hdr_t  Request or Response 'hdr_t' structure to set the valid bit
  661  * @param val    Value of the valid bit flag.
  662  *
  663  *****************************************************************************/
  664 #define ICP_QAT_FW_COMN_HDR_VALID_FLAG_SET(hdr_t, val)                         \
  665         ICP_QAT_FW_COMN_VALID_FLAG_SET(hdr_t, val)
  666 
  667 /**
  668  ******************************************************************************
  669  * @ingroup icp_qat_fw_comn
  670  *
  671  * @description
  672  *      Common macro to extract the valid flag from the header flags field
  673  *      within the header structure (request or response).
  674  *
  675  * @param hdr_t  Structure (request or response) to extract the
  676  *               valid bit from the 'hdr_flags' field.
  677  *
  678  *****************************************************************************/
  679 #define ICP_QAT_FW_COMN_VALID_FLAG_GET(hdr_flags)                              \
  680         QAT_FIELD_GET(hdr_flags,                                               \
  681                       ICP_QAT_FW_COMN_VALID_FLAG_BITPOS,                       \
  682                       ICP_QAT_FW_COMN_VALID_FLAG_MASK)
  683 
  684 /**
  685  ******************************************************************************
  686  * @ingroup icp_qat_fw_comn
  687  *
  688  * @description
  689  *      Extract the Stored Block flag from the header flags in the
  690  *      response only.
  691  *
  692  * @param hdr_flags  Response 'hdr' structure to extract the
  693  *                   Stored Block bit from the 'hdr_flags' field.
  694  *
  695  *****************************************************************************/
  696 #define ICP_QAT_FW_COMN_HDR_ST_BLK_FLAG_GET(hdr_flags)                         \
  697         QAT_FIELD_GET(hdr_flags,                                               \
  698                       ICP_QAT_FW_COMN_ST_BLK_FLAG_BITPOS,                      \
  699                       ICP_QAT_FW_COMN_ST_BLK_FLAG_MASK)
  700 
  701 /**
  702  ******************************************************************************
  703  * @ingroup icp_qat_fw_comn
  704  *
  705  * @description
  706  *      Set the Stored Block bit in the response's header flags.
  707  *
  708  * @param hdr_t  Response 'hdr_t' structure to set the ST_BLK bit
  709  * @param val    Value of the ST_BLK bit flag.
  710  *
  711  *****************************************************************************/
  712 #define ICP_QAT_FW_COMN_HDR_ST_BLK_FLAG_SET(hdr_t, val)                        \
  713         QAT_FIELD_SET((hdr_t.hdr_flags),                                       \
  714                       (val),                                                   \
  715                       ICP_QAT_FW_COMN_ST_BLK_FLAG_BITPOS,                      \
  716                       ICP_QAT_FW_COMN_ST_BLK_FLAG_MASK)
  717 
  718 /**
  719  ******************************************************************************
  720  * @ingroup icp_qat_fw_comn
  721  *
  722  * @description
  723  *      Set the generation bit in the request's header flags.
  724  *
  725  * @param hdr_t  Request or Response 'hdr_t' structure to set the gen bit
  726  * @param val    Value of the generation bit flag.
  727  *
  728  *****************************************************************************/
  729 #define ICP_QAT_FW_COMN_HDR_GENERATION_FLAG_SET(hdr_t, val)                    \
  730         ICP_QAT_FW_COMN_GENERATION_FLAG_SET(hdr_t, val)
  731 
  732 /**
  733 ******************************************************************************
  734 * @ingroup icp_qat_fw_comn
  735 *
  736 * @description
  737 *      Common macro to set the generation bit in the common header
  738 *
  739 * @param hdr_t  Structure (request or response) containing the header
  740 *               flags field, to allow the generation bit to be set.
  741 * @param val    Value of the generation bit flag.
  742 *
  743 *****************************************************************************/
  744 #define ICP_QAT_FW_COMN_GENERATION_FLAG_SET(hdr_t, val)                        \
  745         QAT_FIELD_SET((hdr_t.hdr_flags),                                       \
  746                       (val),                                                   \
  747                       ICP_QAT_FW_COMN_GEN_FLAG_BITPOS,                         \
  748                       ICP_QAT_FW_COMN_GEN_FLAG_MASK)
  749 
  750 /**
  751 ******************************************************************************
  752 * @ingroup icp_qat_fw_comn
  753 *
  754 * @description
  755 *      Common macro to extract the generation flag from the header flags field
  756 *      within the header structure (request or response).
  757 *
  758 * @param hdr_t  Structure (request or response) to extract the
  759 *               generation bit from the 'hdr_flags' field.
  760 *
  761 *****************************************************************************/
  762 
  763 #define ICP_QAT_FW_COMN_HDR_GENERATION_FLAG_GET(hdr_flags)                     \
  764         QAT_FIELD_GET(hdr_flags,                                               \
  765                       ICP_QAT_FW_COMN_GEN_FLAG_BITPOS,                         \
  766                       ICP_QAT_FW_COMN_GEN_FLAG_MASK)
  767 /**
  768  ******************************************************************************
  769  * @ingroup icp_qat_fw_comn
  770  *
  771  * @description
  772  *      Common macro to extract the remaining reserved flags from the header
  773         flags field within the header structure (request or response).
  774  *
  775  * @param hdr_t  Structure (request or response) to extract the
  776  *               remaining bits from the 'hdr_flags' field (excluding the
  777  *               valid flag).
  778  *
  779  *****************************************************************************/
  780 #define ICP_QAT_FW_COMN_HDR_RESRVD_FLD_GET(hdr_flags)                          \
  781         (hdr_flags & ICP_QAT_FW_COMN_HDR_RESRVD_FLD_MASK)
  782 
  783 /**
  784  ******************************************************************************
  785  * @ingroup icp_qat_fw_comn
  786  *
  787  * @description
  788  *      Common macro to set the valid bit in the header flags field within
  789  *      the header structure (request or response).
  790  *
  791  * @param hdr_t  Structure (request or response) containing the header
  792  *               flags field, to allow the valid bit to be set.
  793  * @param val    Value of the valid bit flag.
  794  *
  795  *****************************************************************************/
  796 #define ICP_QAT_FW_COMN_VALID_FLAG_SET(hdr_t, val)                             \
  797         QAT_FIELD_SET((hdr_t.hdr_flags),                                       \
  798                       (val),                                                   \
  799                       ICP_QAT_FW_COMN_VALID_FLAG_BITPOS,                       \
  800                       ICP_QAT_FW_COMN_VALID_FLAG_MASK)
  801 
  802 /**
  803 ******************************************************************************
  804 * @ingroup icp_qat_fw_comn
  805 *
  806 * @description
  807 *      Macro that must be used when building the common header flags.
  808 *      Note that all bits reserved field bits 0-6 (LW0) need to be forced to 0.
  809 *
  810 * @param ptr   Value of the valid flag
  811 *****************************************************************************/
  812 
  813 #define ICP_QAT_FW_COMN_HDR_FLAGS_BUILD(valid)                                 \
  814         (((valid)&ICP_QAT_FW_COMN_VALID_FLAG_MASK)                             \
  815          << ICP_QAT_FW_COMN_VALID_FLAG_BITPOS)
  816 
  817 /*
  818  *  < @ingroup icp_qat_fw_comn
  819  *  Common Request Flags Definition
  820  *  The bit offsets below are within the flags field. These are NOT relative to
  821  *  the memory word. Unused fields e.g. reserved bits, must be zeroed.
  822  *
  823  *  + ===== + ------ + --- + --- + --- + --- + --- + --- + --- + --- +
  824  *  | Bits [15:8]    |  15 |  14 |  13 |  12 |  11 |  10 |  9  |  8  |
  825  *  + ===== + ------ + --- + --- + --- + --- + --- + --- + --- + --- +
  826  *  | Flags[15:8]    | Rsv | Rsv | Rsv | Rsv | Rsv | Rsv | Rsv | Rsv |
  827  *  + ===== + ------ + --- + --- + --- + --- + --- + --- + --- + --- +
  828  *  | Bits  [7:0]    |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
  829  *  + ===== + ------ + --- + --- + --- + --- + --- + --- + --- + --- +
  830  *  | Flags [7:0]    | Rsv | Rsv | Rsv | Rsv | Rsv | BnP | Cdt | Ptr |
  831  *  + ===== + ------ + --- + --- + --- + --- + --- + --- + --- + --- +
  832  */
  833 
  834 #define QAT_COMN_PTR_TYPE_BITPOS 0
  835 /**< @ingroup icp_qat_fw_comn
  836  * Common Request Flags - Starting bit position indicating
  837  * Src&Dst Buffer Pointer type  */
  838 
  839 #define QAT_COMN_PTR_TYPE_MASK 0x1
  840 /**< @ingroup icp_qat_fw_comn
  841  * Common Request Flags - One bit mask used to determine
  842  * Src&Dst Buffer Pointer type */
  843 
  844 #define QAT_COMN_CD_FLD_TYPE_BITPOS 1
  845 /**< @ingroup icp_qat_fw_comn
  846  * Common Request Flags - Starting bit position indicating
  847  * CD Field type  */
  848 
  849 #define QAT_COMN_CD_FLD_TYPE_MASK 0x1
  850 /**< @ingroup icp_qat_fw_comn
  851  * Common Request Flags - One bit mask used to determine
  852  * CD Field type */
  853 
  854 #define QAT_COMN_BNP_ENABLED_BITPOS 2
  855 /**< @ingroup icp_qat_fw_comn
  856  * Common Request Flags - Starting bit position indicating
  857  * the source buffer contains batch of requests. if this
  858  * bit is set, source buffer is type of Batch And Pack OpData List
  859  * and the Ptr Type Bit only applies to Destination buffer. */
  860 
  861 #define QAT_COMN_BNP_ENABLED_MASK 0x1
  862 /**< @ingroup icp_qat_fw_comn
  863  * Batch And Pack Enabled Flag Mask - One bit mask used to determine
  864  * the source buffer is in Batch and Pack OpData Link List Mode. */
  865 
  866 /* ========================================================================= */
  867 /*                                       Pointer Type Flag definitions       */
  868 /* ========================================================================= */
  869 #define QAT_COMN_PTR_TYPE_FLAT 0x0
  870 /**< @ingroup icp_qat_fw_comn
  871  * Constant value indicating Src&Dst Buffer Pointer type is flat
  872  * If Batch and Pack mode is enabled, only applies to Destination buffer.*/
  873 
  874 #define QAT_COMN_PTR_TYPE_SGL 0x1
  875 /**< @ingroup icp_qat_fw_comn
  876  * Constant value indicating Src&Dst Buffer Pointer type is SGL type
  877  * If Batch and Pack mode is enabled, only applies to Destination buffer.*/
  878 
  879 #define QAT_COMN_PTR_TYPE_BATCH 0x2
  880 /**< @ingroup icp_qat_fw_comn
  881  * Constant value indicating Src is a batch request
  882  * and Dst Buffer Pointer type is SGL type */
  883 
  884 /* ========================================================================= */
  885 /*                                       CD Field Flag definitions           */
  886 /* ========================================================================= */
  887 #define QAT_COMN_CD_FLD_TYPE_64BIT_ADR 0x0
  888 /**< @ingroup icp_qat_fw_comn
  889  * Constant value indicating CD Field contains 64-bit address */
  890 
  891 #define QAT_COMN_CD_FLD_TYPE_16BYTE_DATA 0x1
  892 /**< @ingroup icp_qat_fw_comn
  893  * Constant value indicating CD Field contains 16 bytes of setup data */
  894 
  895 /* ========================================================================= */
  896 /*                       Batch And Pack Enable/Disable Definitions           */
  897 /* ========================================================================= */
  898 #define QAT_COMN_BNP_ENABLED 0x1
  899 /**< @ingroup icp_qat_fw_comn
  900  * Constant value indicating Source buffer will point to Batch And Pack OpData
  901  * List */
  902 
  903 #define QAT_COMN_BNP_DISABLED 0x0
  904 /**< @ingroup icp_qat_fw_comn
  905  * Constant value indicating Source buffer will point to Batch And Pack OpData
  906  * List */
  907 
  908 /**
  909 ******************************************************************************
  910 * @ingroup icp_qat_fw_comn
  911 *
  912 * @description
  913 *      Macro that must be used when building the common request flags (for all
  914 *      requests but comp BnP).
  915 *      Note that all bits reserved field bits 2-15 (LW1) need to be forced to 0.
  916 *
  917 * @param ptr   Value of the pointer type flag
  918 * @param cdt   Value of the cd field type flag
  919 *****************************************************************************/
  920 #define ICP_QAT_FW_COMN_FLAGS_BUILD(cdt, ptr)                                  \
  921         ((((cdt)&QAT_COMN_CD_FLD_TYPE_MASK) << QAT_COMN_CD_FLD_TYPE_BITPOS) |  \
  922          (((ptr)&QAT_COMN_PTR_TYPE_MASK) << QAT_COMN_PTR_TYPE_BITPOS))
  923 
  924 /**
  925 ******************************************************************************
  926 * @ingroup icp_qat_fw_comn
  927 *
  928 * @description
  929 *      Macro that must be used when building the common request flags for comp
  930 *      BnP service.
  931 *      Note that all bits reserved field bits 3-15 (LW1) need to be forced to 0.
  932 *
  933 * @param ptr   Value of the pointer type flag
  934 * @param cdt   Value of the cd field type flag
  935 * @param bnp   Value of the bnp enabled flag
  936 *****************************************************************************/
  937 #define ICP_QAT_FW_COMN_FLAGS_BUILD_BNP(cdt, ptr, bnp)                         \
  938         ((((cdt)&QAT_COMN_CD_FLD_TYPE_MASK) << QAT_COMN_CD_FLD_TYPE_BITPOS) |  \
  939          (((ptr)&QAT_COMN_PTR_TYPE_MASK) << QAT_COMN_PTR_TYPE_BITPOS) |        \
  940          (((bnp)&QAT_COMN_BNP_ENABLED_MASK) << QAT_COMN_BNP_ENABLED_BITPOS))
  941 
  942 /**
  943  ******************************************************************************
  944  * @ingroup icp_qat_fw_comn
  945  *
  946  * @description
  947  *      Macro for extraction of the pointer type bit from the common flags
  948  *
  949  * @param flags      Flags to extract the pointer type bit from
  950  *
  951  *****************************************************************************/
  952 #define ICP_QAT_FW_COMN_PTR_TYPE_GET(flags)                                    \
  953         QAT_FIELD_GET(flags, QAT_COMN_PTR_TYPE_BITPOS, QAT_COMN_PTR_TYPE_MASK)
  954 
  955 /**
  956  ******************************************************************************
  957  * @ingroup icp_qat_fw_comn
  958  *
  959  * @description
  960  *      Macro for extraction of the cd field type bit from the common flags
  961  *
  962  * @param flags      Flags to extract the cd field type type bit from
  963  *
  964  *****************************************************************************/
  965 #define ICP_QAT_FW_COMN_CD_FLD_TYPE_GET(flags)                                 \
  966         QAT_FIELD_GET(flags,                                                   \
  967                       QAT_COMN_CD_FLD_TYPE_BITPOS,                             \
  968                       QAT_COMN_CD_FLD_TYPE_MASK)
  969 
  970 /**
  971  ******************************************************************************
  972  * @ingroup icp_qat_fw_comn
  973  *
  974  * @description
  975  *      Macro for extraction of the bnp field type bit from the common flags
  976  *
  977  * @param flags      Flags to extract the bnp field type type bit from
  978  *
  979  *****************************************************************************/
  980 #define ICP_QAT_FW_COMN_BNP_ENABLED_GET(flags)                                 \
  981         QAT_FIELD_GET(flags,                                                   \
  982                       QAT_COMN_BNP_ENABLED_BITPOS,                             \
  983                       QAT_COMN_BNP_ENABLED_MASK)
  984 
  985 /**
  986  ******************************************************************************
  987  * @ingroup icp_qat_fw_comn
  988  *
  989  * @description
  990  *      Macro for setting the pointer type bit in the common flags
  991  *
  992  * @param flags      Flags in which Pointer Type bit will be set
  993  * @param val        Value of the bit to be set in flags
  994  *
  995  *****************************************************************************/
  996 #define ICP_QAT_FW_COMN_PTR_TYPE_SET(flags, val)                               \
  997         QAT_FIELD_SET(flags,                                                   \
  998                       val,                                                     \
  999                       QAT_COMN_PTR_TYPE_BITPOS,                                \
 1000                       QAT_COMN_PTR_TYPE_MASK)
 1001 
 1002 /**
 1003  ******************************************************************************
 1004  * @ingroup icp_qat_fw_comn
 1005  *
 1006  * @description
 1007  *      Macro for setting the cd field type bit in the common flags
 1008  *
 1009  * @param flags      Flags in which Cd Field Type bit will be set
 1010  * @param val        Value of the bit to be set in flags
 1011  *
 1012  *****************************************************************************/
 1013 #define ICP_QAT_FW_COMN_CD_FLD_TYPE_SET(flags, val)                            \
 1014         QAT_FIELD_SET(flags,                                                   \
 1015                       val,                                                     \
 1016                       QAT_COMN_CD_FLD_TYPE_BITPOS,                             \
 1017                       QAT_COMN_CD_FLD_TYPE_MASK)
 1018 
 1019 /**
 1020  ******************************************************************************
 1021  * @ingroup icp_qat_fw_comn
 1022  *
 1023  * @description
 1024  *      Macro for setting the bnp field type bit in the common flags
 1025  *
 1026  * @param flags      Flags in which Bnp Field Type bit will be set
 1027  * @param val        Value of the bit to be set in flags
 1028  *
 1029  *****************************************************************************/
 1030 #define ICP_QAT_FW_COMN_BNP_ENABLE_SET(flags, val)                             \
 1031         QAT_FIELD_SET(flags,                                                   \
 1032                       val,                                                     \
 1033                       QAT_COMN_BNP_ENABLED_BITPOS,                             \
 1034                       QAT_COMN_BNP_ENABLED_MASK)
 1035 
 1036 /**
 1037  ******************************************************************************
 1038  * @ingroup icp_qat_fw_comn
 1039  *
 1040  * @description
 1041  *      Macros using the bit position and mask to set/extract the next
 1042  *      and current id nibbles within the next_curr_id field of the
 1043  *      content descriptor header block. Note that these are defined
 1044  *      in the common header file, as they are used by compression, cipher
 1045  *      and authentication.
 1046  *
 1047  * @param cd_ctrl_hdr_t      Content descriptor control block header pointer.
 1048  * @param val                Value of the field being set.
 1049  *
 1050  *****************************************************************************/
 1051 #define ICP_QAT_FW_COMN_NEXT_ID_BITPOS 4
 1052 #define ICP_QAT_FW_COMN_NEXT_ID_MASK 0xF0
 1053 #define ICP_QAT_FW_COMN_CURR_ID_BITPOS 0
 1054 #define ICP_QAT_FW_COMN_CURR_ID_MASK 0x0F
 1055 
 1056 #define ICP_QAT_FW_COMN_NEXT_ID_GET(cd_ctrl_hdr_t)                             \
 1057         ((((cd_ctrl_hdr_t)->next_curr_id) & ICP_QAT_FW_COMN_NEXT_ID_MASK) >>   \
 1058          (ICP_QAT_FW_COMN_NEXT_ID_BITPOS))
 1059 
 1060 #define ICP_QAT_FW_COMN_NEXT_ID_SET(cd_ctrl_hdr_t, val)                        \
 1061         ((cd_ctrl_hdr_t)->next_curr_id) =                                      \
 1062             ((((cd_ctrl_hdr_t)->next_curr_id) &                                \
 1063               ICP_QAT_FW_COMN_CURR_ID_MASK) |                                  \
 1064              ((val << ICP_QAT_FW_COMN_NEXT_ID_BITPOS) &                        \
 1065               ICP_QAT_FW_COMN_NEXT_ID_MASK))
 1066 
 1067 #define ICP_QAT_FW_COMN_CURR_ID_GET(cd_ctrl_hdr_t)                             \
 1068         (((cd_ctrl_hdr_t)->next_curr_id) & ICP_QAT_FW_COMN_CURR_ID_MASK)
 1069 
 1070 #define ICP_QAT_FW_COMN_CURR_ID_SET(cd_ctrl_hdr_t, val)                        \
 1071         ((cd_ctrl_hdr_t)->next_curr_id) =                                      \
 1072             ((((cd_ctrl_hdr_t)->next_curr_id) &                                \
 1073               ICP_QAT_FW_COMN_NEXT_ID_MASK) |                                  \
 1074              ((val)&ICP_QAT_FW_COMN_CURR_ID_MASK))
 1075 
 1076 /*
 1077  *  < @ingroup icp_qat_fw_comn
 1078  *  Common Status Field Definition  The bit offsets below are within the COMMON
 1079  *  RESPONSE status field, assumed to be 8 bits wide. In the case of the PKE
 1080  *  response (which follows the CPM 1.5 message format), the status field is 16
 1081  *  bits wide.
 1082  *  The status flags are contained within the most significant byte and align
 1083  *  with the diagram below. Please therefore refer to the service-specific PKE
 1084  *  header file for the appropriate macro definition to extract the PKE status
 1085  *  flag from the PKE response, which assumes that a word is passed to the
 1086  *  macro.
 1087  *  + ===== + ------ + --- + --- + ---- + ---- + -------- + ---- + ---------- +
 1088  *  |  Bit  |   7    |  6  |  5  |  4   |  3   |    2     |   1  |      0     |
 1089  *  + ===== + ------ + --- + --- + ---- + ---- + -------- + ---- + ---------- +
 1090  *  | Flags | Crypto | Pke | Cmp | Xlat | EOLB | UnSupReq | Rsvd | XltWaApply |
 1091  *  + ===== + ------ + --- + --- + ---- + ---- + -------- + ---- + ---------- +
 1092  * Note:
 1093  * For the service specific status bit definitions refer to service header files
 1094  * Eg. Crypto Status bit refers to Symmetric Crypto, Key Generation, and NRBG
 1095  * Requests' Status. Unused bits e.g. reserved bits need to have been forced to
 1096  * 0.
 1097  */
 1098 
 1099 #define QAT_COMN_RESP_CRYPTO_STATUS_BITPOS 7
 1100 /**< @ingroup icp_qat_fw_comn
 1101  * Starting bit position indicating Response for Crypto service Flag */
 1102 
 1103 #define QAT_COMN_RESP_CRYPTO_STATUS_MASK 0x1
 1104 /**< @ingroup icp_qat_fw_comn
 1105  * One bit mask used to determine Crypto status mask */
 1106 
 1107 #define QAT_COMN_RESP_PKE_STATUS_BITPOS 6
 1108 /**< @ingroup icp_qat_fw_comn
 1109  * Starting bit position indicating Response for PKE service Flag */
 1110 
 1111 #define QAT_COMN_RESP_PKE_STATUS_MASK 0x1
 1112 /**< @ingroup icp_qat_fw_comn
 1113  * One bit mask used to determine PKE status mask */
 1114 
 1115 #define QAT_COMN_RESP_CMP_STATUS_BITPOS 5
 1116 /**< @ingroup icp_qat_fw_comn
 1117  * Starting bit position indicating Response for Compression service Flag */
 1118 
 1119 #define QAT_COMN_RESP_CMP_STATUS_MASK 0x1
 1120 /**< @ingroup icp_qat_fw_comn
 1121  * One bit mask used to determine Compression status mask */
 1122 
 1123 #define QAT_COMN_RESP_XLAT_STATUS_BITPOS 4
 1124 /**< @ingroup icp_qat_fw_comn
 1125  * Starting bit position indicating Response for Xlat service Flag */
 1126 
 1127 #define QAT_COMN_RESP_XLAT_STATUS_MASK 0x1
 1128 /**< @ingroup icp_qat_fw_comn
 1129  * One bit mask used to determine Translator status mask */
 1130 
 1131 #define QAT_COMN_RESP_CMP_END_OF_LAST_BLK_BITPOS 3
 1132 /**< @ingroup icp_qat_fw_comn
 1133  * Starting bit position indicating the last block in a deflate stream for
 1134   the compression service Flag */
 1135 
 1136 #define QAT_COMN_RESP_CMP_END_OF_LAST_BLK_MASK 0x1
 1137 /**< @ingroup icp_qat_fw_comn
 1138  * One bit mask used to determine the last block in a deflate stream
 1139    status mask */
 1140 
 1141 #define QAT_COMN_RESP_UNSUPPORTED_REQUEST_BITPOS 2
 1142 /**< @ingroup icp_qat_fw_comn
 1143  * Starting bit position indicating when an unsupported service request Flag */
 1144 
 1145 #define QAT_COMN_RESP_UNSUPPORTED_REQUEST_MASK 0x1
 1146 /**< @ingroup icp_qat_fw_comn
 1147  * One bit mask used to determine the unsupported service request status mask */
 1148 
 1149 #define QAT_COMN_RESP_XLT_INV_APPLIED_BITPOS 0
 1150 /**< @ingroup icp_qat_fw_comn
 1151  * Bit position indicating that firmware detected an invalid translation during
 1152  * dynamic compression and took measures to overcome this
 1153  *
 1154  */
 1155 
 1156 #define QAT_COMN_RESP_XLT_INV_APPLIED_MASK 0x1
 1157 /**< @ingroup icp_qat_fw_comn
 1158  * One bit mask */
 1159 
 1160 /**
 1161  ******************************************************************************
 1162  * @description
 1163  *      Macro that must be used when building the status
 1164  *      for the common response
 1165  *
 1166  * @param crypto   Value of the Crypto Service status flag
 1167  * @param comp     Value of the Compression Service Status flag
 1168  * @param xlat     Value of the Xlator Status flag
 1169  * @param eolb     Value of the Compression End of Last Block Status flag
 1170  * @param unsupp   Value of the Unsupported Request flag
 1171  * @param xlt_inv  Value of the Invalid Translation flag
 1172  *****************************************************************************/
 1173 #define ICP_QAT_FW_COMN_RESP_STATUS_BUILD(                                     \
 1174     crypto, pke, comp, xlat, eolb, unsupp, xlt_inv)                            \
 1175         ((((crypto)&QAT_COMN_RESP_CRYPTO_STATUS_MASK)                          \
 1176           << QAT_COMN_RESP_CRYPTO_STATUS_BITPOS) |                             \
 1177          (((pke)&QAT_COMN_RESP_PKE_STATUS_MASK)                                \
 1178           << QAT_COMN_RESP_PKE_STATUS_BITPOS) |                                \
 1179          (((xlt_inv)&QAT_COMN_RESP_XLT_INV_APPLIED_MASK)                       \
 1180           << QAT_COMN_RESP_XLT_INV_APPLIED_BITPOS) |                           \
 1181          (((comp)&QAT_COMN_RESP_CMP_STATUS_MASK)                               \
 1182           << QAT_COMN_RESP_CMP_STATUS_BITPOS) |                                \
 1183          (((xlat)&QAT_COMN_RESP_XLAT_STATUS_MASK)                              \
 1184           << QAT_COMN_RESP_XLAT_STATUS_BITPOS) |                               \
 1185          (((eolb)&QAT_COMN_RESP_CMP_END_OF_LAST_BLK_MASK)                      \
 1186           << QAT_COMN_RESP_CMP_END_OF_LAST_BLK_BITPOS) |                       \
 1187          (((unsupp)&QAT_COMN_RESP_UNSUPPORTED_REQUEST_BITPOS)                  \
 1188           << QAT_COMN_RESP_UNSUPPORTED_REQUEST_MASK))
 1189 
 1190 /* ========================================================================= */
 1191 /*                                                                   GETTERS */
 1192 /* ========================================================================= */
 1193 /**
 1194  ******************************************************************************
 1195  * @ingroup icp_qat_fw_comn
 1196  *
 1197  * @description
 1198  *      Macro for extraction of the Crypto bit from the status
 1199  *
 1200  * @param status
 1201  *      Status to extract the status bit from
 1202  *
 1203  *****************************************************************************/
 1204 #define ICP_QAT_FW_COMN_RESP_CRYPTO_STAT_GET(status)                           \
 1205         QAT_FIELD_GET(status,                                                  \
 1206                       QAT_COMN_RESP_CRYPTO_STATUS_BITPOS,                      \
 1207                       QAT_COMN_RESP_CRYPTO_STATUS_MASK)
 1208 
 1209 /**
 1210  ******************************************************************************
 1211  * @ingroup icp_qat_fw_comn
 1212  *
 1213  * @description
 1214  *      Macro for extraction of the PKE bit from the status
 1215  *
 1216  * @param status
 1217  *      Status to extract the status bit from
 1218  *
 1219  *****************************************************************************/
 1220 #define ICP_QAT_FW_COMN_RESP_PKE_STAT_GET(status)                              \
 1221         QAT_FIELD_GET(status,                                                  \
 1222                       QAT_COMN_RESP_PKE_STATUS_BITPOS,                         \
 1223                       QAT_COMN_RESP_PKE_STATUS_MASK)
 1224 
 1225 /**
 1226  ******************************************************************************
 1227  * @ingroup icp_qat_fw_comn
 1228  *
 1229  * @description
 1230  *      Macro for extraction of the Compression bit from the status
 1231  *
 1232  * @param status
 1233  *      Status to extract the status bit from
 1234  *
 1235  *****************************************************************************/
 1236 #define ICP_QAT_FW_COMN_RESP_CMP_STAT_GET(status)                              \
 1237         QAT_FIELD_GET(status,                                                  \
 1238                       QAT_COMN_RESP_CMP_STATUS_BITPOS,                         \
 1239                       QAT_COMN_RESP_CMP_STATUS_MASK)
 1240 
 1241 /**
 1242  ******************************************************************************
 1243  * @ingroup icp_qat_fw_comn
 1244  *
 1245  * @description
 1246  *      Macro for extraction of the Translator bit from the status
 1247  *
 1248  * @param status
 1249  *      Status to extract the status bit from
 1250  *
 1251  *****************************************************************************/
 1252 #define ICP_QAT_FW_COMN_RESP_XLAT_STAT_GET(status)                             \
 1253         QAT_FIELD_GET(status,                                                  \
 1254                       QAT_COMN_RESP_XLAT_STATUS_BITPOS,                        \
 1255                       QAT_COMN_RESP_XLAT_STATUS_MASK)
 1256 
 1257 /**
 1258  ******************************************************************************
 1259  * @ingroup icp_qat_fw_comn
 1260  *
 1261  * @description
 1262  *      Macro for extraction of the Translation Invalid bit
 1263  *      from the status
 1264  *
 1265  * @param status
 1266  *      Status to extract the status bit from
 1267  *
 1268  *****************************************************************************/
 1269 #define ICP_QAT_FW_COMN_RESP_XLT_INV_APPLIED_GET(status)                       \
 1270         QAT_FIELD_GET(status,                                                  \
 1271                       QAT_COMN_RESP_XLT_INV_APPLIED_BITPOS,                    \
 1272                       QAT_COMN_RESP_XLT_INV_APPLIED_MASK)
 1273 
 1274 /**
 1275  ******************************************************************************
 1276  * @ingroup icp_qat_fw_comn
 1277  *
 1278  * @description
 1279  *      Macro for extraction of the end of compression block bit from the
 1280  *      status
 1281  *
 1282  * @param status
 1283  *      Status to extract the status bit from
 1284  *
 1285  *****************************************************************************/
 1286 #define ICP_QAT_FW_COMN_RESP_CMP_END_OF_LAST_BLK_FLAG_GET(status)              \
 1287         QAT_FIELD_GET(status,                                                  \
 1288                       QAT_COMN_RESP_CMP_END_OF_LAST_BLK_BITPOS,                \
 1289                       QAT_COMN_RESP_CMP_END_OF_LAST_BLK_MASK)
 1290 
 1291 /**
 1292  ******************************************************************************
 1293  * @ingroup icp_qat_fw_comn
 1294  *
 1295  * @description
 1296  *      Macro for extraction of the Unsupported request from the status
 1297  *
 1298  * @param status
 1299  *      Status to extract the status bit from
 1300  *
 1301  *****************************************************************************/
 1302 #define ICP_QAT_FW_COMN_RESP_UNSUPPORTED_REQUEST_STAT_GET(status)              \
 1303         QAT_FIELD_GET(status,                                                  \
 1304                       QAT_COMN_RESP_UNSUPPORTED_REQUEST_BITPOS,                \
 1305                       QAT_COMN_RESP_UNSUPPORTED_REQUEST_MASK)
 1306 
 1307 /* ========================================================================= */
 1308 /*                                        Status Flag definitions */
 1309 /* ========================================================================= */
 1310 
 1311 #define ICP_QAT_FW_COMN_STATUS_FLAG_OK 0
 1312 /**< @ingroup icp_qat_fw_comn
 1313  * Definition of successful processing of a request */
 1314 
 1315 #define ICP_QAT_FW_COMN_STATUS_FLAG_ERROR 1
 1316 /**< @ingroup icp_qat_fw_comn
 1317  * Definition of erroneous processing of a request */
 1318 
 1319 #define ICP_QAT_FW_COMN_STATUS_CMP_END_OF_LAST_BLK_FLAG_CLR 0
 1320 /**< @ingroup icp_qat_fw_comn
 1321  * Final Deflate block of a compression request not completed */
 1322 
 1323 #define ICP_QAT_FW_COMN_STATUS_CMP_END_OF_LAST_BLK_FLAG_SET 1
 1324 /**< @ingroup icp_qat_fw_comn
 1325  * Final Deflate block of a compression request completed */
 1326 
 1327 #define ERR_CODE_NO_ERROR 0
 1328 /**< Error Code constant value for no error  */
 1329 
 1330 #define ERR_CODE_INVALID_BLOCK_TYPE -1
 1331 /* Invalid block type (type == 3)*/
 1332 
 1333 #define ERR_CODE_NO_MATCH_ONES_COMP -2
 1334 /* Stored block length does not match one's complement */
 1335 
 1336 #define ERR_CODE_TOO_MANY_LEN_OR_DIS -3
 1337 /* Too many length or distance codes */
 1338 
 1339 #define ERR_CODE_INCOMPLETE_LEN -4
 1340 /* Code lengths codes incomplete */
 1341 
 1342 #define ERR_CODE_RPT_LEN_NO_FIRST_LEN -5
 1343 /* Repeat lengths with no first length */
 1344 
 1345 #define ERR_CODE_RPT_GT_SPEC_LEN -6
 1346 /* Repeat more than specified lengths */
 1347 
 1348 #define ERR_CODE_INV_LIT_LEN_CODE_LEN -7
 1349 /* Invalid lit/len code lengths */
 1350 
 1351 #define ERR_CODE_INV_DIS_CODE_LEN -8
 1352 /* Invalid distance code lengths */
 1353 
 1354 #define ERR_CODE_INV_LIT_LEN_DIS_IN_BLK -9
 1355 /* Invalid lit/len or distance code in fixed/dynamic block */
 1356 
 1357 #define ERR_CODE_DIS_TOO_FAR_BACK -10
 1358 /* Distance too far back in fixed or dynamic block */
 1359 
 1360 /* Common Error code definitions */
 1361 #define ERR_CODE_OVERFLOW_ERROR -11
 1362 /**< Error Code constant value for overflow error  */
 1363 
 1364 #define ERR_CODE_SOFT_ERROR -12
 1365 /**< Error Code constant value for soft error  */
 1366 
 1367 #define ERR_CODE_FATAL_ERROR -13
 1368 /**< Error Code constant value for hard/fatal error  */
 1369 
 1370 #define ERR_CODE_COMP_OUTPUT_CORRUPTION -14
 1371 /**< Error Code constant for compression output corruption */
 1372 
 1373 #define ERR_CODE_HW_INCOMPLETE_FILE -15
 1374 /**< Error Code constant value for incomplete file hardware error  */
 1375 
 1376 #define ERR_CODE_SSM_ERROR -16
 1377 /**< Error Code constant value for error detected by SSM e.g. slice hang  */
 1378 
 1379 #define ERR_CODE_ENDPOINT_ERROR -17
 1380 /**< Error Code constant value for error detected by PCIe Endpoint, e.g. push
 1381  * data error  */
 1382 
 1383 #define ERR_CODE_CNV_ERROR -18
 1384 /**< Error Code constant value for cnv failure  */
 1385 
 1386 #define ERR_CODE_EMPTY_DYM_BLOCK -19
 1387 /**< Error Code constant value for submission of empty dynamic stored block to
 1388  * slice  */
 1389 
 1390 #define ERR_CODE_EXCEED_MAX_REQ_TIME -24
 1391 /**< Error Code constant for exceeding max request time */
 1392 
 1393 #define ERR_CODE_KPT_CRYPTO_SERVICE_FAIL_INVALID_HANDLE -20
 1394 /**< Error Code constant for invalid handle in kpt crypto service */
 1395 
 1396 #define ERR_CODE_KPT_CRYPTO_SERVICE_FAIL_HMAC_FAILED -21
 1397 /**< Error Code constant for failed hmac in kpt crypto service */
 1398 
 1399 #define ERR_CODE_KPT_CRYPTO_SERVICE_FAIL_INVALID_WRAPPING_ALGO -22
 1400 /**< Error Code constant for invalid wrapping algo in kpt crypto service */
 1401 
 1402 #define ERR_CODE_KPT_DRNG_SEED_NOT_LOAD -23
 1403 /**< Error Code constant for no drng seed is not loaded in kpt ecdsa signrs
 1404 /service */
 1405 
 1406 #define ERR_CODE_MISC_ERROR -50
 1407 /**< Error Code constant for error detected but the source
 1408  * of error is not recognized */
 1409 
 1410 /**
 1411  *****************************************************************************
 1412  * @ingroup icp_qat_fw_comn
 1413  *      Slice types for building of the processing chain within the content
 1414  *      descriptor
 1415  *
 1416  * @description
 1417  *      Enumeration used to indicate the ids of the slice types through which
 1418  *      data will pass.
 1419  *
 1420  *      A logical slice is not a hardware slice but is a software FSM
 1421  *      performing the actions of a slice
 1422  *
 1423  *****************************************************************************/
 1424 
 1425 typedef enum {
 1426         ICP_QAT_FW_SLICE_NULL = 0,    /**< NULL slice type */
 1427         ICP_QAT_FW_SLICE_CIPHER = 1,  /**< CIPHER slice type */
 1428         ICP_QAT_FW_SLICE_AUTH = 2,    /**< AUTH slice type */
 1429         ICP_QAT_FW_SLICE_DRAM_RD = 3, /**< DRAM_RD Logical slice type */
 1430         ICP_QAT_FW_SLICE_DRAM_WR = 4, /**< DRAM_WR Logical slice type */
 1431         ICP_QAT_FW_SLICE_COMP = 5,    /**< Compression slice type */
 1432         ICP_QAT_FW_SLICE_XLAT = 6,    /**< Translator slice type */
 1433         ICP_QAT_FW_SLICE_DELIMITER    /**< End delimiter */
 1434 
 1435 } icp_qat_fw_slice_t;
 1436 
 1437 #endif /* _ICP_QAT_FW_H_ */

Cache object: e1407d0ddde63512fd537df3701bf8c8


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