1*3287e96aSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2be086e7cSMintz, Yuval /* QLogic FCoE Offload Driver 35d1c8b5bSChad Dupuis * Copyright (c) 2016-2018 Cavium Inc. 4be086e7cSMintz, Yuval */ 5be086e7cSMintz, Yuval #ifndef _SCSI_FW_FUNCS_H 6be086e7cSMintz, Yuval #define _SCSI_FW_FUNCS_H 7be086e7cSMintz, Yuval #include <linux/qed/common_hsi.h> 8be086e7cSMintz, Yuval #include <linux/qed/storage_common.h> 9be086e7cSMintz, Yuval #include <linux/qed/fcoe_common.h> 10be086e7cSMintz, Yuval 11be086e7cSMintz, Yuval struct scsi_sgl_task_params { 12be086e7cSMintz, Yuval struct scsi_sge *sgl; 13be086e7cSMintz, Yuval struct regpair sgl_phys_addr; 14be086e7cSMintz, Yuval u32 total_buffer_size; 15be086e7cSMintz, Yuval u16 num_sges; 16be086e7cSMintz, Yuval 17be086e7cSMintz, Yuval /* true if SGL contains a small (< 4KB) SGE in middle(not 1st or last) 18be086e7cSMintz, Yuval * -> relevant for tx only 19be086e7cSMintz, Yuval */ 20be086e7cSMintz, Yuval bool small_mid_sge; 21be086e7cSMintz, Yuval }; 22be086e7cSMintz, Yuval 23be086e7cSMintz, Yuval struct scsi_dif_task_params { 24be086e7cSMintz, Yuval u32 initial_ref_tag; 25be086e7cSMintz, Yuval bool initial_ref_tag_is_valid; 26be086e7cSMintz, Yuval u16 application_tag; 27be086e7cSMintz, Yuval u16 application_tag_mask; 28be086e7cSMintz, Yuval u16 dif_block_size_log; 29be086e7cSMintz, Yuval bool dif_on_network; 30be086e7cSMintz, Yuval bool dif_on_host; 31be086e7cSMintz, Yuval u8 host_guard_type; 32be086e7cSMintz, Yuval u8 protection_type; 33be086e7cSMintz, Yuval u8 ref_tag_mask; 34be086e7cSMintz, Yuval bool crc_seed; 35be086e7cSMintz, Yuval 36be086e7cSMintz, Yuval /* Enable Connection error upon DIF error (segments with DIF errors are 37be086e7cSMintz, Yuval * dropped) 38be086e7cSMintz, Yuval */ 39be086e7cSMintz, Yuval bool tx_dif_conn_err_en; 40be086e7cSMintz, Yuval bool ignore_app_tag; 41be086e7cSMintz, Yuval bool keep_ref_tag_const; 42be086e7cSMintz, Yuval bool validate_guard; 43be086e7cSMintz, Yuval bool validate_app_tag; 44be086e7cSMintz, Yuval bool validate_ref_tag; 45be086e7cSMintz, Yuval bool forward_guard; 46be086e7cSMintz, Yuval bool forward_app_tag; 47be086e7cSMintz, Yuval bool forward_ref_tag; 48be086e7cSMintz, Yuval bool forward_app_tag_with_mask; 49be086e7cSMintz, Yuval bool forward_ref_tag_with_mask; 50be086e7cSMintz, Yuval }; 51be086e7cSMintz, Yuval 52be086e7cSMintz, Yuval struct scsi_initiator_cmd_params { 53be086e7cSMintz, Yuval /* for cdb_size > default CDB size (extended CDB > 16 bytes) -> 54be086e7cSMintz, Yuval * pointer to the CDB buffer SGE 55be086e7cSMintz, Yuval */ 56be086e7cSMintz, Yuval struct scsi_sge extended_cdb_sge; 57be086e7cSMintz, Yuval 58be086e7cSMintz, Yuval /* Physical address of sense data buffer for sense data - 256B buffer */ 59be086e7cSMintz, Yuval struct regpair sense_data_buffer_phys_addr; 60be086e7cSMintz, Yuval }; 61be086e7cSMintz, Yuval 62be086e7cSMintz, Yuval /** 63be086e7cSMintz, Yuval * @brief scsi_is_slow_sgl - checks for slow SGL 64be086e7cSMintz, Yuval * 65be086e7cSMintz, Yuval * @param num_sges - number of sges in SGL 66be086e7cSMintz, Yuval * @param small_mid_sge - True is the SGL contains an SGE which is smaller than 67be086e7cSMintz, Yuval * 4KB and its not the 1st or last SGE in the SGL 68be086e7cSMintz, Yuval */ 69be086e7cSMintz, Yuval bool scsi_is_slow_sgl(u16 num_sges, bool small_mid_sge); 70be086e7cSMintz, Yuval 71be086e7cSMintz, Yuval /** 72be086e7cSMintz, Yuval * @brief init_scsi_sgl_context - initializes SGL task context 73be086e7cSMintz, Yuval * 74be086e7cSMintz, Yuval * @param sgl_params - SGL context parameters to initialize (output parameter) 75be086e7cSMintz, Yuval * @param data_desc - context struct containing SGEs array to set (output 76be086e7cSMintz, Yuval * parameter) 77be086e7cSMintz, Yuval * @param sgl_task_params - SGL parameters (input) 78be086e7cSMintz, Yuval */ 79be086e7cSMintz, Yuval void init_scsi_sgl_context(struct scsi_sgl_params *sgl_params, 80be086e7cSMintz, Yuval struct scsi_cached_sges *ctx_data_desc, 81be086e7cSMintz, Yuval struct scsi_sgl_task_params *sgl_task_params); 82be086e7cSMintz, Yuval #endif 83