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
12struct iscsi_task_params {
13 struct 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
22struct 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 */
40int 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 */
56int 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 */
69int 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 */
82int 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 */
93int 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 */
104int 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 */
113int init_cleanup_task(struct iscsi_task_params *task_params);
114#endif
115

source code of linux/drivers/scsi/qedi/qedi_fw_iscsi.h