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