xref: /dpdk/drivers/common/qat/qat_adf/icp_qat_fw_pke.h (revision 8bd5f07c7a1ac0c5b8d16758efc3ada3e16b0adc)
10adc033fSArek Kusztal /* SPDX-License-Identifier: BSD-3-Clause
20adc033fSArek Kusztal  * Copyright(c) 2019 Intel Corporation
30adc033fSArek Kusztal  */
40adc033fSArek Kusztal 
50adc033fSArek Kusztal /**
60adc033fSArek Kusztal  * @file icp_qat_fw_pke.h
70adc033fSArek Kusztal  * @defgroup icp_qat_fw_pke ICP QAT FW PKE Processing Definitions
80adc033fSArek Kusztal  * @ingroup icp_qat_fw
90adc033fSArek Kusztal  * Revision: 0.1
100adc033fSArek Kusztal  * @brief
110adc033fSArek Kusztal  *      This file documents the external interfaces that the QAT FW running
120adc033fSArek Kusztal  *      on the QAT Acceleration Engine provides to clients wanting to
13*8bd5f07cSJohn McNamara  *      accelerate crypto asymmetric applications
140adc033fSArek Kusztal  */
150adc033fSArek Kusztal 
160adc033fSArek Kusztal #ifndef _ICP_QAT_FW_PKE_H_
170adc033fSArek Kusztal #define _ICP_QAT_FW_PKE_H_
180adc033fSArek Kusztal 
190adc033fSArek Kusztal /*
200adc033fSArek Kusztal  * Keep all dpdk-specific changes in this section
210adc033fSArek Kusztal  */
220adc033fSArek Kusztal 
230adc033fSArek Kusztal #include <stdint.h>
240adc033fSArek Kusztal 
250adc033fSArek Kusztal typedef uint8_t u8;
260adc033fSArek Kusztal typedef uint16_t u16;
270adc033fSArek Kusztal typedef uint32_t u32;
280adc033fSArek Kusztal typedef uint64_t u64;
290adc033fSArek Kusztal 
300adc033fSArek Kusztal /* End of DPDK-specific section
310adc033fSArek Kusztal  * Don't modify below this.
320adc033fSArek Kusztal  */
330adc033fSArek Kusztal 
340adc033fSArek Kusztal /*
350adc033fSArek Kusztal  ****************************************************************************
360adc033fSArek Kusztal  * Include local header files
370adc033fSArek Kusztal  ****************************************************************************
380adc033fSArek Kusztal  */
390adc033fSArek Kusztal #include "icp_qat_fw.h"
400adc033fSArek Kusztal 
410adc033fSArek Kusztal /**
420adc033fSArek Kusztal  *****************************************************************************
430adc033fSArek Kusztal  *
440adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
450adc033fSArek Kusztal  *
460adc033fSArek Kusztal  * @brief
470adc033fSArek Kusztal  *      PKE response status field structure contained
480adc033fSArek Kusztal  *      within LW1, comprising the common error codes and
490adc033fSArek Kusztal  *      the response flags.
500adc033fSArek Kusztal  *
510adc033fSArek Kusztal  *****************************************************************************/
520adc033fSArek Kusztal struct icp_qat_fw_pke_resp_status {
530adc033fSArek Kusztal 	u8 comn_err_code;
540adc033fSArek Kusztal 	/**< 8 bit common error code */
550adc033fSArek Kusztal 
560adc033fSArek Kusztal 	u8 pke_resp_flags;
570adc033fSArek Kusztal 	/**< 8-bit PKE response flags  */
580adc033fSArek Kusztal };
590adc033fSArek Kusztal 
600adc033fSArek Kusztal /**
610adc033fSArek Kusztal  *****************************************************************************
620adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
630adc033fSArek Kusztal  *      Definition of the QAT FW PKE request header pars field.
640adc033fSArek Kusztal  *
650adc033fSArek Kusztal  * @description
660adc033fSArek Kusztal  *      PKE request message header pars structure
670adc033fSArek Kusztal  *
680adc033fSArek Kusztal  *****************************************************************************/
690adc033fSArek Kusztal struct icp_qat_fw_req_hdr_pke_cd_pars {
700adc033fSArek Kusztal 	/**< LWs 2-3 */
710adc033fSArek Kusztal 	u64 content_desc_addr;
720adc033fSArek Kusztal 	/**< Content descriptor pointer */
730adc033fSArek Kusztal 
740adc033fSArek Kusztal 	/**< LW 4 */
750adc033fSArek Kusztal 	u32 content_desc_resrvd;
760adc033fSArek Kusztal 	/**< Content descriptor reserved field */
770adc033fSArek Kusztal 
780adc033fSArek Kusztal 	/**< LW 5 */
790adc033fSArek Kusztal 	u32 func_id;
800adc033fSArek Kusztal 	/**< MMP functionality Id */
810adc033fSArek Kusztal };
820adc033fSArek Kusztal 
830adc033fSArek Kusztal /**
840adc033fSArek Kusztal  *****************************************************************************
850adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
860adc033fSArek Kusztal  *      Definition of the QAT FW PKE request header mid section.
870adc033fSArek Kusztal  *
880adc033fSArek Kusztal  * @description
890adc033fSArek Kusztal  *      PKE request message header middle structure
900adc033fSArek Kusztal  *
910adc033fSArek Kusztal  *****************************************************************************/
920adc033fSArek Kusztal struct icp_qat_fw_req_pke_mid {
930adc033fSArek Kusztal 	/**< LWs 6-11 */
940adc033fSArek Kusztal 	u64 opaque;
950adc033fSArek Kusztal 	/**< Opaque data passed unmodified from the request to response messages
960adc033fSArek Kusztal 	 * by firmware (fw)
970adc033fSArek Kusztal 	 */
980adc033fSArek Kusztal 
990adc033fSArek Kusztal 	u64 src_data_addr;
1000adc033fSArek Kusztal 	/**< Generic definition of the source data supplied to the QAT AE. The
1010adc033fSArek Kusztal 	 * common flags are used to further describe the attributes of this
1020adc033fSArek Kusztal 	 * field
1030adc033fSArek Kusztal 	 */
1040adc033fSArek Kusztal 
1050adc033fSArek Kusztal 	u64 dest_data_addr;
1060adc033fSArek Kusztal 	/**< Generic definition of the destination data supplied to the QAT AE.
1070adc033fSArek Kusztal 	 * The common flags are used to further describe the attributes of this
1080adc033fSArek Kusztal 	 * field
1090adc033fSArek Kusztal 	 */
1100adc033fSArek Kusztal };
1110adc033fSArek Kusztal 
1120adc033fSArek Kusztal /**
1130adc033fSArek Kusztal  *****************************************************************************
1140adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
1150adc033fSArek Kusztal  *      Definition of the QAT FW PKE request header.
1160adc033fSArek Kusztal  *
1170adc033fSArek Kusztal  * @description
1180adc033fSArek Kusztal  *      PKE request message header structure
1190adc033fSArek Kusztal  *
1200adc033fSArek Kusztal  *****************************************************************************/
1210adc033fSArek Kusztal struct icp_qat_fw_req_pke_hdr {
1220adc033fSArek Kusztal 	/**< LW0 */
1230adc033fSArek Kusztal 	u8 resrvd1;
1240adc033fSArek Kusztal 	/**< reserved field */
1250adc033fSArek Kusztal 
1260adc033fSArek Kusztal 	u8 resrvd2;
1270adc033fSArek Kusztal 	/**< reserved field */
1280adc033fSArek Kusztal 
1290adc033fSArek Kusztal 	u8 service_type;
1300adc033fSArek Kusztal 	/**< Service type */
1310adc033fSArek Kusztal 
1320adc033fSArek Kusztal 	u8 hdr_flags;
1330adc033fSArek Kusztal 	/**< This represents a flags field for the Service Request.
1340adc033fSArek Kusztal 	 * The most significant bit is the 'valid' flag and the only
1350adc033fSArek Kusztal 	 * one used. All remaining bit positions are unused and
1360adc033fSArek Kusztal 	 * are therefore reserved and need to be set to 0.
1370adc033fSArek Kusztal 	 */
1380adc033fSArek Kusztal 
1390adc033fSArek Kusztal 	/**< LW1 */
1400adc033fSArek Kusztal 	u16 comn_req_flags;
1410adc033fSArek Kusztal 	/**< Common Request flags must indicate flat buffer
1420adc033fSArek Kusztal 	 * Common Request flags - PKE slice flags no longer used - slice
1430adc033fSArek Kusztal 	 * allocated to a threadstrand.
1440adc033fSArek Kusztal 	 */
1450adc033fSArek Kusztal 
1460adc033fSArek Kusztal 	u8 kpt_mask;
1470adc033fSArek Kusztal 	/** < KPT input parameters array mask, indicate which node in array is
1480adc033fSArek Kusztal 	 *encrypted
1490adc033fSArek Kusztal 	 */
1500adc033fSArek Kusztal 
1510adc033fSArek Kusztal 	u8 kpt_rn_mask;
1520adc033fSArek Kusztal 	/**< KPT random node(RN) mask - indicate which node is RN that QAT
1530adc033fSArek Kusztal 	 * should generate itself.
1540adc033fSArek Kusztal 	 */
1550adc033fSArek Kusztal 
1560adc033fSArek Kusztal 	/**< LWs 2-5 */
1570adc033fSArek Kusztal 	struct icp_qat_fw_req_hdr_pke_cd_pars cd_pars;
1580adc033fSArek Kusztal 	/**< PKE request message header pars structure */
1590adc033fSArek Kusztal };
1600adc033fSArek Kusztal 
1610adc033fSArek Kusztal /**
1620adc033fSArek Kusztal  ***************************************************************************
1630adc033fSArek Kusztal  *
1640adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
1650adc033fSArek Kusztal  *
1660adc033fSArek Kusztal  * @brief
1670adc033fSArek Kusztal  *      PKE request message structure (64 bytes)
1680adc033fSArek Kusztal  *
1690adc033fSArek Kusztal  *****************************************************************************/
1700adc033fSArek Kusztal struct icp_qat_fw_pke_request {
1710adc033fSArek Kusztal 	/**< LWs 0-5 */
1720adc033fSArek Kusztal 	struct icp_qat_fw_req_pke_hdr pke_hdr;
1730adc033fSArek Kusztal 	/**< Request header for PKE - CD Header/Param size  must be zero */
1740adc033fSArek Kusztal 
1750adc033fSArek Kusztal 	/**< LWs 6-11 */
1760adc033fSArek Kusztal 	struct icp_qat_fw_req_pke_mid pke_mid;
1770adc033fSArek Kusztal 	/**< Request middle section for PKE */
1780adc033fSArek Kusztal 
1790adc033fSArek Kusztal 	/**< LW 12 */
1800adc033fSArek Kusztal 	u8 output_param_count;
1810adc033fSArek Kusztal 	/**< Number of output large integers for request */
1820adc033fSArek Kusztal 
1830adc033fSArek Kusztal 	u8 input_param_count;
1840adc033fSArek Kusztal 	/**< Number of input large integers for request */
1850adc033fSArek Kusztal 
1860adc033fSArek Kusztal 	u16 resrvd1;
1870adc033fSArek Kusztal 	/** Reserved **/
1880adc033fSArek Kusztal 
1890adc033fSArek Kusztal 	/**< LW 13 */
1900adc033fSArek Kusztal 	u32 resrvd2;
1910adc033fSArek Kusztal 	/**< Reserved */
1920adc033fSArek Kusztal 
1930adc033fSArek Kusztal 	/**< LWs 14-15 */
1940adc033fSArek Kusztal 	u64 next_req_adr;
1950adc033fSArek Kusztal 	/** < PKE - next request address */
1960adc033fSArek Kusztal };
1970adc033fSArek Kusztal 
1980adc033fSArek Kusztal /**
1990adc033fSArek Kusztal  *****************************************************************************
2000adc033fSArek Kusztal  *
2010adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
2020adc033fSArek Kusztal  *
2030adc033fSArek Kusztal  * @brief
2040adc033fSArek Kusztal  *      PKE response message header structure
2050adc033fSArek Kusztal  *
2060adc033fSArek Kusztal  *****************************************************************************/
2070adc033fSArek Kusztal struct icp_qat_fw_resp_pke_hdr {
2080adc033fSArek Kusztal 	/**< LW0 */
2090adc033fSArek Kusztal 	u8 resrvd1;
2100adc033fSArek Kusztal 	/**< Reserved */
2110adc033fSArek Kusztal 
2120adc033fSArek Kusztal 	u8 resrvd2;
2130adc033fSArek Kusztal 	/**< Reserved */
2140adc033fSArek Kusztal 
2150adc033fSArek Kusztal 	u8 response_type;
2160adc033fSArek Kusztal 	/**< Response type - copied from the request to the response message */
2170adc033fSArek Kusztal 
2180adc033fSArek Kusztal 	u8 hdr_flags;
2190adc033fSArek Kusztal 	/**< This represents a flags field for the Response.
2200adc033fSArek Kusztal 	 * The most significant bit is the 'valid' flag and the only
2210adc033fSArek Kusztal 	 * one used. All remaining bit positions are unused and
2220adc033fSArek Kusztal 	 * are therefore reserved
2230adc033fSArek Kusztal 	 */
2240adc033fSArek Kusztal 
2250adc033fSArek Kusztal 	/**< LW1 */
2260adc033fSArek Kusztal 	struct icp_qat_fw_pke_resp_status resp_status;
2270adc033fSArek Kusztal 
2280adc033fSArek Kusztal 	u16 resrvd4;
2290adc033fSArek Kusztal 	/**< Set to zero. */
2300adc033fSArek Kusztal };
2310adc033fSArek Kusztal 
2320adc033fSArek Kusztal /**
2330adc033fSArek Kusztal  *****************************************************************************
2340adc033fSArek Kusztal  *
2350adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
2360adc033fSArek Kusztal  *
2370adc033fSArek Kusztal  * @brief
2380adc033fSArek Kusztal  *      PKE response message structure (32 bytes)
2390adc033fSArek Kusztal  *
2400adc033fSArek Kusztal  *****************************************************************************/
2410adc033fSArek Kusztal struct icp_qat_fw_pke_resp {
2420adc033fSArek Kusztal 	/**< LWs 0-1 */
2430adc033fSArek Kusztal 	struct icp_qat_fw_resp_pke_hdr pke_resp_hdr;
2440adc033fSArek Kusztal 	/**< Response header for PKE */
2450adc033fSArek Kusztal 
2460adc033fSArek Kusztal 	/**< LWs 2-3 */
2470adc033fSArek Kusztal 	u64 opaque;
2480adc033fSArek Kusztal 	/**< Opaque data passed from the request to the response message */
2490adc033fSArek Kusztal 
2500adc033fSArek Kusztal 	/**< LWs 4-5 */
2510adc033fSArek Kusztal 	u64 src_data_addr;
2520adc033fSArek Kusztal 	/**< Generic definition of the source data supplied to the QAT AE. The
2530adc033fSArek Kusztal 	 * common flags are used to further describe the attributes of this
2540adc033fSArek Kusztal 	 * field
2550adc033fSArek Kusztal 	 */
2560adc033fSArek Kusztal 
2570adc033fSArek Kusztal 	/**< LWs 6-7 */
2580adc033fSArek Kusztal 	u64 dest_data_addr;
2590adc033fSArek Kusztal 	/**< Generic definition of the destination data supplied to the QAT AE.
2600adc033fSArek Kusztal 	 * The common flags are used to further describe the attributes of this
2610adc033fSArek Kusztal 	 * field
2620adc033fSArek Kusztal 	 */
2630adc033fSArek Kusztal };
2640adc033fSArek Kusztal 
2650adc033fSArek Kusztal /* ========================================================================= */
2660adc033fSArek Kusztal /* MACRO DEFINITIONS                                                         */
2670adc033fSArek Kusztal /* ========================================================================= */
2680adc033fSArek Kusztal 
2690adc033fSArek Kusztal /**< @ingroup icp_qat_fw_pke
2700adc033fSArek Kusztal  * Macro defining the bit position and mask of the 'valid' flag, within the
2710adc033fSArek Kusztal  * hdr_flags field of LW0 (service request and response) of the PKE request
2720adc033fSArek Kusztal  */
2730adc033fSArek Kusztal #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_BITPOS 7
2740adc033fSArek Kusztal #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_MASK 0x1
2750adc033fSArek Kusztal 
2760adc033fSArek Kusztal /**< @ingroup icp_qat_fw_pke
2770adc033fSArek Kusztal  * Macro defining the bit position and mask of the PKE status flag, within the
2780adc033fSArek Kusztal  * status field LW1 of a PKE response message
2790adc033fSArek Kusztal  */
2800adc033fSArek Kusztal #define QAT_COMN_RESP_PKE_STATUS_BITPOS 6
2810adc033fSArek Kusztal /**< @ingroup icp_qat_fw_pke
2820adc033fSArek Kusztal  * Starting bit position indicating the PKE status flag within the PKE response
2830adc033fSArek Kusztal  * pke_resp_flags byte.
2840adc033fSArek Kusztal  */
2850adc033fSArek Kusztal 
2860adc033fSArek Kusztal #define QAT_COMN_RESP_PKE_STATUS_MASK 0x1
2870adc033fSArek Kusztal /**< @ingroup icp_qat_fw_pke
2880adc033fSArek Kusztal  * One bit mask used to determine PKE status mask
2890adc033fSArek Kusztal  */
2900adc033fSArek Kusztal 
2910adc033fSArek Kusztal /*
2920adc033fSArek Kusztal  *  < @ingroup icp_qat_fw_pke
2930adc033fSArek Kusztal  *  *** PKE Response Status Field Definition ***
2940adc033fSArek Kusztal  *  The PKE response follows the CPM 1.5 message format. The status field is
2950adc033fSArek Kusztal  *  16 bits wide, where the status flags are contained within the most
2960adc033fSArek Kusztal  *  significant byte of the icp_qat_fw_pke_resp_status structure.
2970adc033fSArek Kusztal  *  The lower 8 bits of this word now contain the common error codes,
2980adc033fSArek Kusztal  *  which are defined in the common header file(*).
2990adc033fSArek Kusztal  */
3000adc033fSArek Kusztal /*  +=====+-----+----+-----+-----+-----+-----+-----+-----+---------------------+
3010adc033fSArek Kusztal  *  | Bit |  15 | 14 | 13  | 12  | 11  | 10  |  9  |  8  |    [7....0]         |
3020adc033fSArek Kusztal  *  +=====+-----+----+-----+-----+-----+-----+-----+-----+---------------------+
3030adc033fSArek Kusztal  *  |Flags|Rsrvd|Pke |Rsrvd|Rsrvd|Rsrvd|Rsrvd|Rsrvd|Rsrvd|Common error codes(*)|
3040adc033fSArek Kusztal  *  +=====+-----+----+-----+-----+-----+-----+-----+-----+---------------------+
3050adc033fSArek Kusztal  */
3060adc033fSArek Kusztal 
3070adc033fSArek Kusztal /**
3080adc033fSArek Kusztal  ******************************************************************************
3090adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
3100adc033fSArek Kusztal  *
3110adc033fSArek Kusztal  * @description
3120adc033fSArek Kusztal  *     Macro for extraction of the PKE bit from the 16-bit status field
3130adc033fSArek Kusztal  *     particular to a PKE response. The status flags are contained within
3140adc033fSArek Kusztal  *     the most significant byte of the word. The lower 8 bits of this status
3150adc033fSArek Kusztal  *     word now contain the common error codes, which are defined in the common
3160adc033fSArek Kusztal  *     header file. The appropriate macro definition to extract the PKE status
3170adc033fSArek Kusztal  *     lag from the PKE response assumes that a single byte i.e. pke_resp_flags
3180adc033fSArek Kusztal  *     is passed to the macro.
3190adc033fSArek Kusztal  *
3200adc033fSArek Kusztal  * @param status
3210adc033fSArek Kusztal  *     Status to extract the PKE status bit
3220adc033fSArek Kusztal  *
3230adc033fSArek Kusztal  *****************************************************************************/
3240adc033fSArek Kusztal #define ICP_QAT_FW_PKE_RESP_PKE_STAT_GET(flags)                                \
3250adc033fSArek Kusztal 	QAT_FIELD_GET((flags), QAT_COMN_RESP_PKE_STATUS_BITPOS,                \
3260adc033fSArek Kusztal 		      QAT_COMN_RESP_PKE_STATUS_MASK)
3270adc033fSArek Kusztal 
3280adc033fSArek Kusztal /**
3290adc033fSArek Kusztal  ******************************************************************************
3300adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
3310adc033fSArek Kusztal  *
3320adc033fSArek Kusztal  * @description
3330adc033fSArek Kusztal  *      Extract the valid flag from the PKE Request's header flags. Note that
3340adc033fSArek Kusztal  *      this invokes the common macro which may be used by either the request
3350adc033fSArek Kusztal  *      or the response.
3360adc033fSArek Kusztal  *
3370adc033fSArek Kusztal  * @param icp_qat_fw_req_pke_hdr    Structure passed to extract the valid bit
3380adc033fSArek Kusztal  *                                  from the 'hdr_flags' field.
3390adc033fSArek Kusztal  *
3400adc033fSArek Kusztal  *****************************************************************************/
3410adc033fSArek Kusztal #define ICP_QAT_FW_PKE_RQ_VALID_FLAG_GET(icp_qat_fw_req_pke_hdr)               \
3420adc033fSArek Kusztal 	ICP_QAT_FW_PKE_HDR_VALID_FLAG_GET(icp_qat_fw_req_pke_hdr)
3430adc033fSArek Kusztal 
3440adc033fSArek Kusztal /**
3450adc033fSArek Kusztal  ******************************************************************************
3460adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
3470adc033fSArek Kusztal  *
3480adc033fSArek Kusztal  * @description
3490adc033fSArek Kusztal  *      Set the valid bit in the PKE Request's header flags. Note that
3500adc033fSArek Kusztal  *      this invokes the common macro which may be used by either the request
3510adc033fSArek Kusztal  *      or the response.
3520adc033fSArek Kusztal  *
3530adc033fSArek Kusztal  * @param icp_qat_fw_req_pke_hdr    Structure passed to set the valid bit.
3540adc033fSArek Kusztal  * @param val    Value of the valid bit flag.
3550adc033fSArek Kusztal  *
3560adc033fSArek Kusztal  *****************************************************************************/
3570adc033fSArek Kusztal #define ICP_QAT_FW_PKE_RQ_VALID_FLAG_SET(icp_qat_fw_req_pke_hdr, val)          \
3580adc033fSArek Kusztal 	ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(icp_qat_fw_req_pke_hdr, val)
3590adc033fSArek Kusztal 
3600adc033fSArek Kusztal /**
3610adc033fSArek Kusztal  ******************************************************************************
3620adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
3630adc033fSArek Kusztal  *
3640adc033fSArek Kusztal  * @description
3650adc033fSArek Kusztal  *      Extract the valid flag from the PKE Response's header flags. Note that
3660adc033fSArek Kusztal  *      invokes the common macro which may be used by either the request
3670adc033fSArek Kusztal  *      or the response.
3680adc033fSArek Kusztal  *
3690adc033fSArek Kusztal  * @param icp_qat_fw_resp_pke_hdr    Structure to extract the valid bit
3700adc033fSArek Kusztal  *                                   from the 'hdr_flags' field.
3710adc033fSArek Kusztal  *
3720adc033fSArek Kusztal  *****************************************************************************/
3730adc033fSArek Kusztal #define ICP_QAT_FW_PKE_RESP_VALID_FLAG_GET(icp_qat_fw_resp_pke_hdr)            \
3740adc033fSArek Kusztal 	ICP_QAT_FW_PKE_HDR_VALID_FLAG_GET(icp_qat_fw_resp_pke_hdr)
3750adc033fSArek Kusztal 
3760adc033fSArek Kusztal /**
3770adc033fSArek Kusztal  ******************************************************************************
3780adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
3790adc033fSArek Kusztal  *
3800adc033fSArek Kusztal  * @description
3810adc033fSArek Kusztal  *      Set the valid bit in the PKE Response's header flags. Note that
3820adc033fSArek Kusztal  *      this invokes the common macro which may be used by either the
3830adc033fSArek Kusztal  *      request or the response.
3840adc033fSArek Kusztal  *
3850adc033fSArek Kusztal  * @param icp_qat_fw_resp_pke_hdr    Structure to set the valid bit
3860adc033fSArek Kusztal  * @param val    Value of the valid bit flag.
3870adc033fSArek Kusztal  *
3880adc033fSArek Kusztal  *****************************************************************************/
3890adc033fSArek Kusztal #define ICP_QAT_FW_PKE_RESP_VALID_FLAG_SET(icp_qat_fw_resp_pke_hdr, val)       \
3900adc033fSArek Kusztal 	ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(icp_qat_fw_resp_pke_hdr, val)
3910adc033fSArek Kusztal 
3920adc033fSArek Kusztal /**
3930adc033fSArek Kusztal  ******************************************************************************
3940adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
3950adc033fSArek Kusztal  *
3960adc033fSArek Kusztal  * @description
3970adc033fSArek Kusztal  *      Common macro to extract the valid flag from the header flags field
3980adc033fSArek Kusztal  *      within the header structure (request or response).
3990adc033fSArek Kusztal  *
4000adc033fSArek Kusztal  * @param hdr    Structure (request or response) to extract the
4010adc033fSArek Kusztal  *               valid bit from the 'hdr_flags' field.
4020adc033fSArek Kusztal  *
4030adc033fSArek Kusztal  *****************************************************************************/
4040adc033fSArek Kusztal #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_GET(hdr)                                 \
4050adc033fSArek Kusztal 	QAT_FIELD_GET(hdr.hdr_flags, ICP_QAT_FW_PKE_HDR_VALID_FLAG_BITPOS,     \
4060adc033fSArek Kusztal 		      ICP_QAT_FW_PKE_HDR_VALID_FLAG_MASK)
4070adc033fSArek Kusztal 
4080adc033fSArek Kusztal /**
4090adc033fSArek Kusztal  ******************************************************************************
4100adc033fSArek Kusztal  * @ingroup icp_qat_fw_pke
4110adc033fSArek Kusztal  *
4120adc033fSArek Kusztal  * @description
4130adc033fSArek Kusztal  *      Common macro to set the valid bit in the header flags field within
4140adc033fSArek Kusztal  *      the header structure (request or response).
4150adc033fSArek Kusztal  *
4160adc033fSArek Kusztal  * @param hdr    Structure (request or response) containing the header
4170adc033fSArek Kusztal  *               flags field, to allow the valid bit to be set.
4180adc033fSArek Kusztal  * @param val    Value of the valid bit flag.
4190adc033fSArek Kusztal  *
4200adc033fSArek Kusztal  *****************************************************************************/
4210adc033fSArek Kusztal #define ICP_QAT_FW_PKE_HDR_VALID_FLAG_SET(hdr, val)                            \
4220adc033fSArek Kusztal 	QAT_FIELD_SET((hdr.hdr_flags), (val),                                  \
4230adc033fSArek Kusztal 		      ICP_QAT_FW_PKE_HDR_VALID_FLAG_BITPOS,                    \
4240adc033fSArek Kusztal 		      ICP_QAT_FW_PKE_HDR_VALID_FLAG_MASK)
4250adc033fSArek Kusztal 
4260adc033fSArek Kusztal #endif /* _ICP_QAT_FW_PKE_H_ */
427