xref: /OK3568_Linux_fs/kernel/drivers/scsi/qedi/qedi_gbl.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * QLogic iSCSI Offload Driver
4*4882a593Smuzhiyun  * Copyright (c) 2016 Cavium Inc.
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #ifndef _QEDI_GBL_H_
8*4882a593Smuzhiyun #define _QEDI_GBL_H_
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #include "qedi_iscsi.h"
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #ifdef CONFIG_DEBUG_FS
13*4882a593Smuzhiyun extern int qedi_do_not_recover;
14*4882a593Smuzhiyun #else
15*4882a593Smuzhiyun #define qedi_do_not_recover (0)
16*4882a593Smuzhiyun #endif
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun extern uint qedi_io_tracing;
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun extern struct scsi_host_template qedi_host_template;
21*4882a593Smuzhiyun extern struct iscsi_transport qedi_iscsi_transport;
22*4882a593Smuzhiyun extern const struct qed_iscsi_ops *qedi_ops;
23*4882a593Smuzhiyun extern const struct qedi_debugfs_ops qedi_debugfs_ops[];
24*4882a593Smuzhiyun extern const struct file_operations qedi_dbg_fops[];
25*4882a593Smuzhiyun extern struct device_attribute *qedi_shost_attrs[];
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun int qedi_alloc_sq(struct qedi_ctx *qedi, struct qedi_endpoint *ep);
28*4882a593Smuzhiyun void qedi_free_sq(struct qedi_ctx *qedi, struct qedi_endpoint *ep);
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun int qedi_send_iscsi_login(struct qedi_conn *qedi_conn,
31*4882a593Smuzhiyun 			  struct iscsi_task *task);
32*4882a593Smuzhiyun int qedi_send_iscsi_logout(struct qedi_conn *qedi_conn,
33*4882a593Smuzhiyun 			   struct iscsi_task *task);
34*4882a593Smuzhiyun int qedi_iscsi_abort_work(struct qedi_conn *qedi_conn,
35*4882a593Smuzhiyun 			  struct iscsi_task *mtask);
36*4882a593Smuzhiyun int qedi_send_iscsi_text(struct qedi_conn *qedi_conn,
37*4882a593Smuzhiyun 			 struct iscsi_task *task);
38*4882a593Smuzhiyun int qedi_send_iscsi_nopout(struct qedi_conn *qedi_conn,
39*4882a593Smuzhiyun 			   struct iscsi_task *task,
40*4882a593Smuzhiyun 			   char *datap, int data_len, int unsol);
41*4882a593Smuzhiyun int qedi_iscsi_send_ioreq(struct iscsi_task *task);
42*4882a593Smuzhiyun int qedi_get_task_idx(struct qedi_ctx *qedi);
43*4882a593Smuzhiyun void qedi_clear_task_idx(struct qedi_ctx *qedi, int idx);
44*4882a593Smuzhiyun int qedi_iscsi_cleanup_task(struct iscsi_task *task,
45*4882a593Smuzhiyun 			    bool mark_cmd_node_deleted);
46*4882a593Smuzhiyun void qedi_iscsi_unmap_sg_list(struct qedi_cmd *cmd);
47*4882a593Smuzhiyun void qedi_update_itt_map(struct qedi_ctx *qedi, u32 tid, u32 proto_itt,
48*4882a593Smuzhiyun 			 struct qedi_cmd *qedi_cmd);
49*4882a593Smuzhiyun void qedi_get_proto_itt(struct qedi_ctx *qedi, u32 tid, u32 *proto_itt);
50*4882a593Smuzhiyun void qedi_get_task_tid(struct qedi_ctx *qedi, u32 itt, int16_t *tid);
51*4882a593Smuzhiyun void qedi_process_iscsi_error(struct qedi_endpoint *ep,
52*4882a593Smuzhiyun 			      struct iscsi_eqe_data *data);
53*4882a593Smuzhiyun void qedi_start_conn_recovery(struct qedi_ctx *qedi,
54*4882a593Smuzhiyun 			      struct qedi_conn *qedi_conn);
55*4882a593Smuzhiyun struct qedi_conn *qedi_get_conn_from_id(struct qedi_ctx *qedi, u32 iscsi_cid);
56*4882a593Smuzhiyun void qedi_process_tcp_error(struct qedi_endpoint *ep,
57*4882a593Smuzhiyun 			    struct iscsi_eqe_data *data);
58*4882a593Smuzhiyun void qedi_mark_device_missing(struct iscsi_cls_session *cls_session);
59*4882a593Smuzhiyun void qedi_mark_device_available(struct iscsi_cls_session *cls_session);
60*4882a593Smuzhiyun void qedi_reset_host_mtu(struct qedi_ctx *qedi, u16 mtu);
61*4882a593Smuzhiyun int qedi_recover_all_conns(struct qedi_ctx *qedi);
62*4882a593Smuzhiyun void qedi_fp_process_cqes(struct qedi_work *work);
63*4882a593Smuzhiyun int qedi_cleanup_all_io(struct qedi_ctx *qedi,
64*4882a593Smuzhiyun 			struct qedi_conn *qedi_conn,
65*4882a593Smuzhiyun 			struct iscsi_task *task, bool in_recovery);
66*4882a593Smuzhiyun void qedi_trace_io(struct qedi_ctx *qedi, struct iscsi_task *task,
67*4882a593Smuzhiyun 		   u16 tid, int8_t direction);
68*4882a593Smuzhiyun int qedi_alloc_id(struct qedi_portid_tbl *id_tbl, u16 id);
69*4882a593Smuzhiyun u16 qedi_alloc_new_id(struct qedi_portid_tbl *id_tbl);
70*4882a593Smuzhiyun void qedi_free_id(struct qedi_portid_tbl *id_tbl, u16 id);
71*4882a593Smuzhiyun int qedi_create_sysfs_ctx_attr(struct qedi_ctx *qedi);
72*4882a593Smuzhiyun void qedi_remove_sysfs_ctx_attr(struct qedi_ctx *qedi);
73*4882a593Smuzhiyun void qedi_clearsq(struct qedi_ctx *qedi,
74*4882a593Smuzhiyun 		  struct qedi_conn *qedi_conn,
75*4882a593Smuzhiyun 		  struct iscsi_task *task);
76*4882a593Smuzhiyun void qedi_clear_session_ctx(struct iscsi_cls_session *cls_sess);
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #endif
79