1 /* QLogic FCoE Offload Driver
2 * Copyright (c) 2016-2017 Cavium Inc.
4 * This software is available under the terms of the GNU General Public License
5 * (GPL) Version 2, available from the file COPYING in the main directory of
8 #ifndef _SCSI_FW_FUNCS_H
9 #define _SCSI_FW_FUNCS_H
10 #include <linux/qed/common_hsi.h>
11 #include <linux/qed/storage_common.h>
12 #include <linux/qed/fcoe_common.h>
14 struct scsi_sgl_task_params
{
16 struct regpair sgl_phys_addr
;
17 u32 total_buffer_size
;
20 /* true if SGL contains a small (< 4KB) SGE in middle(not 1st or last)
21 * -> relevant for tx only
26 struct scsi_dif_task_params
{
28 bool initial_ref_tag_is_valid
;
30 u16 application_tag_mask
;
31 u16 dif_block_size_log
;
39 /* Enable Connection error upon DIF error (segments with DIF errors are
42 bool tx_dif_conn_err_en
;
44 bool keep_ref_tag_const
;
46 bool validate_app_tag
;
47 bool validate_ref_tag
;
51 bool forward_app_tag_with_mask
;
52 bool forward_ref_tag_with_mask
;
55 struct scsi_initiator_cmd_params
{
56 /* for cdb_size > default CDB size (extended CDB > 16 bytes) ->
57 * pointer to the CDB buffer SGE
59 struct scsi_sge extended_cdb_sge
;
61 /* Physical address of sense data buffer for sense data - 256B buffer */
62 struct regpair sense_data_buffer_phys_addr
;
66 * @brief scsi_is_slow_sgl - checks for slow SGL
68 * @param num_sges - number of sges in SGL
69 * @param small_mid_sge - True is the SGL contains an SGE which is smaller than
70 * 4KB and its not the 1st or last SGE in the SGL
72 bool scsi_is_slow_sgl(u16 num_sges
, bool small_mid_sge
);
75 * @brief init_scsi_sgl_context - initializes SGL task context
77 * @param sgl_params - SGL context parameters to initialize (output parameter)
78 * @param data_desc - context struct containing SGEs array to set (output
80 * @param sgl_task_params - SGL parameters (input)
82 void init_scsi_sgl_context(struct scsi_sgl_params
*sgl_params
,
83 struct scsi_cached_sges
*ctx_data_desc
,
84 struct scsi_sgl_task_params
*sgl_task_params
);