Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * QLogic iSCSI Offload Driver
0004  * Copyright (c) 2016 Cavium Inc.
0005  */
0006 
0007 #ifndef _QEDI_GBL_H_
0008 #define _QEDI_GBL_H_
0009 
0010 #include "qedi_iscsi.h"
0011 
0012 #ifdef CONFIG_DEBUG_FS
0013 extern int qedi_do_not_recover;
0014 #else
0015 #define qedi_do_not_recover (0)
0016 #endif
0017 
0018 extern uint qedi_io_tracing;
0019 
0020 extern struct scsi_host_template qedi_host_template;
0021 extern struct iscsi_transport qedi_iscsi_transport;
0022 extern const struct qed_iscsi_ops *qedi_ops;
0023 extern const struct qedi_debugfs_ops qedi_debugfs_ops[];
0024 extern const struct file_operations qedi_dbg_fops[];
0025 extern const struct attribute_group *qedi_shost_groups[];
0026 
0027 int qedi_alloc_sq(struct qedi_ctx *qedi, struct qedi_endpoint *ep);
0028 void qedi_free_sq(struct qedi_ctx *qedi, struct qedi_endpoint *ep);
0029 
0030 int qedi_send_iscsi_login(struct qedi_conn *qedi_conn,
0031               struct iscsi_task *task);
0032 int qedi_send_iscsi_logout(struct qedi_conn *qedi_conn,
0033                struct iscsi_task *task);
0034 int qedi_send_iscsi_tmf(struct qedi_conn *qedi_conn, struct iscsi_task *mtask);
0035 int qedi_send_iscsi_text(struct qedi_conn *qedi_conn,
0036              struct iscsi_task *task);
0037 int qedi_send_iscsi_nopout(struct qedi_conn *qedi_conn,
0038                struct iscsi_task *task,
0039                char *datap, int data_len, int unsol);
0040 int qedi_iscsi_send_ioreq(struct iscsi_task *task);
0041 int qedi_get_task_idx(struct qedi_ctx *qedi);
0042 void qedi_clear_task_idx(struct qedi_ctx *qedi, int idx);
0043 int qedi_iscsi_cleanup_task(struct iscsi_task *task,
0044                 bool mark_cmd_node_deleted);
0045 void qedi_iscsi_unmap_sg_list(struct qedi_cmd *cmd);
0046 void qedi_update_itt_map(struct qedi_ctx *qedi, u32 tid, u32 proto_itt,
0047              struct qedi_cmd *qedi_cmd);
0048 void qedi_get_proto_itt(struct qedi_ctx *qedi, u32 tid, u32 *proto_itt);
0049 void qedi_get_task_tid(struct qedi_ctx *qedi, u32 itt, int16_t *tid);
0050 void qedi_process_iscsi_error(struct qedi_endpoint *ep,
0051                   struct iscsi_eqe_data *data);
0052 void qedi_start_conn_recovery(struct qedi_ctx *qedi,
0053                   struct qedi_conn *qedi_conn);
0054 struct qedi_conn *qedi_get_conn_from_id(struct qedi_ctx *qedi, u32 iscsi_cid);
0055 void qedi_process_tcp_error(struct qedi_endpoint *ep,
0056                 struct iscsi_eqe_data *data);
0057 void qedi_mark_device_missing(struct iscsi_cls_session *cls_session);
0058 void qedi_mark_device_available(struct iscsi_cls_session *cls_session);
0059 void qedi_reset_host_mtu(struct qedi_ctx *qedi, u16 mtu);
0060 int qedi_recover_all_conns(struct qedi_ctx *qedi);
0061 void qedi_fp_process_cqes(struct qedi_work *work);
0062 int qedi_cleanup_all_io(struct qedi_ctx *qedi,
0063             struct qedi_conn *qedi_conn,
0064             struct iscsi_task *task, bool in_recovery);
0065 void qedi_trace_io(struct qedi_ctx *qedi, struct iscsi_task *task,
0066            u16 tid, int8_t direction);
0067 int qedi_alloc_id(struct qedi_portid_tbl *id_tbl, u16 id);
0068 u16 qedi_alloc_new_id(struct qedi_portid_tbl *id_tbl);
0069 void qedi_free_id(struct qedi_portid_tbl *id_tbl, u16 id);
0070 int qedi_create_sysfs_ctx_attr(struct qedi_ctx *qedi);
0071 void qedi_remove_sysfs_ctx_attr(struct qedi_ctx *qedi);
0072 void qedi_clearsq(struct qedi_ctx *qedi,
0073           struct qedi_conn *qedi_conn,
0074           struct iscsi_task *task);
0075 
0076 #endif