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_GBL_H_ |
8 | #define _QEDI_GBL_H_ |
9 | |
10 | #include "qedi_iscsi.h" |
11 | |
12 | #ifdef CONFIG_DEBUG_FS |
13 | extern int qedi_do_not_recover; |
14 | #else |
15 | #define qedi_do_not_recover (0) |
16 | #endif |
17 | |
18 | extern uint qedi_io_tracing; |
19 | |
20 | extern const struct scsi_host_template qedi_host_template; |
21 | extern struct iscsi_transport qedi_iscsi_transport; |
22 | extern const struct qed_iscsi_ops *qedi_ops; |
23 | extern const struct qedi_debugfs_ops qedi_debugfs_ops[]; |
24 | extern const struct file_operations qedi_dbg_fops[]; |
25 | extern const struct attribute_group *qedi_shost_groups[]; |
26 | |
27 | int qedi_alloc_sq(struct qedi_ctx *qedi, struct qedi_endpoint *ep); |
28 | void qedi_free_sq(struct qedi_ctx *qedi, struct qedi_endpoint *ep); |
29 | |
30 | int qedi_send_iscsi_login(struct qedi_conn *qedi_conn, |
31 | struct iscsi_task *task); |
32 | int qedi_send_iscsi_logout(struct qedi_conn *qedi_conn, |
33 | struct iscsi_task *task); |
34 | int qedi_send_iscsi_tmf(struct qedi_conn *qedi_conn, struct iscsi_task *mtask); |
35 | int qedi_send_iscsi_text(struct qedi_conn *qedi_conn, |
36 | struct iscsi_task *task); |
37 | int qedi_send_iscsi_nopout(struct qedi_conn *qedi_conn, |
38 | struct iscsi_task *task, |
39 | char *datap, int data_len, int unsol); |
40 | int qedi_iscsi_send_ioreq(struct iscsi_task *task); |
41 | int qedi_get_task_idx(struct qedi_ctx *qedi); |
42 | void qedi_clear_task_idx(struct qedi_ctx *qedi, int idx); |
43 | int qedi_iscsi_cleanup_task(struct iscsi_task *task, |
44 | bool mark_cmd_node_deleted); |
45 | void qedi_iscsi_unmap_sg_list(struct qedi_cmd *cmd); |
46 | void qedi_update_itt_map(struct qedi_ctx *qedi, u32 tid, u32 proto_itt, |
47 | struct qedi_cmd *qedi_cmd); |
48 | void qedi_get_proto_itt(struct qedi_ctx *qedi, u32 tid, u32 *proto_itt); |
49 | void qedi_get_task_tid(struct qedi_ctx *qedi, u32 itt, int16_t *tid); |
50 | void qedi_process_iscsi_error(struct qedi_endpoint *ep, |
51 | struct iscsi_eqe_data *data); |
52 | void qedi_start_conn_recovery(struct qedi_ctx *qedi, |
53 | struct qedi_conn *qedi_conn); |
54 | struct qedi_conn *qedi_get_conn_from_id(struct qedi_ctx *qedi, u32 iscsi_cid); |
55 | void qedi_process_tcp_error(struct qedi_endpoint *ep, |
56 | struct iscsi_eqe_data *data); |
57 | void qedi_mark_device_missing(struct iscsi_cls_session *cls_session); |
58 | void qedi_mark_device_available(struct iscsi_cls_session *cls_session); |
59 | void qedi_reset_host_mtu(struct qedi_ctx *qedi, u16 mtu); |
60 | int qedi_recover_all_conns(struct qedi_ctx *qedi); |
61 | void qedi_fp_process_cqes(struct qedi_work *work); |
62 | int qedi_cleanup_all_io(struct qedi_ctx *qedi, |
63 | struct qedi_conn *qedi_conn, |
64 | struct iscsi_task *task, bool in_recovery); |
65 | void qedi_trace_io(struct qedi_ctx *qedi, struct iscsi_task *task, |
66 | u16 tid, int8_t direction); |
67 | int qedi_alloc_id(struct qedi_portid_tbl *id_tbl, u16 id); |
68 | u16 qedi_alloc_new_id(struct qedi_portid_tbl *id_tbl); |
69 | void qedi_free_id(struct qedi_portid_tbl *id_tbl, u16 id); |
70 | void qedi_clearsq(struct qedi_ctx *qedi, |
71 | struct qedi_conn *qedi_conn, |
72 | struct iscsi_task *task); |
73 | |
74 | #endif |
75 | |