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