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