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