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