Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ql4_glbl.h
Go to the documentation of this file.
1 /*
2  * QLogic iSCSI HBA Driver
3  * Copyright (c) 2003-2012 QLogic Corporation
4  *
5  * See LICENSE.qla4xxx for copyright and licensing details.
6  */
7 
8 #ifndef __QLA4x_GBL_H
9 #define __QLA4x_GBL_H
10 
11 struct iscsi_cls_conn;
12 
13 int qla4xxx_hw_reset(struct scsi_qla_host *ha);
15 int qla4xxx_send_command_to_isp(struct scsi_qla_host *ha, struct srb *srb);
16 int qla4xxx_initialize_adapter(struct scsi_qla_host *ha, int is_reset);
17 int qla4xxx_soft_reset(struct scsi_qla_host *ha);
19 
20 void qla4xxx_free_ddb(struct scsi_qla_host *ha, struct ddb_entry *ddb_entry);
21 void qla4xxx_process_aen(struct scsi_qla_host *ha, uint8_t process_aen);
22 
24 int qla4xxx_abort_task(struct scsi_qla_host *ha, struct srb *srb);
25 int qla4xxx_reset_lun(struct scsi_qla_host *ha, struct ddb_entry *ddb_entry,
26  int lun);
27 int qla4xxx_reset_target(struct scsi_qla_host *ha,
28  struct ddb_entry *ddb_entry);
30  uint32_t offset, uint32_t len);
34 
35 /* FIXME: Goodness! this really wants a small struct to hold the
36  * parameters. On x86 the args will get passed on the stack! */
38  uint16_t fw_ddb_index,
39  struct dev_db_entry *fw_ddb_entry,
40  dma_addr_t fw_ddb_entry_dma,
41  uint32_t *num_valid_ddb_entries,
42  uint32_t *next_ddb_index,
43  uint32_t *fw_ddb_device_state,
44  uint32_t *conn_err_detail,
45  uint16_t *tcp_source_port_num,
46  uint16_t *connection_id);
47 
48 int qla4xxx_set_ddb_entry(struct scsi_qla_host * ha, uint16_t fw_ddb_index,
49  dma_addr_t fw_ddb_entry_dma, uint32_t *mbx_sts);
50 uint8_t qla4xxx_get_ifcb(struct scsi_qla_host *ha, uint32_t *mbox_cmd,
51  uint32_t *mbox_sts, dma_addr_t init_fw_cb_dma);
53  uint16_t fw_ddb_index,
54  uint16_t connection_id,
56 int qla4xxx_disable_acb(struct scsi_qla_host *ha);
57 int qla4xxx_set_acb(struct scsi_qla_host *ha, uint32_t *mbox_cmd,
58  uint32_t *mbox_sts, dma_addr_t acb_dma);
59 int qla4xxx_get_acb(struct scsi_qla_host *ha, dma_addr_t acb_dma,
60  uint32_t acb_type, uint32_t len);
61 int qla4xxx_get_ip_state(struct scsi_qla_host *ha, uint32_t acb_idx,
62  uint32_t ip_idx, uint32_t *sts);
63 void qla4xxx_mark_device_missing(struct iscsi_cls_session *cls_session);
64 u16 rd_nvram_word(struct scsi_qla_host *ha, int offset);
65 u8 rd_nvram_byte(struct scsi_qla_host *ha, int offset);
70  uint32_t intr_status);
71 int qla4xxx_init_rings(struct scsi_qla_host *ha);
72 void qla4xxx_srb_compl(struct kref *ref);
74  uint32_t index);
75 int qla4xxx_process_ddb_changed(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
76  uint32_t state, uint32_t conn_error);
77 void qla4xxx_dump_buffer(void *b, uint32_t size);
79  struct ddb_entry *ddb_entry, int lun, uint16_t mrkr_mod);
82 int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
83  uint8_t outCount, uint32_t *mbx_cmd, uint32_t *mbx_sts);
84 int qla4xxx_get_chap_index(struct scsi_qla_host *ha, char *username,
85  char *password, int bidi, uint16_t *chap_index);
86 
87 void qla4xxx_queue_iocb(struct scsi_qla_host *ha);
91 void qla4xxx_pci_config(struct scsi_qla_host *ha);
97 void qla4xxx_free_irqs(struct scsi_qla_host *ha);
99 void qla4xxx_wake_dpc(struct scsi_qla_host *ha);
104  uint32_t *mbox_cmd,
105  uint32_t *mbox_sts,
106  struct addr_ctrl_blk *init_fw_cb,
107  dma_addr_t init_fw_cb_dma);
108 
109 void qla4_8xxx_pci_config(struct scsi_qla_host *);
111 int qla4_8xxx_load_risc(struct scsi_qla_host *);
115 
119 void qla4_82xx_wr_32(struct scsi_qla_host *, ulong, u32);
121 int qla4_82xx_pci_mem_read_2M(struct scsi_qla_host *, u64, void *, int);
122 int qla4_82xx_pci_mem_write_2M(struct scsi_qla_host *ha, u64, void *, int);
125  uint32_t intr_status);
129 void qla4_8xxx_watchdog(struct scsi_qla_host *ha);
138 irqreturn_t qla4_8xxx_msix_rsp_q(int irq, void *dev_id);
141 int qla4_82xx_idc_lock(struct scsi_qla_host *ha);
147 int qla4xxx_conn_open(struct scsi_qla_host *ha, uint16_t fw_ddb_index);
149  struct ddb_entry *ddb_entry,
150  struct iscsi_cls_conn *cls_conn,
151  uint32_t *mbx_sts);
153  struct ddb_entry *ddb_entry, int options);
154 int qla4xxx_req_ddb_entry(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
155  uint32_t *mbx_sts);
156 int qla4xxx_clear_ddb_entry(struct scsi_qla_host *ha, uint32_t fw_ddb_index);
159 int qla4xxx_get_mgmt_data(struct scsi_qla_host *ha, uint16_t fw_ddb_index,
160  uint16_t stats_size, dma_addr_t stats_dma);
162  struct ddb_entry *ddb_entry);
164  struct ddb_entry *ddb_entry);
166  struct dev_db_entry *fw_ddb_entry,
167  dma_addr_t fw_ddb_entry_dma, uint16_t ddb_index);
168 int qla4xxx_get_chap(struct scsi_qla_host *ha, char *username,
169  char *password, uint16_t idx);
170 int qla4xxx_get_nvram(struct scsi_qla_host *ha, dma_addr_t nvram_dma,
172 int qla4xxx_set_nvram(struct scsi_qla_host *ha, dma_addr_t nvram_dma,
175  uint32_t region, uint32_t field0,
176  uint32_t field1);
177 int qla4xxx_get_ddb_index(struct scsi_qla_host *ha, uint16_t *ddb_index);
178 void qla4xxx_login_flash_ddb(struct iscsi_cls_session *cls_session);
179 int qla4xxx_unblock_ddb(struct iscsi_cls_session *cls_session);
180 int qla4xxx_unblock_flash_ddb(struct iscsi_cls_session *cls_session);
181 int qla4xxx_flash_ddb_change(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
182  struct ddb_entry *ddb_entry, uint32_t state);
183 int qla4xxx_ddb_change(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
184  struct ddb_entry *ddb_entry, uint32_t state);
185 void qla4xxx_build_ddb_list(struct scsi_qla_host *ha, int is_reset);
187  enum iscsi_host_event_code aen_code,
194 
195 /* BSG Functions */
196 int qla4xxx_bsg_request(struct bsg_job *bsg_job);
198 
211 void qla4_82xx_queue_mbox_cmd(struct scsi_qla_host *ha, uint32_t *mbx_cmd,
212  int incount);
213 void qla4_82xx_process_mbox_intr(struct scsi_qla_host *ha, int outcount);
214 void qla4xxx_queue_mbox_cmd(struct scsi_qla_host *ha, uint32_t *mbx_cmd,
215  int incount);
216 void qla4xxx_process_mbox_intr(struct scsi_qla_host *ha, int outcount);
223  uint32_t intr_status);
232  uint32_t *data);
234  uint32_t data);
235 int qla4_83xx_drv_lock(struct scsi_qla_host *ha);
238 void qla4_83xx_queue_mbox_cmd(struct scsi_qla_host *ha, uint32_t *mbx_cmd,
239  int incount);
240 void qla4_83xx_process_mbox_intr(struct scsi_qla_host *ha, int outcount);
245  uint32_t flash_addr, uint8_t *p_data,
246  int u32_word_count);
249 int qla4_83xx_flash_read_u32(struct scsi_qla_host *ha, uint32_t flash_addr,
250  uint8_t *p_data, int u32_word_count);
258 int qla4_8xxx_set_param(struct scsi_qla_host *ha, int param);
262 
263 extern int ql4xextended_error_logging;
264 extern int ql4xdontresethba;
265 extern int ql4xenablemsix;
266 extern int ql4xmdcapmask;
267 extern int ql4xenablemd;
268 
269 extern struct device_attribute *qla4xxx_host_attrs[];
270 #endif /* _QLA4x_GBL_H */