Linux-libre 5.4.47-gnu
[librecmc/linux-libre.git] / drivers / scsi / qedi / qedi_fw_iscsi.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * QLogic iSCSI Offload Driver
4  * Copyright (c) 2016 Cavium Inc.
5  */
6
7 #ifndef _QEDI_FW_ISCSI_H_
8 #define _QEDI_FW_ISCSI_H_
9
10 #include "qedi_fw_scsi.h"
11
12 struct iscsi_task_params {
13         struct e4_iscsi_task_context *context;
14         struct iscsi_wqe          *sqe;
15         u32                       tx_io_size;
16         u32                       rx_io_size;
17         u16                       conn_icid;
18         u16                       itid;
19         u8                        cq_rss_number;
20 };
21
22 struct iscsi_conn_params {
23         u32     first_burst_length;
24         u32     max_send_pdu_length;
25         u32     max_burst_length;
26         bool    initial_r2t;
27         bool    immediate_data;
28 };
29
30 /* @brief init_initiator_read_iscsi_task - initializes iSCSI Initiator Read
31  * task context.
32  *
33  * @param task_params     - Pointer to task parameters struct
34  * @param conn_params     - Connection Parameters
35  * @param cmd_params      - command specific parameters
36  * @param cmd_pdu_header  - PDU Header Parameters
37  * @param sgl_task_params - Pointer to SGL task params
38  * @param dif_task_params - Pointer to DIF parameters struct
39  */
40 int init_initiator_rw_iscsi_task(struct iscsi_task_params *task_params,
41                                  struct iscsi_conn_params *conn_params,
42                                  struct scsi_initiator_cmd_params *cmd_params,
43                                  struct iscsi_cmd_hdr *cmd_pdu_header,
44                                  struct scsi_sgl_task_params *tx_sgl_params,
45                                  struct scsi_sgl_task_params *rx_sgl_params,
46                                  struct scsi_dif_task_params *dif_task_params);
47
48 /* @brief init_initiator_login_request_task - initializes iSCSI Initiator Login
49  * Request task context.
50  *
51  * @param task_params             - Pointer to task parameters struct
52  * @param login_req_pdu_header    - PDU Header Parameters
53  * @param tx_sgl_task_params      - Pointer to SGL task params
54  * @param rx_sgl_task_params      - Pointer to SGL task params
55  */
56 int init_initiator_login_request_task(struct iscsi_task_params *task_params,
57                                       struct iscsi_login_req_hdr *login_header,
58                                       struct scsi_sgl_task_params *tx_params,
59                                       struct scsi_sgl_task_params *rx_params);
60
61 /* @brief init_initiator_nop_out_task - initializes iSCSI Initiator NOP Out
62  * task context.
63  *
64  * @param task_params           - Pointer to task parameters struct
65  * @param nop_out_pdu_header    - PDU Header Parameters
66  * @param tx_sgl_task_params    - Pointer to SGL task params
67  * @param rx_sgl_task_params    - Pointer to SGL task params
68  */
69 int init_initiator_nop_out_task(struct iscsi_task_params *task_params,
70                                 struct iscsi_nop_out_hdr *nop_out_pdu_header,
71                                 struct scsi_sgl_task_params *tx_sgl_params,
72                                 struct scsi_sgl_task_params *rx_sgl_params);
73
74 /* @brief init_initiator_logout_request_task - initializes iSCSI Initiator
75  * Logout Request task context.
76  *
77  * @param task_params           - Pointer to task parameters struct
78  * @param logout_pdu_header  - PDU Header Parameters
79  * @param tx_sgl_task_params    - Pointer to SGL task params
80  * @param rx_sgl_task_params    - Pointer to SGL task params
81  */
82 int init_initiator_logout_request_task(struct iscsi_task_params *task_params,
83                                        struct iscsi_logout_req_hdr *logout_hdr,
84                                        struct scsi_sgl_task_params *tx_params,
85                                        struct scsi_sgl_task_params *rx_params);
86
87 /* @brief init_initiator_tmf_request_task - initializes iSCSI Initiator TMF
88  * task context.
89  *
90  * @param task_params   - Pointer to task parameters struct
91  * @param tmf_pdu_header - PDU Header Parameters
92  */
93 int init_initiator_tmf_request_task(struct iscsi_task_params *task_params,
94                                     struct iscsi_tmf_request_hdr *tmf_header);
95
96 /* @brief init_initiator_text_request_task - initializes iSCSI Initiator Text
97  * Request task context.
98  *
99  * @param task_params                - Pointer to task parameters struct
100  * @param text_request_pdu_header    - PDU Header Parameters
101  * @param tx_sgl_task_params         - Pointer to Tx SGL task params
102  * @param rx_sgl_task_params         - Pointer to Rx SGL task params
103  */
104 int init_initiator_text_request_task(struct iscsi_task_params *task_params,
105                                      struct iscsi_text_request_hdr *text_header,
106                                      struct scsi_sgl_task_params *tx_params,
107                                      struct scsi_sgl_task_params *rx_params);
108
109 /* @brief init_cleanup_task - initializes Clean task (SQE)
110  *
111  * @param task_params - Pointer to task parameters struct
112  */
113 int init_cleanup_task(struct iscsi_task_params *task_params);
114 #endif