12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /* QLogic FCoE Offload Driver
- * Copyright (c) 2016-2018 Cavium Inc.
- *
- * This software is available under the terms of the GNU General Public License
- * (GPL) Version 2, available from the file COPYING in the main directory of
- * this source tree.
- */
- #ifndef _SCSI_FW_FUNCS_H
- #define _SCSI_FW_FUNCS_H
- #include <linux/qed/common_hsi.h>
- #include <linux/qed/storage_common.h>
- #include <linux/qed/fcoe_common.h>
- struct scsi_sgl_task_params {
- struct scsi_sge *sgl;
- struct regpair sgl_phys_addr;
- u32 total_buffer_size;
- u16 num_sges;
- /* true if SGL contains a small (< 4KB) SGE in middle(not 1st or last)
- * -> relevant for tx only
- */
- bool small_mid_sge;
- };
- struct scsi_dif_task_params {
- u32 initial_ref_tag;
- bool initial_ref_tag_is_valid;
- u16 application_tag;
- u16 application_tag_mask;
- u16 dif_block_size_log;
- bool dif_on_network;
- bool dif_on_host;
- u8 host_guard_type;
- u8 protection_type;
- u8 ref_tag_mask;
- bool crc_seed;
- /* Enable Connection error upon DIF error (segments with DIF errors are
- * dropped)
- */
- bool tx_dif_conn_err_en;
- bool ignore_app_tag;
- bool keep_ref_tag_const;
- bool validate_guard;
- bool validate_app_tag;
- bool validate_ref_tag;
- bool forward_guard;
- bool forward_app_tag;
- bool forward_ref_tag;
- bool forward_app_tag_with_mask;
- bool forward_ref_tag_with_mask;
- };
- struct scsi_initiator_cmd_params {
- /* for cdb_size > default CDB size (extended CDB > 16 bytes) ->
- * pointer to the CDB buffer SGE
- */
- struct scsi_sge extended_cdb_sge;
- /* Physical address of sense data buffer for sense data - 256B buffer */
- struct regpair sense_data_buffer_phys_addr;
- };
- /**
- * @brief scsi_is_slow_sgl - checks for slow SGL
- *
- * @param num_sges - number of sges in SGL
- * @param small_mid_sge - True is the SGL contains an SGE which is smaller than
- * 4KB and its not the 1st or last SGE in the SGL
- */
- bool scsi_is_slow_sgl(u16 num_sges, bool small_mid_sge);
- /**
- * @brief init_scsi_sgl_context - initializes SGL task context
- *
- * @param sgl_params - SGL context parameters to initialize (output parameter)
- * @param data_desc - context struct containing SGEs array to set (output
- * parameter)
- * @param sgl_task_params - SGL parameters (input)
- */
- void init_scsi_sgl_context(struct scsi_sgl_params *sgl_params,
- struct scsi_cached_sges *ctx_data_desc,
- struct scsi_sgl_task_params *sgl_task_params);
- #endif
|