aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_crtn.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-15 19:51:54 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-15 19:51:54 -0400
commitbc06cffdec85d487c77109dffcd2f285bdc502d3 (patch)
treeadc6e6398243da87e66c56102840597a329183a0 /drivers/scsi/lpfc/lpfc_crtn.h
parentd3502d7f25b22cfc9762bf1781faa9db1bb3be2e (diff)
parent9413d7b8aa777dd1fc7db9563ce5e80d769fe7b5 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (166 commits) [SCSI] ibmvscsi: convert to use the data buffer accessors [SCSI] dc395x: convert to use the data buffer accessors [SCSI] ncr53c8xx: convert to use the data buffer accessors [SCSI] sym53c8xx: convert to use the data buffer accessors [SCSI] ppa: coding police and printk levels [SCSI] aic7xxx_old: remove redundant GFP_ATOMIC from kmalloc [SCSI] i2o: remove redundant GFP_ATOMIC from kmalloc from device.c [SCSI] remove the dead CYBERSTORMIII_SCSI option [SCSI] don't build scsi_dma_{map,unmap} for !HAS_DMA [SCSI] Clean up scsi_add_lun a bit [SCSI] 53c700: Remove printk, which triggers because of low scsi clock on SNI RMs [SCSI] sni_53c710: Cleanup [SCSI] qla4xxx: Fix underrun/overrun conditions [SCSI] megaraid_mbox: use mutex instead of semaphore [SCSI] aacraid: add 51245, 51645 and 52245 adapters to documentation. [SCSI] qla2xxx: update version to 8.02.00-k1. [SCSI] qla2xxx: add support for NPIV [SCSI] stex: use resid for xfer len information [SCSI] Add Brownie 1200U3P to blacklist [SCSI] scsi.c: convert to use the data buffer accessors ...
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_crtn.h')
-rw-r--r--drivers/scsi/lpfc/lpfc_crtn.h182
1 files changed, 126 insertions, 56 deletions
diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h
index b8c2a8862d8c..e19d1a746586 100644
--- a/drivers/scsi/lpfc/lpfc_crtn.h
+++ b/drivers/scsi/lpfc/lpfc_crtn.h
@@ -23,92 +23,114 @@ typedef int (*node_filter)(struct lpfc_nodelist *ndlp, void *param);
23struct fc_rport; 23struct fc_rport;
24void lpfc_dump_mem(struct lpfc_hba *, LPFC_MBOXQ_t *, uint16_t); 24void lpfc_dump_mem(struct lpfc_hba *, LPFC_MBOXQ_t *, uint16_t);
25void lpfc_read_nv(struct lpfc_hba *, LPFC_MBOXQ_t *); 25void lpfc_read_nv(struct lpfc_hba *, LPFC_MBOXQ_t *);
26void lpfc_heart_beat(struct lpfc_hba *, LPFC_MBOXQ_t *);
26int lpfc_read_la(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb, 27int lpfc_read_la(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb,
27 struct lpfc_dmabuf *mp); 28 struct lpfc_dmabuf *mp);
28void lpfc_clear_la(struct lpfc_hba *, LPFC_MBOXQ_t *); 29void lpfc_clear_la(struct lpfc_hba *, LPFC_MBOXQ_t *);
30void lpfc_issue_clear_la(struct lpfc_hba *phba, struct lpfc_vport *vport);
29void lpfc_config_link(struct lpfc_hba *, LPFC_MBOXQ_t *); 31void lpfc_config_link(struct lpfc_hba *, LPFC_MBOXQ_t *);
30int lpfc_read_sparam(struct lpfc_hba *, LPFC_MBOXQ_t *); 32int lpfc_read_sparam(struct lpfc_hba *, LPFC_MBOXQ_t *, int);
31void lpfc_read_config(struct lpfc_hba *, LPFC_MBOXQ_t *); 33void lpfc_read_config(struct lpfc_hba *, LPFC_MBOXQ_t *);
32void lpfc_read_lnk_stat(struct lpfc_hba *, LPFC_MBOXQ_t *); 34void lpfc_read_lnk_stat(struct lpfc_hba *, LPFC_MBOXQ_t *);
33int lpfc_reg_login(struct lpfc_hba *, uint32_t, uint8_t *, LPFC_MBOXQ_t *, 35int lpfc_reg_login(struct lpfc_hba *, uint16_t, uint32_t, uint8_t *,
34 uint32_t); 36 LPFC_MBOXQ_t *, uint32_t);
35void lpfc_unreg_login(struct lpfc_hba *, uint32_t, LPFC_MBOXQ_t *); 37void lpfc_unreg_login(struct lpfc_hba *, uint16_t, uint32_t, LPFC_MBOXQ_t *);
36void lpfc_unreg_did(struct lpfc_hba *, uint32_t, LPFC_MBOXQ_t *); 38void lpfc_unreg_did(struct lpfc_hba *, uint16_t, uint32_t, LPFC_MBOXQ_t *);
39void lpfc_reg_vpi(struct lpfc_hba *, uint16_t, uint32_t, LPFC_MBOXQ_t *);
40void lpfc_unreg_vpi(struct lpfc_hba *, uint16_t, LPFC_MBOXQ_t *);
37void lpfc_init_link(struct lpfc_hba *, LPFC_MBOXQ_t *, uint32_t, uint32_t); 41void lpfc_init_link(struct lpfc_hba *, LPFC_MBOXQ_t *, uint32_t, uint32_t);
38 42
39 43void lpfc_cleanup_rpis(struct lpfc_vport *vport, int remove);
40int lpfc_linkdown(struct lpfc_hba *); 44int lpfc_linkdown(struct lpfc_hba *);
41void lpfc_mbx_cmpl_read_la(struct lpfc_hba *, LPFC_MBOXQ_t *); 45void lpfc_mbx_cmpl_read_la(struct lpfc_hba *, LPFC_MBOXQ_t *);
42 46
43void lpfc_mbx_cmpl_clear_la(struct lpfc_hba *, LPFC_MBOXQ_t *); 47void lpfc_mbx_cmpl_clear_la(struct lpfc_hba *, LPFC_MBOXQ_t *);
44void lpfc_mbx_cmpl_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *); 48void lpfc_mbx_cmpl_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *);
49void lpfc_mbx_cmpl_dflt_rpi(struct lpfc_hba *, LPFC_MBOXQ_t *);
45void lpfc_mbx_cmpl_fabric_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *); 50void lpfc_mbx_cmpl_fabric_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *);
46void lpfc_mbx_cmpl_ns_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *); 51void lpfc_mbx_cmpl_ns_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *);
47void lpfc_mbx_cmpl_fdmi_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *); 52void lpfc_mbx_cmpl_fdmi_reg_login(struct lpfc_hba *, LPFC_MBOXQ_t *);
48void lpfc_dequeue_node(struct lpfc_hba *, struct lpfc_nodelist *); 53void lpfc_dequeue_node(struct lpfc_vport *, struct lpfc_nodelist *);
49void lpfc_nlp_set_state(struct lpfc_hba *, struct lpfc_nodelist *, int); 54void lpfc_nlp_set_state(struct lpfc_vport *, struct lpfc_nodelist *, int);
50void lpfc_drop_node(struct lpfc_hba *, struct lpfc_nodelist *); 55void lpfc_drop_node(struct lpfc_vport *, struct lpfc_nodelist *);
51void lpfc_set_disctmo(struct lpfc_hba *); 56void lpfc_set_disctmo(struct lpfc_vport *);
52int lpfc_can_disctmo(struct lpfc_hba *); 57int lpfc_can_disctmo(struct lpfc_vport *);
53int lpfc_unreg_rpi(struct lpfc_hba *, struct lpfc_nodelist *); 58int lpfc_unreg_rpi(struct lpfc_vport *, struct lpfc_nodelist *);
59void lpfc_unreg_all_rpis(struct lpfc_vport *);
60void lpfc_unreg_default_rpis(struct lpfc_vport *);
61void lpfc_issue_reg_vpi(struct lpfc_hba *, struct lpfc_vport *);
62
54int lpfc_check_sli_ndlp(struct lpfc_hba *, struct lpfc_sli_ring *, 63int lpfc_check_sli_ndlp(struct lpfc_hba *, struct lpfc_sli_ring *,
55 struct lpfc_iocbq *, struct lpfc_nodelist *); 64 struct lpfc_iocbq *, struct lpfc_nodelist *);
56void lpfc_nlp_init(struct lpfc_hba *, struct lpfc_nodelist *, uint32_t); 65void lpfc_nlp_init(struct lpfc_vport *, struct lpfc_nodelist *, uint32_t);
57struct lpfc_nodelist *lpfc_nlp_get(struct lpfc_nodelist *); 66struct lpfc_nodelist *lpfc_nlp_get(struct lpfc_nodelist *);
58int lpfc_nlp_put(struct lpfc_nodelist *); 67int lpfc_nlp_put(struct lpfc_nodelist *);
59struct lpfc_nodelist *lpfc_setup_disc_node(struct lpfc_hba *, uint32_t); 68struct lpfc_nodelist *lpfc_setup_disc_node(struct lpfc_vport *, uint32_t);
60void lpfc_disc_list_loopmap(struct lpfc_hba *); 69void lpfc_disc_list_loopmap(struct lpfc_vport *);
61void lpfc_disc_start(struct lpfc_hba *); 70void lpfc_disc_start(struct lpfc_vport *);
62void lpfc_disc_flush_list(struct lpfc_hba *); 71void lpfc_disc_flush_list(struct lpfc_vport *);
72void lpfc_cleanup_discovery_resources(struct lpfc_vport *);
63void lpfc_disc_timeout(unsigned long); 73void lpfc_disc_timeout(unsigned long);
64 74
65struct lpfc_nodelist *__lpfc_findnode_rpi(struct lpfc_hba * phba, uint16_t rpi); 75struct lpfc_nodelist *__lpfc_findnode_rpi(struct lpfc_vport *, uint16_t);
66struct lpfc_nodelist *lpfc_findnode_rpi(struct lpfc_hba * phba, uint16_t rpi); 76struct lpfc_nodelist *lpfc_findnode_rpi(struct lpfc_vport *, uint16_t);
67 77
78void lpfc_worker_wake_up(struct lpfc_hba *);
68int lpfc_workq_post_event(struct lpfc_hba *, void *, void *, uint32_t); 79int lpfc_workq_post_event(struct lpfc_hba *, void *, void *, uint32_t);
69int lpfc_do_work(void *); 80int lpfc_do_work(void *);
70int lpfc_disc_state_machine(struct lpfc_hba *, struct lpfc_nodelist *, void *, 81int lpfc_disc_state_machine(struct lpfc_vport *, struct lpfc_nodelist *, void *,
71 uint32_t); 82 uint32_t);
72 83
73int lpfc_check_sparm(struct lpfc_hba *, struct lpfc_nodelist *, 84void lpfc_register_new_vport(struct lpfc_hba *, struct lpfc_vport *,
85 struct lpfc_nodelist *);
86void lpfc_do_scr_ns_plogi(struct lpfc_hba *, struct lpfc_vport *);
87int lpfc_check_sparm(struct lpfc_vport *, struct lpfc_nodelist *,
74 struct serv_parm *, uint32_t); 88 struct serv_parm *, uint32_t);
75int lpfc_els_abort(struct lpfc_hba *, struct lpfc_nodelist * ndlp); 89int lpfc_els_abort(struct lpfc_hba *, struct lpfc_nodelist *);
90int lpfc_els_chk_latt(struct lpfc_vport *);
76int lpfc_els_abort_flogi(struct lpfc_hba *); 91int lpfc_els_abort_flogi(struct lpfc_hba *);
77int lpfc_initial_flogi(struct lpfc_hba *); 92int lpfc_initial_flogi(struct lpfc_vport *);
78int lpfc_issue_els_plogi(struct lpfc_hba *, uint32_t, uint8_t); 93int lpfc_initial_fdisc(struct lpfc_vport *);
79int lpfc_issue_els_prli(struct lpfc_hba *, struct lpfc_nodelist *, uint8_t); 94int lpfc_issue_els_fdisc(struct lpfc_vport *, struct lpfc_nodelist *, uint8_t);
80int lpfc_issue_els_adisc(struct lpfc_hba *, struct lpfc_nodelist *, uint8_t); 95int lpfc_issue_els_plogi(struct lpfc_vport *, uint32_t, uint8_t);
81int lpfc_issue_els_logo(struct lpfc_hba *, struct lpfc_nodelist *, uint8_t); 96int lpfc_issue_els_prli(struct lpfc_vport *, struct lpfc_nodelist *, uint8_t);
82int lpfc_issue_els_scr(struct lpfc_hba *, uint32_t, uint8_t); 97int lpfc_issue_els_adisc(struct lpfc_vport *, struct lpfc_nodelist *, uint8_t);
98int lpfc_issue_els_logo(struct lpfc_vport *, struct lpfc_nodelist *, uint8_t);
99int lpfc_issue_els_npiv_logo(struct lpfc_vport *, struct lpfc_nodelist *);
100int lpfc_issue_els_scr(struct lpfc_vport *, uint32_t, uint8_t);
83int lpfc_els_free_iocb(struct lpfc_hba *, struct lpfc_iocbq *); 101int lpfc_els_free_iocb(struct lpfc_hba *, struct lpfc_iocbq *);
84int lpfc_els_rsp_acc(struct lpfc_hba *, uint32_t, struct lpfc_iocbq *, 102int lpfc_ct_free_iocb(struct lpfc_hba *, struct lpfc_iocbq *);
103int lpfc_els_rsp_acc(struct lpfc_vport *, uint32_t, struct lpfc_iocbq *,
85 struct lpfc_nodelist *, LPFC_MBOXQ_t *, uint8_t); 104 struct lpfc_nodelist *, LPFC_MBOXQ_t *, uint8_t);
86int lpfc_els_rsp_reject(struct lpfc_hba *, uint32_t, struct lpfc_iocbq *, 105int lpfc_els_rsp_reject(struct lpfc_vport *, uint32_t, struct lpfc_iocbq *,
87 struct lpfc_nodelist *); 106 struct lpfc_nodelist *, LPFC_MBOXQ_t *);
88int lpfc_els_rsp_adisc_acc(struct lpfc_hba *, struct lpfc_iocbq *, 107int lpfc_els_rsp_adisc_acc(struct lpfc_vport *, struct lpfc_iocbq *,
89 struct lpfc_nodelist *); 108 struct lpfc_nodelist *);
90int lpfc_els_rsp_prli_acc(struct lpfc_hba *, struct lpfc_iocbq *, 109int lpfc_els_rsp_prli_acc(struct lpfc_vport *, struct lpfc_iocbq *,
91 struct lpfc_nodelist *); 110 struct lpfc_nodelist *);
92void lpfc_cancel_retry_delay_tmo(struct lpfc_hba *, struct lpfc_nodelist *); 111void lpfc_cancel_retry_delay_tmo(struct lpfc_vport *, struct lpfc_nodelist *);
93void lpfc_els_retry_delay(unsigned long); 112void lpfc_els_retry_delay(unsigned long);
94void lpfc_els_retry_delay_handler(struct lpfc_nodelist *); 113void lpfc_els_retry_delay_handler(struct lpfc_nodelist *);
114void lpfc_dev_loss_tmo_handler(struct lpfc_nodelist *);
95void lpfc_els_unsol_event(struct lpfc_hba *, struct lpfc_sli_ring *, 115void lpfc_els_unsol_event(struct lpfc_hba *, struct lpfc_sli_ring *,
96 struct lpfc_iocbq *); 116 struct lpfc_iocbq *);
97int lpfc_els_handle_rscn(struct lpfc_hba *); 117int lpfc_els_handle_rscn(struct lpfc_vport *);
98int lpfc_els_flush_rscn(struct lpfc_hba *); 118void lpfc_els_flush_rscn(struct lpfc_vport *);
99int lpfc_rscn_payload_check(struct lpfc_hba *, uint32_t); 119int lpfc_rscn_payload_check(struct lpfc_vport *, uint32_t);
100void lpfc_els_flush_cmd(struct lpfc_hba *); 120void lpfc_els_flush_cmd(struct lpfc_vport *);
101int lpfc_els_disc_adisc(struct lpfc_hba *); 121int lpfc_els_disc_adisc(struct lpfc_vport *);
102int lpfc_els_disc_plogi(struct lpfc_hba *); 122int lpfc_els_disc_plogi(struct lpfc_vport *);
103void lpfc_els_timeout(unsigned long); 123void lpfc_els_timeout(unsigned long);
104void lpfc_els_timeout_handler(struct lpfc_hba *); 124void lpfc_els_timeout_handler(struct lpfc_vport *);
125void lpfc_hb_timeout(unsigned long);
126void lpfc_hb_timeout_handler(struct lpfc_hba *);
105 127
106void lpfc_ct_unsol_event(struct lpfc_hba *, struct lpfc_sli_ring *, 128void lpfc_ct_unsol_event(struct lpfc_hba *, struct lpfc_sli_ring *,
107 struct lpfc_iocbq *); 129 struct lpfc_iocbq *);
108int lpfc_ns_cmd(struct lpfc_hba *, struct lpfc_nodelist *, int); 130int lpfc_ns_cmd(struct lpfc_vport *, int, uint8_t, uint32_t);
109int lpfc_fdmi_cmd(struct lpfc_hba *, struct lpfc_nodelist *, int); 131int lpfc_fdmi_cmd(struct lpfc_vport *, struct lpfc_nodelist *, int);
110void lpfc_fdmi_tmo(unsigned long); 132void lpfc_fdmi_tmo(unsigned long);
111void lpfc_fdmi_tmo_handler(struct lpfc_hba *); 133void lpfc_fdmi_timeout_handler(struct lpfc_vport *vport);
112 134
113int lpfc_config_port_prep(struct lpfc_hba *); 135int lpfc_config_port_prep(struct lpfc_hba *);
114int lpfc_config_port_post(struct lpfc_hba *); 136int lpfc_config_port_post(struct lpfc_hba *);
@@ -136,16 +158,23 @@ void lpfc_config_port(struct lpfc_hba *, LPFC_MBOXQ_t *);
136void lpfc_kill_board(struct lpfc_hba *, LPFC_MBOXQ_t *); 158void lpfc_kill_board(struct lpfc_hba *, LPFC_MBOXQ_t *);
137void lpfc_mbox_put(struct lpfc_hba *, LPFC_MBOXQ_t *); 159void lpfc_mbox_put(struct lpfc_hba *, LPFC_MBOXQ_t *);
138LPFC_MBOXQ_t *lpfc_mbox_get(struct lpfc_hba *); 160LPFC_MBOXQ_t *lpfc_mbox_get(struct lpfc_hba *);
161void lpfc_mbox_cmpl_put(struct lpfc_hba *, LPFC_MBOXQ_t *);
139int lpfc_mbox_tmo_val(struct lpfc_hba *, int); 162int lpfc_mbox_tmo_val(struct lpfc_hba *, int);
140 163
164void lpfc_config_hbq(struct lpfc_hba *, struct lpfc_hbq_init *, uint32_t ,
165 LPFC_MBOXQ_t *);
166struct lpfc_hbq_entry * lpfc_sli_next_hbq_slot(struct lpfc_hba *, uint32_t);
167
141int lpfc_mem_alloc(struct lpfc_hba *); 168int lpfc_mem_alloc(struct lpfc_hba *);
142void lpfc_mem_free(struct lpfc_hba *); 169void lpfc_mem_free(struct lpfc_hba *);
170void lpfc_stop_vport_timers(struct lpfc_vport *);
143 171
144void lpfc_poll_timeout(unsigned long ptr); 172void lpfc_poll_timeout(unsigned long ptr);
145void lpfc_poll_start_timer(struct lpfc_hba * phba); 173void lpfc_poll_start_timer(struct lpfc_hba * phba);
146void lpfc_sli_poll_fcp_ring(struct lpfc_hba * hba); 174void lpfc_sli_poll_fcp_ring(struct lpfc_hba * hba);
147struct lpfc_iocbq * lpfc_sli_get_iocbq(struct lpfc_hba *); 175struct lpfc_iocbq * lpfc_sli_get_iocbq(struct lpfc_hba *);
148void lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb); 176void lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);
177void __lpfc_sli_release_iocbq(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);
149uint16_t lpfc_sli_next_iotag(struct lpfc_hba * phba, struct lpfc_iocbq * iocb); 178uint16_t lpfc_sli_next_iotag(struct lpfc_hba * phba, struct lpfc_iocbq * iocb);
150 179
151void lpfc_reset_barrier(struct lpfc_hba * phba); 180void lpfc_reset_barrier(struct lpfc_hba * phba);
@@ -154,6 +183,7 @@ int lpfc_sli_brdkill(struct lpfc_hba *);
154int lpfc_sli_brdreset(struct lpfc_hba *); 183int lpfc_sli_brdreset(struct lpfc_hba *);
155int lpfc_sli_brdrestart(struct lpfc_hba *); 184int lpfc_sli_brdrestart(struct lpfc_hba *);
156int lpfc_sli_hba_setup(struct lpfc_hba *); 185int lpfc_sli_hba_setup(struct lpfc_hba *);
186int lpfc_sli_host_down(struct lpfc_vport *);
157int lpfc_sli_hba_down(struct lpfc_hba *); 187int lpfc_sli_hba_down(struct lpfc_hba *);
158int lpfc_sli_issue_mbox(struct lpfc_hba *, LPFC_MBOXQ_t *, uint32_t); 188int lpfc_sli_issue_mbox(struct lpfc_hba *, LPFC_MBOXQ_t *, uint32_t);
159int lpfc_sli_handle_mb_event(struct lpfc_hba *); 189int lpfc_sli_handle_mb_event(struct lpfc_hba *);
@@ -164,27 +194,36 @@ void lpfc_sli_def_mbox_cmpl(struct lpfc_hba *, LPFC_MBOXQ_t *);
164int lpfc_sli_issue_iocb(struct lpfc_hba *, struct lpfc_sli_ring *, 194int lpfc_sli_issue_iocb(struct lpfc_hba *, struct lpfc_sli_ring *,
165 struct lpfc_iocbq *, uint32_t); 195 struct lpfc_iocbq *, uint32_t);
166void lpfc_sli_pcimem_bcopy(void *, void *, uint32_t); 196void lpfc_sli_pcimem_bcopy(void *, void *, uint32_t);
167int lpfc_sli_abort_iocb_ring(struct lpfc_hba *, struct lpfc_sli_ring *); 197void lpfc_sli_abort_iocb_ring(struct lpfc_hba *, struct lpfc_sli_ring *);
168int lpfc_sli_ringpostbuf_put(struct lpfc_hba *, struct lpfc_sli_ring *, 198int lpfc_sli_ringpostbuf_put(struct lpfc_hba *, struct lpfc_sli_ring *,
169 struct lpfc_dmabuf *); 199 struct lpfc_dmabuf *);
170struct lpfc_dmabuf *lpfc_sli_ringpostbuf_get(struct lpfc_hba *, 200struct lpfc_dmabuf *lpfc_sli_ringpostbuf_get(struct lpfc_hba *,
171 struct lpfc_sli_ring *, 201 struct lpfc_sli_ring *,
172 dma_addr_t); 202 dma_addr_t);
203int lpfc_sli_hbqbuf_init_hbqs(struct lpfc_hba *, uint32_t);
204int lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *, uint32_t);
205void lpfc_sli_hbqbuf_free_all(struct lpfc_hba *);
206struct hbq_dmabuf *lpfc_sli_hbqbuf_find(struct lpfc_hba *, uint32_t);
207int lpfc_sli_hbq_size(void);
173int lpfc_sli_issue_abort_iotag(struct lpfc_hba *, struct lpfc_sli_ring *, 208int lpfc_sli_issue_abort_iotag(struct lpfc_hba *, struct lpfc_sli_ring *,
174 struct lpfc_iocbq *); 209 struct lpfc_iocbq *);
175int lpfc_sli_sum_iocb(struct lpfc_hba *, struct lpfc_sli_ring *, uint16_t, 210int lpfc_sli_sum_iocb(struct lpfc_hba *, struct lpfc_sli_ring *, uint16_t,
176 uint64_t, lpfc_ctx_cmd); 211 uint64_t, lpfc_ctx_cmd);
177int lpfc_sli_abort_iocb(struct lpfc_hba *, struct lpfc_sli_ring *, uint16_t, 212int lpfc_sli_abort_iocb(struct lpfc_hba *, struct lpfc_sli_ring *, uint16_t,
178 uint64_t, uint32_t, lpfc_ctx_cmd); 213 uint64_t, uint32_t, lpfc_ctx_cmd);
179 214
180void lpfc_mbox_timeout(unsigned long); 215void lpfc_mbox_timeout(unsigned long);
181void lpfc_mbox_timeout_handler(struct lpfc_hba *); 216void lpfc_mbox_timeout_handler(struct lpfc_hba *);
182 217
183struct lpfc_nodelist *lpfc_findnode_did(struct lpfc_hba *, uint32_t); 218struct lpfc_nodelist *__lpfc_find_node(struct lpfc_vport *, node_filter,
184struct lpfc_nodelist *lpfc_findnode_wwpn(struct lpfc_hba *, struct lpfc_name *); 219 void *);
220struct lpfc_nodelist *lpfc_find_node(struct lpfc_vport *, node_filter, void *);
221struct lpfc_nodelist *lpfc_findnode_did(struct lpfc_vport *, uint32_t);
222struct lpfc_nodelist *lpfc_findnode_wwpn(struct lpfc_vport *,
223 struct lpfc_name *);
185 224
186int lpfc_sli_issue_mbox_wait(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmboxq, 225int lpfc_sli_issue_mbox_wait(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmboxq,
187 uint32_t timeout); 226 uint32_t timeout);
188 227
189int lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba, 228int lpfc_sli_issue_iocb_wait(struct lpfc_hba * phba,
190 struct lpfc_sli_ring * pring, 229 struct lpfc_sli_ring * pring,
@@ -195,25 +234,56 @@ void lpfc_sli_abort_fcp_cmpl(struct lpfc_hba * phba,
195 struct lpfc_iocbq * cmdiocb, 234 struct lpfc_iocbq * cmdiocb,
196 struct lpfc_iocbq * rspiocb); 235 struct lpfc_iocbq * rspiocb);
197 236
237void *lpfc_hbq_alloc(struct lpfc_hba *, int, dma_addr_t *);
238void lpfc_hbq_free(struct lpfc_hba *, void *, dma_addr_t);
239void lpfc_sli_free_hbq(struct lpfc_hba *, struct hbq_dmabuf *);
240
198void *lpfc_mbuf_alloc(struct lpfc_hba *, int, dma_addr_t *); 241void *lpfc_mbuf_alloc(struct lpfc_hba *, int, dma_addr_t *);
242void __lpfc_mbuf_free(struct lpfc_hba *, void *, dma_addr_t);
199void lpfc_mbuf_free(struct lpfc_hba *, void *, dma_addr_t); 243void lpfc_mbuf_free(struct lpfc_hba *, void *, dma_addr_t);
200 244
245void lpfc_in_buf_free(struct lpfc_hba *, struct lpfc_dmabuf *);
201/* Function prototypes. */ 246/* Function prototypes. */
202const char* lpfc_info(struct Scsi_Host *); 247const char* lpfc_info(struct Scsi_Host *);
203void lpfc_scan_start(struct Scsi_Host *);
204int lpfc_scan_finished(struct Scsi_Host *, unsigned long); 248int lpfc_scan_finished(struct Scsi_Host *, unsigned long);
205 249
206void lpfc_get_cfgparam(struct lpfc_hba *); 250void lpfc_get_cfgparam(struct lpfc_hba *);
207int lpfc_alloc_sysfs_attr(struct lpfc_hba *); 251int lpfc_alloc_sysfs_attr(struct lpfc_vport *);
208void lpfc_free_sysfs_attr(struct lpfc_hba *); 252void lpfc_free_sysfs_attr(struct lpfc_vport *);
209extern struct class_device_attribute *lpfc_host_attrs[]; 253extern struct class_device_attribute *lpfc_hba_attrs[];
210extern struct scsi_host_template lpfc_template; 254extern struct scsi_host_template lpfc_template;
211extern struct fc_function_template lpfc_transport_functions; 255extern struct fc_function_template lpfc_transport_functions;
256extern struct fc_function_template lpfc_vport_transport_functions;
257extern int lpfc_sli_mode;
212 258
213void lpfc_get_hba_sym_node_name(struct lpfc_hba * phba, uint8_t * symbp); 259int lpfc_vport_symbolic_node_name(struct lpfc_vport *, char *, size_t);
214void lpfc_terminate_rport_io(struct fc_rport *); 260void lpfc_terminate_rport_io(struct fc_rport *);
215void lpfc_dev_loss_tmo_callbk(struct fc_rport *rport); 261void lpfc_dev_loss_tmo_callbk(struct fc_rport *rport);
216 262
263struct lpfc_vport *lpfc_create_port(struct lpfc_hba *, int, struct fc_vport *);
264int lpfc_vport_disable(struct fc_vport *fc_vport, bool disable);
265void lpfc_mbx_unreg_vpi(struct lpfc_vport *);
266void destroy_port(struct lpfc_vport *);
267int lpfc_get_instance(void);
268void lpfc_host_attrib_init(struct Scsi_Host *);
269
270extern void lpfc_debugfs_initialize(struct lpfc_vport *);
271extern void lpfc_debugfs_terminate(struct lpfc_vport *);
272extern void lpfc_debugfs_disc_trc(struct lpfc_vport *, int, char *, uint32_t,
273 uint32_t, uint32_t);
274
275/* Interface exported by fabric iocb scheduler */
276int lpfc_issue_fabric_iocb(struct lpfc_hba *, struct lpfc_iocbq *);
277void lpfc_fabric_abort_vport(struct lpfc_vport *);
278void lpfc_fabric_abort_nport(struct lpfc_nodelist *);
279void lpfc_fabric_abort_hba(struct lpfc_hba *);
280void lpfc_fabric_abort_flogi(struct lpfc_hba *);
281void lpfc_fabric_block_timeout(unsigned long);
282void lpfc_unblock_fabric_iocbs(struct lpfc_hba *);
283void lpfc_adjust_queue_depth(struct lpfc_hba *);
284void lpfc_ramp_down_queue_handler(struct lpfc_hba *);
285void lpfc_ramp_up_queue_handler(struct lpfc_hba *);
286
217#define ScsiResult(host_code, scsi_code) (((host_code) << 16) | scsi_code) 287#define ScsiResult(host_code, scsi_code) (((host_code) << 16) | scsi_code)
218#define HBA_EVENT_RSCN 5 288#define HBA_EVENT_RSCN 5
219#define HBA_EVENT_LINK_UP 2 289#define HBA_EVENT_LINK_UP 2