1be086e7cSMintz, Yuval /* QLogic FCoE Offload Driver 2be086e7cSMintz, Yuval * Copyright (c) 2016 Cavium Inc. 3be086e7cSMintz, Yuval * 4be086e7cSMintz, Yuval * This software is available under the terms of the GNU General Public License 5be086e7cSMintz, Yuval * (GPL) Version 2, available from the file COPYING in the main directory of 6be086e7cSMintz, Yuval * this source tree. 7be086e7cSMintz, Yuval */ 8be086e7cSMintz, Yuval #ifndef _FCOE_FW_FUNCS_H 9be086e7cSMintz, Yuval #define _FCOE_FW_FUNCS_H 10be086e7cSMintz, Yuval #include "drv_scsi_fw_funcs.h" 11be086e7cSMintz, Yuval #include "qedf_hsi.h" 12be086e7cSMintz, Yuval #include <linux/qed/qed_if.h> 13be086e7cSMintz, Yuval 14be086e7cSMintz, Yuval struct fcoe_task_params { 15be086e7cSMintz, Yuval /* Output parameter [set/filled by the HSI function] */ 16be086e7cSMintz, Yuval struct fcoe_task_context *context; 17be086e7cSMintz, Yuval 18be086e7cSMintz, Yuval /* Output parameter [set/filled by the HSI function] */ 19be086e7cSMintz, Yuval struct fcoe_wqe *sqe; 20be086e7cSMintz, Yuval enum fcoe_task_type task_type; 21be086e7cSMintz, Yuval u32 tx_io_size; /* in bytes */ 22be086e7cSMintz, Yuval u32 rx_io_size; /* in bytes */ 23be086e7cSMintz, Yuval u32 conn_cid; 24be086e7cSMintz, Yuval u16 itid; 25be086e7cSMintz, Yuval u8 cq_rss_number; 26be086e7cSMintz, Yuval 27be086e7cSMintz, Yuval /* Whether it's Tape device or not (0=Disk, 1=Tape) */ 28be086e7cSMintz, Yuval u8 is_tape_device; 29be086e7cSMintz, Yuval }; 30be086e7cSMintz, Yuval 31be086e7cSMintz, Yuval /** 32be086e7cSMintz, Yuval * @brief init_initiator_rw_fcoe_task - Initializes FCoE task context for 33be086e7cSMintz, Yuval * read/write task types and init fcoe_sqe 34be086e7cSMintz, Yuval * 35be086e7cSMintz, Yuval * @param task_params - Pointer to task parameters struct 36be086e7cSMintz, Yuval * @param sgl_task_params - Pointer to SGL task params 37be086e7cSMintz, Yuval * @param sense_data_buffer_phys_addr - Pointer to sense data buffer 38be086e7cSMintz, Yuval * @param task_retry_id - retry identification - Used only for Tape device 39be086e7cSMintz, Yuval * @param fcp_cmnd_payload - FCP CMD Payload 40be086e7cSMintz, Yuval */ 41be086e7cSMintz, Yuval int init_initiator_rw_fcoe_task(struct fcoe_task_params *task_params, 42be086e7cSMintz, Yuval struct scsi_sgl_task_params *sgl_task_params, 43be086e7cSMintz, Yuval struct regpair sense_data_buffer_phys_addr, 44be086e7cSMintz, Yuval u32 task_retry_id, 45be086e7cSMintz, Yuval u8 fcp_cmd_payload[32]); 46be086e7cSMintz, Yuval 47be086e7cSMintz, Yuval /** 48be086e7cSMintz, Yuval * @brief init_initiator_midpath_fcoe_task - Initializes FCoE task context for 49be086e7cSMintz, Yuval * midpath/unsolicited task types and init fcoe_sqe 50be086e7cSMintz, Yuval * 51be086e7cSMintz, Yuval * @param task_params - Pointer to task parameters struct 52be086e7cSMintz, Yuval * @param mid_path_fc_header - FC header 53be086e7cSMintz, Yuval * @param tx_sgl_task_params - Pointer to Tx SGL task params 54be086e7cSMintz, Yuval * @param rx_sgl_task_params - Pointer to Rx SGL task params 55be086e7cSMintz, Yuval * @param fw_to_place_fc_header - Indication if the FW will place the FC header 56be086e7cSMintz, Yuval * in addition to the data arrives. 57be086e7cSMintz, Yuval */ 58be086e7cSMintz, Yuval int init_initiator_midpath_unsolicited_fcoe_task( 59be086e7cSMintz, Yuval struct fcoe_task_params *task_params, 60be086e7cSMintz, Yuval struct fcoe_tx_mid_path_params *mid_path_fc_header, 61be086e7cSMintz, Yuval struct scsi_sgl_task_params *tx_sgl_task_params, 62be086e7cSMintz, Yuval struct scsi_sgl_task_params *rx_sgl_task_params, 63be086e7cSMintz, Yuval u8 fw_to_place_fc_header); 64be086e7cSMintz, Yuval 65be086e7cSMintz, Yuval /** 66be086e7cSMintz, Yuval * @brief init_initiator_abort_fcoe_task - Initializes FCoE task context for 67be086e7cSMintz, Yuval * abort task types and init fcoe_sqe 68be086e7cSMintz, Yuval * 69be086e7cSMintz, Yuval * @param task_params - Pointer to task parameters struct 70be086e7cSMintz, Yuval */ 71be086e7cSMintz, Yuval int init_initiator_abort_fcoe_task(struct fcoe_task_params *task_params); 72be086e7cSMintz, Yuval 73be086e7cSMintz, Yuval /** 74be086e7cSMintz, Yuval * @brief init_initiator_cleanup_fcoe_task - Initializes FCoE task context for 75be086e7cSMintz, Yuval * cleanup task types and init fcoe_sqe 76be086e7cSMintz, Yuval * 77be086e7cSMintz, Yuval * 78be086e7cSMintz, Yuval * @param task_params - Pointer to task parameters struct 79be086e7cSMintz, Yuval */ 80be086e7cSMintz, Yuval int init_initiator_cleanup_fcoe_task(struct fcoe_task_params *task_params); 81be086e7cSMintz, Yuval 82be086e7cSMintz, Yuval /** 83be086e7cSMintz, Yuval * @brief init_initiator_cleanup_fcoe_task - Initializes FCoE task context for 84be086e7cSMintz, Yuval * sequence recovery task types and init fcoe_sqe 85be086e7cSMintz, Yuval * 86be086e7cSMintz, Yuval * 87be086e7cSMintz, Yuval * @param task_params - Pointer to task parameters struct 88be086e7cSMintz, Yuval * @param desired_offset - The desired offest the task will be re-sent from 89be086e7cSMintz, Yuval */ 90be086e7cSMintz, Yuval int init_initiator_sequence_recovery_fcoe_task( 91be086e7cSMintz, Yuval struct fcoe_task_params *task_params, 92be086e7cSMintz, Yuval u32 desired_offset); 93be086e7cSMintz, Yuval #endif 94