Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
qla_gbl.h
Go to the documentation of this file.
1 /*
2  * QLogic Fibre Channel HBA Driver
3  * Copyright (c) 2003-2012 QLogic Corporation
4  *
5  * See LICENSE.qla2xxx for copyright and licensing details.
6  */
7 #ifndef __QLA_GBL_H
8 #define __QLA_GBL_H
9 
10 #include <linux/interrupt.h>
11 
12 /*
13  * Global Function Prototypes in qla_init.c source file.
14  */
16 
17 extern int qla2100_pci_config(struct scsi_qla_host *);
18 extern int qla2300_pci_config(struct scsi_qla_host *);
21 extern void qla2x00_reset_chip(struct scsi_qla_host *);
22 extern void qla24xx_reset_chip(struct scsi_qla_host *);
23 extern int qla2x00_chip_diag(struct scsi_qla_host *);
24 extern int qla24xx_chip_diag(struct scsi_qla_host *);
25 extern void qla2x00_config_rings(struct scsi_qla_host *);
26 extern void qla24xx_config_rings(struct scsi_qla_host *);
27 extern void qla2x00_reset_adapter(struct scsi_qla_host *);
28 extern void qla24xx_reset_adapter(struct scsi_qla_host *);
29 extern int qla2x00_nvram_config(struct scsi_qla_host *);
30 extern int qla24xx_nvram_config(struct scsi_qla_host *);
31 extern int qla81xx_nvram_config(struct scsi_qla_host *);
32 extern void qla2x00_update_fw_options(struct scsi_qla_host *);
35 extern int qla2x00_load_risc(struct scsi_qla_host *, uint32_t *);
38 
41 
43 
46 
48 
51 extern void qla2x00_quiesce_io(scsi_qla_host_t *);
52 
54 
57 
59 
60 extern void qla84xx_put_chip(struct scsi_qla_host *);
61 
62 extern int qla2x00_async_login(struct scsi_qla_host *, fc_port_t *,
63  uint16_t *);
64 extern int qla2x00_async_logout(struct scsi_qla_host *, fc_port_t *);
65 extern int qla2x00_async_adisc(struct scsi_qla_host *, fc_port_t *,
66  uint16_t *);
68 extern void qla2x00_async_login_done(struct scsi_qla_host *, fc_port_t *,
69  uint16_t *);
70 extern void qla2x00_async_logout_done(struct scsi_qla_host *, fc_port_t *,
71  uint16_t *);
72 extern void qla2x00_async_adisc_done(struct scsi_qla_host *, fc_port_t *,
73  uint16_t *);
74 extern void *qla2x00_alloc_iocbs(struct scsi_qla_host *, srb_t *);
76 
77 extern fc_port_t *
79 
82 extern void qla83xx_idc_audit(scsi_qla_host_t *, int);
86 
87 /*
88  * Global Data in qla_os.c source file.
89  */
90 extern char qla2x00_version_str[];
91 
92 extern int ql2xlogintimeout;
93 extern int qlport_down_retry;
94 extern int ql2xplogiabsentdevice;
95 extern int ql2xloginretrycount;
96 extern int ql2xfdmienable;
97 extern int ql2xallocfwdump;
99 extern int ql2xiidmaenable;
100 extern int ql2xmaxqueues;
101 extern int ql2xmultique_tag;
102 extern int ql2xfwloadbin;
103 extern int ql2xetsenable;
104 extern int ql2xshiftctondsd;
105 extern int ql2xdbwr;
106 extern int ql2xasynctmfenable;
107 extern int ql2xgffidenable;
108 extern int ql2xenabledif;
109 extern int ql2xenablehba_err_chk;
110 extern int ql2xtargetreset;
111 extern int ql2xdontresethba;
112 extern unsigned int ql2xmaxlun;
113 extern int ql2xmdcapmask;
114 extern int ql2xmdenable;
115 
116 extern int qla2x00_loop_reset(scsi_qla_host_t *);
117 extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
118 extern int qla2x00_post_aen_work(struct scsi_qla_host *, enum
120 extern int qla2x00_post_idc_ack_work(struct scsi_qla_host *, uint16_t *);
122  uint16_t *);
124  fc_port_t *, uint16_t *);
126  uint16_t *);
128  fc_port_t *, uint16_t *);
130  uint16_t *);
132  fc_port_t *, uint16_t *);
133 extern int qla2x00_post_uevent_work(struct scsi_qla_host *, u32);
134 
136 
138  struct qla_hw_data *);
139 extern void qla2x00_free_host(struct scsi_qla_host *);
140 extern void qla2x00_relogin(struct scsi_qla_host *);
141 extern void qla2x00_do_work(struct scsi_qla_host *);
142 extern void qla2x00_free_fcports(struct scsi_qla_host *);
143 
144 extern void qla83xx_schedule_work(scsi_qla_host_t *, int);
145 extern void qla83xx_service_idc_aen(struct work_struct *);
147 extern void qla83xx_idc_state_handler_work(struct work_struct *);
148 extern void qla83xx_nic_core_reset_work(struct work_struct *);
149 
157 
158 /*
159  * Global Functions in qla_mid.c source file.
160  */
163 extern void qla2x00_timer(scsi_qla_host_t *);
164 extern void qla2x00_start_timer(scsi_qla_host_t *, void *, unsigned long);
166 extern int qla24xx_disable_vp (scsi_qla_host_t *);
167 extern int qla24xx_enable_vp (scsi_qla_host_t *);
168 extern int qla24xx_control_vp(scsi_qla_host_t *, int );
174  struct vp_rpt_id_entry_24xx *);
178 
179 extern void qla2x00_sp_free_dma(void *, void *);
180 extern char *qla2x00_get_fw_version_str(struct scsi_qla_host *, char *);
181 
182 extern void qla2x00_mark_device_lost(scsi_qla_host_t *, fc_port_t *, int, int);
184 
186 
190 
191 extern void qla2xxx_wake_dpc(struct scsi_qla_host *);
192 extern void qla2x00_alert_all_vps(struct rsp_que *, uint16_t *);
193 extern void qla2x00_async_event(scsi_qla_host_t *, struct rsp_que *,
194  uint16_t *);
196 
197 /*
198  * Global Function Prototypes in qla_iocb.c source file.
199  */
200 
205 extern int qla2x00_start_scsi(srb_t *sp);
206 extern int qla24xx_start_scsi(srb_t *sp);
207 int qla2x00_marker(struct scsi_qla_host *, struct req_que *, struct rsp_que *,
209 extern int qla2x00_start_sp(srb_t *);
211 extern void qla24xx_build_scsi_iocbs(srb_t *, struct cmd_type_7 *, uint16_t);
212 extern int qla24xx_dif_start_scsi(srb_t *);
213 extern int qla2x00_start_bidir(srb_t *, struct scsi_qla_host *, uint32_t);
214 extern unsigned long qla2x00_get_async_timeout(struct scsi_qla_host *);
215 
216 extern void *qla2x00_alloc_iocbs(scsi_qla_host_t *, srb_t *);
217 extern int qla2x00_issue_marker(scsi_qla_host_t *, int);
218 
219 /*
220  * Global Function Prototypes in qla_mbx.c source file.
221  */
222 extern int
224 
225 extern int
227 
228 extern int
230 
231 extern int
233 
234 extern int
236 
237 extern int
239 
240 extern int
242 
243 extern int
245 
246 extern int
247 qla2x00_issue_iocb(scsi_qla_host_t *, void *, dma_addr_t, size_t);
248 
249 extern int
251 
252 extern int
253 qla2x00_abort_target(struct fc_port *, unsigned int, int);
254 
255 extern int
256 qla2x00_lun_reset(struct fc_port *, unsigned int, int);
257 
258 extern int
260  uint8_t *, uint16_t *, uint16_t *);
261 
262 extern int
264 
265 extern int
267 
268 extern int
270 
271 extern int
273 
274 extern int
276 
277 extern int
279 
280 extern int
282 
283 extern int
285 
286 extern int
288  uint16_t *, uint8_t);
289 extern int
291  uint16_t *, uint8_t);
292 
293 extern int
295  uint8_t);
296 
297 extern int
299 
300 extern int
302 
303 extern int
305 
306 extern int
308 
309 extern int
311  uint16_t *, uint16_t *, uint16_t *, uint16_t *);
312 
313 extern int
315 
316 extern int
318  dma_addr_t);
319 
320 extern int
322  dma_addr_t);
323 
324 extern int qla24xx_abort_command(srb_t *);
325 extern int
326 qla24xx_abort_target(struct fc_port *, unsigned int, int);
327 extern int
328 qla24xx_lun_reset(struct fc_port *, unsigned int, int);
329 extern int
331  unsigned int, enum nexus_wait_type);
332 extern int
334 
335 extern int
337 
338 extern int
340 
341 extern int
343 extern int
345 
346 extern int
348  uint32_t *);
349 
350 extern int
352 
353 extern int
356 
357 extern int
360 
361 extern int
363 
364 extern int qla84xx_verify_chip(struct scsi_qla_host *, uint16_t *);
365 
366 extern int qla81xx_idc_ack(scsi_qla_host_t *, uint16_t *);
367 
368 extern int
370 
371 extern int
373 
374 extern int
376 
377 extern int
379 
380 extern int
382 
383 extern int
385 
386 extern int
388 
389 extern int
393  uint16_t *);
394 extern int
396 
397 extern int
399 
400 extern int
402 
403 extern int
405 
406 /*
407  * Global Function Prototypes in qla_isr.c source file.
408  */
409 extern irqreturn_t qla2100_intr_handler(int, void *);
410 extern irqreturn_t qla2300_intr_handler(int, void *);
411 extern irqreturn_t qla24xx_intr_handler(int, void *);
412 extern void qla2x00_process_response_queue(struct rsp_que *);
413 extern void
415 extern int qla2x00_request_irqs(struct qla_hw_data *, struct rsp_que *);
416 extern void qla2x00_free_irqs(scsi_qla_host_t *);
417 
419 extern char *qla2x00_get_link_speed_str(struct qla_hw_data *);
420 
421 /*
422  * Global Function Prototypes in qla_sup.c source file.
423  */
426  uint32_t, uint32_t);
428  uint32_t);
430  uint32_t);
432  uint32_t);
434  uint32_t);
436  uint32_t);
438  uint32_t);
439 
440 extern int qla2x00_beacon_on(struct scsi_qla_host *);
441 extern int qla2x00_beacon_off(struct scsi_qla_host *);
442 extern void qla2x00_beacon_blink(struct scsi_qla_host *);
443 extern int qla24xx_beacon_on(struct scsi_qla_host *);
444 extern int qla24xx_beacon_off(struct scsi_qla_host *);
445 extern void qla24xx_beacon_blink(struct scsi_qla_host *);
446 extern void qla83xx_beacon_blink(struct scsi_qla_host *);
447 extern int qla82xx_beacon_on(struct scsi_qla_host *);
448 extern int qla82xx_beacon_off(struct scsi_qla_host *);
453  uint32_t, uint16_t *);
454 
456  uint32_t, uint32_t);
457 extern int qla2x00_write_optrom_data(struct scsi_qla_host *, uint8_t *,
458  uint32_t, uint32_t);
460  uint32_t, uint32_t);
461 extern int qla24xx_write_optrom_data(struct scsi_qla_host *, uint8_t *,
462  uint32_t, uint32_t);
464  uint32_t, uint32_t);
465 
466 extern int qla2x00_get_flash_version(scsi_qla_host_t *, void *);
467 extern int qla24xx_get_flash_version(scsi_qla_host_t *, void *);
468 
470 extern int qla2xxx_get_vpd_field(scsi_qla_host_t *, char *, char *, size_t);
471 
474 
475 /*
476  * Global Function Prototypes in qla_dbg.c source file.
477  */
478 extern void qla2100_fw_dump(scsi_qla_host_t *, int);
479 extern void qla2300_fw_dump(scsi_qla_host_t *, int);
480 extern void qla24xx_fw_dump(scsi_qla_host_t *, int);
481 extern void qla25xx_fw_dump(scsi_qla_host_t *, int);
482 extern void qla81xx_fw_dump(scsi_qla_host_t *, int);
483 extern void qla2x00_dump_regs(scsi_qla_host_t *);
484 extern void qla2x00_dump_buffer(uint8_t *, uint32_t);
488  uint8_t *, uint32_t);
489 extern void qla2xxx_dump_post_process(scsi_qla_host_t *, int);
490 
491 /*
492  * Global Function Prototypes in qla_gs.c source file.
493  */
496 extern int qla2x00_ga_nxt(scsi_qla_host_t *, fc_port_t *);
497 extern int qla2x00_gid_pt(scsi_qla_host_t *, sw_info_t *);
498 extern int qla2x00_gpn_id(scsi_qla_host_t *, sw_info_t *);
499 extern int qla2x00_gnn_id(scsi_qla_host_t *, sw_info_t *);
500 extern void qla2x00_gff_id(scsi_qla_host_t *, sw_info_t *);
501 extern int qla2x00_rft_id(scsi_qla_host_t *);
502 extern int qla2x00_rff_id(scsi_qla_host_t *);
503 extern int qla2x00_rnn_id(scsi_qla_host_t *);
504 extern int qla2x00_rsnn_nn(scsi_qla_host_t *);
508 extern int qla2x00_gfpn_id(scsi_qla_host_t *, sw_info_t *);
509 extern int qla2x00_gpsc(scsi_qla_host_t *, sw_info_t *);
511 
512 /*
513  * Global Function Prototypes in qla_attr.c source file.
514  */
515 struct device_attribute;
516 extern struct device_attribute *qla2x00_host_attrs[];
517 struct fc_function_template;
525 extern int qla2x00_loopback_test(scsi_qla_host_t *, struct msg_echo_lb *, uint16_t *);
527  struct msg_echo_lb *, uint16_t *);
530  struct qla_fcp_prio_cfg *, uint8_t);
531 
532 /*
533  * Global Function Prototypes in qla_dfs.c source file.
534  */
535 extern int qla2x00_dfs_setup(scsi_qla_host_t *);
536 extern int qla2x00_dfs_remove(scsi_qla_host_t *);
537 
538 /* Globa function prototypes for multi-q */
539 extern int qla25xx_request_irq(struct rsp_que *);
540 extern int qla25xx_init_req_que(struct scsi_qla_host *, struct req_que *);
541 extern int qla25xx_init_rsp_que(struct scsi_qla_host *, struct rsp_que *);
542 extern int qla25xx_create_req_que(struct qla_hw_data *, uint16_t, uint8_t,
543  uint16_t, int, uint8_t);
544 extern int qla25xx_create_rsp_que(struct qla_hw_data *, uint16_t, uint8_t,
545  uint16_t, int);
546 extern void qla2x00_init_response_q_entries(struct rsp_que *);
547 extern int qla25xx_delete_req_que(struct scsi_qla_host *, struct req_que *);
548 extern int qla25xx_delete_queues(struct scsi_qla_host *);
551 extern void qla24xx_wrt_req_reg(struct qla_hw_data *, uint16_t, uint16_t);
552 extern void qla25xx_wrt_req_reg(struct qla_hw_data *, uint16_t, uint16_t);
553 extern void qla25xx_wrt_rsp_reg(struct qla_hw_data *, uint16_t, uint16_t);
554 extern void qla24xx_wrt_rsp_reg(struct qla_hw_data *, uint16_t, uint16_t);
555 
556 /* qla82xx related functions */
557 
558 /* PCI related functions */
559 extern int qla82xx_pci_config(struct scsi_qla_host *);
560 extern int qla82xx_pci_mem_read_2M(struct qla_hw_data *, u64, void *, int);
561 extern int qla82xx_pci_region_offset(struct pci_dev *, int);
562 extern int qla82xx_iospace_config(struct qla_hw_data *);
563 
564 /* Initialization related functions */
565 extern void qla82xx_reset_chip(struct scsi_qla_host *);
566 extern void qla82xx_config_rings(struct scsi_qla_host *);
567 extern void qla82xx_watchdog(scsi_qla_host_t *);
569 
570 /* Firmware and flash related functions */
573  uint32_t, uint32_t);
574 extern int qla82xx_write_optrom_data(struct scsi_qla_host *, uint8_t *,
575  uint32_t, uint32_t);
576 
577 /* Mailbox related functions */
578 extern int qla82xx_abort_isp(scsi_qla_host_t *);
580 
581 /* IOCB related functions */
582 extern int qla82xx_start_scsi(srb_t *);
583 extern void qla2x00_sp_free(void *, void *);
584 extern void qla2x00_sp_timeout(unsigned long);
585 extern void qla2x00_bsg_job_done(void *, void *, int);
586 extern void qla2x00_bsg_sp_free(void *, void *);
587 extern void qla2x00_start_iocbs(struct scsi_qla_host *, struct req_que *);
588 
589 /* Interrupt related */
590 extern irqreturn_t qla82xx_intr_handler(int, void *);
591 extern irqreturn_t qla82xx_msi_handler(int, void *);
592 extern irqreturn_t qla82xx_msix_default(int, void *);
593 extern irqreturn_t qla82xx_msix_rsp_q(int, void *);
594 extern void qla82xx_enable_intrs(struct qla_hw_data *);
595 extern void qla82xx_disable_intrs(struct qla_hw_data *);
596 extern void qla82xx_poll(int, void *);
597 extern void qla82xx_init_flags(struct qla_hw_data *);
598 
599 /* ISP 8021 hardware related */
601 extern void qla82xx_crb_win_unlock(struct qla_hw_data *);
602 extern int qla82xx_wr_32(struct qla_hw_data *, ulong, u32);
603 extern int qla82xx_rd_32(struct qla_hw_data *, ulong);
604 extern int qla82xx_rdmem(struct qla_hw_data *, u64, void *, int);
605 extern int qla82xx_wrmem(struct qla_hw_data *, u64, void *, int);
606 
607 /* ISP 8021 IDC */
608 extern void qla82xx_clear_drv_active(struct qla_hw_data *);
610 extern int qla82xx_idc_lock(struct qla_hw_data *);
611 extern void qla82xx_idc_unlock(struct qla_hw_data *);
615 
617  size_t, char *);
620 extern void qla82xx_start_iocbs(scsi_qla_host_t *);
626 extern int qla82xx_mbx_beacon_ctl(scsi_qla_host_t *, int);
627 extern char *qdev_state(uint32_t);
629 
630 /* BSG related functions */
631 extern int qla24xx_bsg_request(struct fc_bsg_job *);
632 extern int qla24xx_bsg_timeout(struct fc_bsg_job *);
634 extern int qla2x00_issue_iocb_timeout(scsi_qla_host_t *, void *,
635  dma_addr_t, size_t, uint32_t);
637  uint16_t *, uint16_t *);
638 
639 /* 83xx related functions */
640 extern void qla83xx_fw_dump(scsi_qla_host_t *, int);
641 
642 /* Minidump related functions */
645 extern int qla82xx_md_alloc(scsi_qla_host_t *);
646 extern void qla82xx_md_free(scsi_qla_host_t *);
647 extern int qla82xx_md_collect(scsi_qla_host_t *);
648 extern void qla82xx_md_prep(scsi_qla_host_t *);
650 
651 #endif /* _QLA_GBL_H */