Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[linux-2.6-block.git] / drivers / scsi / qedi / qedi_fw_iscsi.h
CommitLineData
be086e7c
MY
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
15struct iscsi_task_params {
21dd79e8 16 struct e4_iscsi_task_context *context;
be086e7c
MY
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
25struct 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 */
43int 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 */
59int 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 */
72int 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 */
85int 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 */
96int 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 */
107int 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 */
116int init_cleanup_task(struct iscsi_task_params *task_params);
117#endif