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_pke.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  * @file icp_qat_fw_pke.h
    6  * @defgroup icp_qat_fw_pke ICP QAT FW PKE Processing Definitions
    7  * @ingroup icp_qat_fw
    8  * $Revision: 0.1 $
    9  * @brief
   10  *      This file documents the external interfaces that the QAT FW running
   11  *      on the QAT Acceleration Engine provides to clients wanting to
   12  *      accelerate crypto assymetric applications
   13  */
   14 
   15 #ifndef _ICP_QAT_FW_PKE_
   16 #define _ICP_QAT_FW_PKE_
   17 
   18 /*
   19 ****************************************************************************
   20 * Include local header files
   21 ****************************************************************************
   22 */
   23 #include "icp_qat_fw.h"
   24 
   25 /**
   26  *****************************************************************************
   27  *
   28  * @ingroup icp_qat_fw_pke
   29  *
   30  * @brief
   31  *      PKE response status field structure contained
   32  *      within LW1, comprising the common error codes and
   33  *      the response flags.
   34  *
   35  *****************************************************************************/
   36 typedef struct icp_qat_fw_pke_resp_status_s {
   37         uint8_t comn_err_code;
   38         /**< 8 bit common error code */
   39 
   40         uint8_t pke_resp_flags;
   41         /**< 8-bit PKE response flags  */
   42 
   43 } icp_qat_fw_pke_resp_status_t;
   44 
   45 /**
   46  *****************************************************************************
   47  * @ingroup icp_qat_fw_pke
   48  *      Definition of the QAT FW PKE request header pars field.
   49  *      Structure differs from the DH895xxCC common base header structure, hence
   50  *      redefined here.
   51  * @description
   52  *      PKE request message header pars structure
   53  *
   54  *****************************************************************************/
   55 typedef struct icp_qat_fw_req_hdr_pke_cd_pars_s {
   56         /**< LWs 2-3 */
   57         uint64_t content_desc_addr;
   58         /**< Content descriptor pointer */
   59 
   60         /**< LW 4 */
   61         uint32_t content_desc_resrvd;
   62         /**< Content descriptor reserved field */
   63 
   64         /**< LW 5 */
   65         uint32_t func_id;
   66         /**< MMP functionality Id */
   67 
   68 } icp_qat_fw_req_hdr_pke_cd_pars_t;
   69 
   70 /**
   71  *****************************************************************************
   72  * @ingroup icp_qat_fw_pke
   73  *      Definition of the QAT FW PKE request header mid section.
   74  *      Structure differs from the DH895xxCC common base header structure,
   75  *      instead following the DH89xxCC format, hence redefined here.
   76  * @description
   77  *      PKE request message header middle structure
   78  *
   79  *****************************************************************************/
   80 typedef struct icp_qat_fw_req_pke_mid_s {
   81         /**< LWs 6-11 */
   82         uint64_t opaque_data;
   83         /**< Opaque data passed unmodified from the request to response messages
   84          * by
   85          * firmware (fw) */
   86 
   87         uint64_t src_data_addr;
   88         /**< Generic definition of the source data supplied to the QAT AE. The
   89          * common flags are used to further describe the attributes of this
   90          * field */
   91 
   92         uint64_t dest_data_addr;
   93         /**< Generic definition of the destination data supplied to the QAT AE.
   94          * The
   95          * common flags are used to further describe the attributes of this
   96          * field */
   97 
   98         /**< Following DH89xxCC structure format - footer is excluded */
   99 
  100 } icp_qat_fw_req_pke_mid_t;
  101 
  102 /**
  103  *****************************************************************************
  104  * @ingroup icp_qat_fw_pke
  105  *      Definition of the QAT FW PKE request header.
  106  *      Structure differs from the DH895xxCC common base header structure,
  107  *      instead following the DH89xxCC format, hence redefined here.
  108  * @description
  109  *      PKE request message header structure
  110  *
  111  *****************************************************************************/
  112 typedef struct icp_qat_fw_req_pke_hdr_s {
  113         /**< LW0 */
  114         uint8_t resrvd1;
  115         /**< reserved field */
  116 
  117         uint8_t resrvd2;
  118         /**< reserved field */
  119 
  120         uint8_t service_type;
  121         /**< Service type */
  122 
  123         uint8_t hdr_flags;
  124         /**< This represents a flags field for the Service Request.
  125          * The most significant bit is the 'valid' flag and the only
  126          * one used. All remaining bit positions are unused and
  127          * are therefore reserved and need to be set to 0. */
  128 
  129         /**< LW1 */
  130         icp_qat_fw_comn_flags comn_req_flags;
  131         /**< Common Request flags must indicate flat buffer (as per DH89xxCC)
  132          * Common Request flags - PKE slice flags no longer used - slice
  133          * allocated to a threadstrand.*/
  134 
  135         uint16_t resrvd4;
  136         /**< (DH89xxCC) CD Header Size and CD Params Size unused. Set to zero.
  137          */
  138 
  139         /**< LWs 2-5 */
  140         icp_qat_fw_req_hdr_pke_cd_pars_t cd_pars;
  141         /**< PKE request message header pars structure - this differs
  142          * from the DH895xxCC common base structure */
  143 
  144 } icp_qat_fw_req_pke_hdr_t;
  145 
  146 /**
  147  ***************************************************************************
  148  *
  149  * @ingroup icp_qat_fw_pke
  150  *
  151  * @brief
  152  *      PKE request message structure (64 bytes)
  153  *
  154  *****************************************************************************/
  155 typedef struct icp_qat_fw_pke_request_s {
  156         /**< LWs 0-5 */
  157         icp_qat_fw_req_pke_hdr_t pke_hdr;
  158         /**< Request header for PKE - CD Header/Param size
  159          * must be zero */
  160 
  161         /**< LWs 6-11 (same as DH89xxCC) */
  162         icp_qat_fw_req_pke_mid_t pke_mid;
  163         /**< Request middle section for PKE */
  164 
  165         /**< LW 12 */
  166         uint8_t output_param_count;
  167         /**< Number of output large integers
  168          * for request */
  169 
  170         uint8_t input_param_count;
  171         /**< Number of input large integers
  172          * for request */
  173 
  174         uint16_t resrvd1;
  175         /** Reserved **/
  176 
  177         /**< LW 13 */
  178         uint32_t resrvd2;
  179         /**< Reserved */
  180 
  181         /**< LWs 14-15 */
  182         uint64_t next_req_adr;
  183         /** < PKE - next request address */
  184 
  185 } icp_qat_fw_pke_request_t;
  186 
  187 /**
  188  *****************************************************************************
  189  *
  190  * @ingroup icp_qat_fw_pke
  191  *
  192  * @brief
  193  *      PKE response message header structure
  194  *
  195  *****************************************************************************/
  196 typedef struct icp_qat_fw_resp_pke_hdr_s {
  197         /**< LW0 */
  198         uint8_t resrvd1;
  199         /**< The Response Destination Id has been removed
  200          * from first QWord */
  201 
  202         uint8_t resrvd2;
  203         /**< Response Pipe Id field is unused (reserved)
  204          * - Functionality within DH895xxCC uses arbiter instead */
  205 
  206         uint8_t response_type;
  207         /**< Response type - copied from the request to
  208          * the response message */
  209 
  210         uint8_t hdr_flags;
  211         /**< This represents a flags field for the Response.
  212          * The most significant bit is the 'valid' flag and the only
  213          * one used. All remaining bit positions are unused and
  214          * are therefore reserved */
  215 
  216         /**< LW1 */
  217         icp_qat_fw_pke_resp_status_t resp_status;
  218 
  219         uint16_t resrvd4;
  220         /**< (DH89xxCC) CD Header Size and CD Params Size fields unused.
  221          * Set to zero. */
  222 
  223 } icp_qat_fw_resp_pke_hdr_t;
  224 
  225 /**
  226  *****************************************************************************
  227  *
  228  * @ingroup icp_qat_fw_pke
  229  *
  230  * @brief
  231  *      PKE response message structure (32 bytes)
  232  *
  233  *****************************************************************************/
  234 typedef struct icp_qat_fw_pke_resp_s {
  235         /**< LWs 0-1 */
  236         icp_qat_fw_resp_pke_hdr_t pke_resp_hdr;
  237         /**< Response header for PKE */
  238 
  239         /**< LWs 2-3 */
  240         uint64_t opaque_data;
  241         /**< Opaque data passed from the request to the response message */
  242 
  243         /**< LWs 4-5 */
  244         uint64_t src_data_addr;
  245         /**< Generic definition of the source data supplied to the QAT AE. The
  246          * common flags are used to further describe the attributes of this
  247          * field */
  248 
  249         /**< LWs 6-7 */
  250         uint64_t dest_data_addr;
  251         /**< Generic definition of the destination data supplied to the QAT AE.
  252          * The
  253          * common flags are used to further describe the attributes of this
  254          * field */
  255 
  256 } icp_qat_fw_pke_resp_t;
  257 
  258 /* ========================================================================= */
  259 /*                           MACRO DEFINITIONS                               */
  260 /* ========================================================================= */
  261 
  262 /**< @ingroup icp_qat_fw_pke
  263  * Macro defining the bit position and mask of the 'valid' flag, within the
  264  * hdr_flags field of LW0 (service request and response) of the PKE request */
  265 #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_BITPOS 7
  266 #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_MASK 0x1
  267 
  268 /**< @ingroup icp_qat_fw_pke
  269  * Macro defining the bit position and mask of the PKE status flag, within the
  270  * status field LW1 of a PKE response message */
  271 #define QAT_COMN_RESP_PKE_STATUS_BITPOS 6
  272 /**< @ingroup icp_qat_fw_pke
  273  * Starting bit position indicating the PKE status flag within the PKE response
  274  * pke_resp_flags byte.  */
  275 
  276 #define QAT_COMN_RESP_PKE_STATUS_MASK 0x1
  277 /**< @ingroup icp_qat_fw_pke
  278  * One bit mask used to determine PKE status mask */
  279 
  280 /*  
  281  *  < @ingroup icp_qat_fw_pke
  282  *  *** PKE Response Status Field Definition *** 
  283  *  The PKE response follows the CPM 1.5 message format. The status field is 16 bits 
  284  *  wide, where the status flags are contained within the most significant byte of the 
  285  *  icp_qat_fw_pke_resp_status_t structure. The lower 8 bits of this word now contain 
  286  *  the common error codes, which are defined in the common header file(*).  
  287  */
  288 /*  + ===== + ----- + ---- + ----- + ----- + ----- + ----- + ----- + ----- + ----------------------- +   
  289  *  |  Bit  |  15   |  14  |  13   |  12   |  11   |  10   |   9   |   8   |        [7....0]         |
  290  *  + ===== + ----- + ---- + ----- + ----- + ----- + ----- + ----- + ----- + ----------------------- +  
  291  *  | Flags | Rsrvd | Pke  | Rsrvd | Rsrvd | Rsrvd | Rsrvd | Rsrvd | Rsrvd |   Common error codes(*) |
  292  *  + ===== + ----- + ---- + ----- + ----- + ----- + ----- + ----- + ----- + ----------------------- +    
  293  */
  294 
  295 /**
  296  ******************************************************************************
  297  * @ingroup icp_qat_fw_pke
  298  *
  299  * @description
  300  *      Macro for extraction of the PKE bit from the 16-bit status field
  301  *      particular to a PKE response. The status flags are contained within
  302  *      the most significant byte of the word. The lower 8 bits of this status
  303  *      word now contain the common error codes, which are defined in the common
  304  *      header file. The appropriate macro definition to extract the PKE status
  305  *      flag from the PKE response assumes that a single byte i.e.
  306  *pke_resp_flags
  307  *      is passed to the macro.
  308  *
  309  * @param status
  310  *      Status to extract the PKE status bit
  311  *
  312  *****************************************************************************/
  313 #define ICP_QAT_FW_PKE_RESP_PKE_STAT_GET(flags)                                \
  314         QAT_FIELD_GET((flags),                                                 \
  315                       QAT_COMN_RESP_PKE_STATUS_BITPOS,                         \
  316                       QAT_COMN_RESP_PKE_STATUS_MASK)
  317 
  318 /**
  319  ******************************************************************************
  320  * @ingroup icp_qat_fw_pke
  321  *
  322  * @description
  323  *      Extract the valid flag from the PKE Request's header flags. Note that
  324  *      this invokes the common macro which may be used by either the request
  325  *      or the response.
  326  *
  327  * @param icp_qat_fw_req_pke_hdr_t  Structure passed to extract the valid bit
  328  *                                  from the 'hdr_flags' field.
  329  *
  330  *****************************************************************************/
  331 #define ICP_QAT_FW_PKE_RQ_VALID_FLAG_GET(icp_qat_fw_req_pke_hdr_t)             \
  332         ICP_QAT_FW_PKE_HDR_VALID_FLAG_GET(icp_qat_fw_req_pke_hdr_t)
  333 
  334 /**
  335  ******************************************************************************
  336  * @ingroup icp_qat_fw_pke
  337  *
  338  * @description
  339  *      Set the valid bit in the PKE Request's header flags. Note that
  340  *      this invokes the common macro which may be used by either the request
  341  *      or the response.
  342  *
  343  * @param icp_qat_fw_req_pke_hdr_t  Structure passed to set the valid bit.
  344  * @param val    Value of the valid bit flag.
  345  *
  346  *****************************************************************************/
  347 #define ICP_QAT_FW_PKE_RQ_VALID_FLAG_SET(icp_qat_fw_req_pke_hdr_t, val)        \
  348         ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(icp_qat_fw_req_pke_hdr_t, val)
  349 
  350 /**
  351  ******************************************************************************
  352  * @ingroup icp_qat_fw_pke
  353  *
  354  * @description
  355  *      Extract the valid flag from the PKE Response's header flags. Note that
  356  *      invokes the common macro which may be used by either the request
  357  *      or the response.
  358  *
  359  * @param icp_qat_fw_resp_pke_hdr_t  Structure to extract the valid bit
  360  *                                    from the 'hdr_flags' field.
  361  *
  362  *****************************************************************************/
  363 #define ICP_QAT_FW_PKE_RESP_VALID_FLAG_GET(icp_qat_fw_resp_pke_hdr_t)          \
  364         ICP_QAT_FW_PKE_HDR_VALID_FLAG_GET(icp_qat_fw_resp_pke_hdr_t)
  365 
  366 /**
  367  ******************************************************************************
  368  * @ingroup icp_qat_fw_pke
  369  *
  370  * @description
  371  *      Set the valid bit in the PKE Response's header flags. Note that
  372  *      this invokes the common macro which may be used by either the
  373  *      request or the response.
  374  *
  375  * @param icp_qat_fw_resp_pke_hdr_t  Structure to set the valid bit
  376  * @param val    Value of the valid bit flag.
  377  *
  378  *****************************************************************************/
  379 #define ICP_QAT_FW_PKE_RESP_VALID_FLAG_SET(icp_qat_fw_resp_pke_hdr_t, val)     \
  380         ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(icp_qat_fw_resp_pke_hdr_t, val)
  381 
  382 /**
  383  ******************************************************************************
  384  * @ingroup icp_qat_fw_pke
  385  *
  386  * @description
  387  *      Common macro to extract the valid flag from the header flags field
  388  *      within the header structure (request or response).
  389  *
  390  * @param hdr_t  Structure (request or response) to extract the
  391  *               valid bit from the 'hdr_flags' field.
  392  *
  393  *****************************************************************************/
  394 #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_GET(hdr_t)                               \
  395         QAT_FIELD_GET(hdr_t.hdr_flags,                                         \
  396                       ICP_QAT_FW_PKE_HDR_VALID_FLAG_BITPOS,                    \
  397                       ICP_QAT_FW_PKE_HDR_VALID_FLAG_MASK)
  398 
  399 /**
  400  ******************************************************************************
  401  * @ingroup icp_qat_fw_pke
  402  *
  403  * @description
  404  *      Common macro to set the valid bit in the header flags field within
  405  *      the header structure (request or response).
  406  *
  407  * @param hdr_t  Structure (request or response) containing the header
  408  *               flags field, to allow the valid bit to be set.
  409  * @param val    Value of the valid bit flag.
  410  *
  411  *****************************************************************************/
  412 #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(hdr_t, val)                          \
  413         QAT_FIELD_SET((hdr_t.hdr_flags),                                       \
  414                       (val),                                                   \
  415                       ICP_QAT_FW_PKE_HDR_VALID_FLAG_BITPOS,                    \
  416                       ICP_QAT_FW_PKE_HDR_VALID_FLAG_MASK)
  417 
  418 #endif /* _ICP_QAT_FW_PKE_ */

Cache object: adc5bd3f9d7ebf0076841b176245ff0e


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