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