1fcf3ce44SJohn Forte /*
2fcf3ce44SJohn Forte  * CDDL HEADER START
3fcf3ce44SJohn Forte  *
4fcf3ce44SJohn Forte  * The contents of this file are subject to the terms of the
5fcf3ce44SJohn Forte  * Common Development and Distribution License (the "License").
6fcf3ce44SJohn Forte  * You may not use this file except in compliance with the License.
7fcf3ce44SJohn Forte  *
8fcf3ce44SJohn Forte  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9fcf3ce44SJohn Forte  * or http://www.opensolaris.org/os/licensing.
10fcf3ce44SJohn Forte  * See the License for the specific language governing permissions
11fcf3ce44SJohn Forte  * and limitations under the License.
12fcf3ce44SJohn Forte  *
13fcf3ce44SJohn Forte  * When distributing Covered Code, include this CDDL HEADER in each
14fcf3ce44SJohn Forte  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15fcf3ce44SJohn Forte  * If applicable, add the following below this CDDL HEADER, with the
16fcf3ce44SJohn Forte  * fields enclosed by brackets "[]" replaced with your own identifying
17fcf3ce44SJohn Forte  * information: Portions Copyright [yyyy] [name of copyright owner]
18fcf3ce44SJohn Forte  *
19fcf3ce44SJohn Forte  * CDDL HEADER END
20fcf3ce44SJohn Forte  */
21fcf3ce44SJohn Forte 
22fcf3ce44SJohn Forte /*
23291a2b48SSukumar Swaminathan  * Copyright 2009 Emulex.  All rights reserved.
24fcf3ce44SJohn Forte  * Use is subject to License terms.
25fcf3ce44SJohn Forte  */
26fcf3ce44SJohn Forte 
27fcf3ce44SJohn Forte 
28fcf3ce44SJohn Forte #ifndef _EMLXS_EXTERN_H
29fcf3ce44SJohn Forte #define	_EMLXS_EXTERN_H
30fcf3ce44SJohn Forte 
31fcf3ce44SJohn Forte #ifdef	__cplusplus
32fcf3ce44SJohn Forte extern "C" {
33fcf3ce44SJohn Forte #endif
34fcf3ce44SJohn Forte 
35291a2b48SSukumar Swaminathan extern void			*emlxs_soft_state;
36291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance[MAX_FC_BRDS];
37291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance_count;
38291a2b48SSukumar Swaminathan extern char			emlxs_revision[32];
39291a2b48SSukumar Swaminathan extern char			emlxs_version[32];
40291a2b48SSukumar Swaminathan extern char			emlxs_name[64];
41291a2b48SSukumar Swaminathan extern char			emlxs_label[64];
42291a2b48SSukumar Swaminathan 
43291a2b48SSukumar Swaminathan extern emlxs_device_t		emlxs_device;
44291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance[MAX_FC_BRDS];
45291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance_count;
46291a2b48SSukumar Swaminathan 
47291a2b48SSukumar Swaminathan extern ddi_device_acc_attr_t	emlxs_data_acc_attr;
48291a2b48SSukumar Swaminathan extern ddi_device_acc_attr_t	emlxs_dev_acc_attr;
49291a2b48SSukumar Swaminathan extern ddi_dma_lim_t		emlxs_dma_lim;
50291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_state;
51291a2b48SSukumar Swaminathan extern emlxs_config_t		emlxs_cfg[];
52291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr;
53291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_ro;
54291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_fcip_rsp;
55291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_1sg;
56fcf3ce44SJohn Forte 
57fcf3ce44SJohn Forte /* Module emlxs_msg.c External Routine Declarations */
58291a2b48SSukumar Swaminathan extern void			emlxs_msg_printf(emlxs_port_t *port,
59291a2b48SSukumar Swaminathan 					const uint32_t fileno,
60291a2b48SSukumar Swaminathan 					const uint32_t line,
61291a2b48SSukumar Swaminathan 					void *bp, uint32_t size,
62291a2b48SSukumar Swaminathan 					emlxs_msg_t *msg,
63291a2b48SSukumar Swaminathan 					const char *fmt, ...);
64291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_create(emlxs_hba_t *hba);
65291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_destroy(emlxs_hba_t *hba);
66291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_get(emlxs_hba_t *hba,
67291a2b48SSukumar Swaminathan 					emlxs_log_req_t *req,
68291a2b48SSukumar Swaminathan 					emlxs_log_resp_t *resp);
69291a2b48SSukumar Swaminathan extern void			emlxs_log_dump_event(emlxs_port_t *port,
70291a2b48SSukumar Swaminathan 					uint8_t *buffer, uint32_t size);
71291a2b48SSukumar Swaminathan extern void			emlxs_log_link_event(emlxs_port_t *port);
72291a2b48SSukumar Swaminathan extern uint32_t			emlxs_log_ct_event(emlxs_port_t *port,
73291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size,
74291a2b48SSukumar Swaminathan 					uint32_t rxid);
75291a2b48SSukumar Swaminathan extern void			emlxs_log_rscn_event(emlxs_port_t *port,
76291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size);
77291a2b48SSukumar Swaminathan extern void			emlxs_log_vportrscn_event(emlxs_port_t *port,
78291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size);
79291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_dfc_event(emlxs_port_t *port,
80291a2b48SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event,
81291a2b48SSukumar Swaminathan 					uint32_t sleep);
82291a2b48SSukumar Swaminathan extern uint32_t			emlxs_kill_dfc_event(emlxs_port_t *port,
83291a2b48SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event);
84291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_dfc_eventinfo(emlxs_port_t *port,
85291a2b48SSukumar Swaminathan 					HBA_EVENTINFO *eventinfo,
86291a2b48SSukumar Swaminathan 					uint32_t *eventcount,
87291a2b48SSukumar Swaminathan 					uint32_t *missed);
88291a2b48SSukumar Swaminathan extern void			emlxs_log_temp_event(emlxs_port_t *port,
89291a2b48SSukumar Swaminathan 					uint32_t type, uint32_t temp);
90291a2b48SSukumar Swaminathan extern void			emlxs_log_fcoe_event(emlxs_port_t *port,
91291a2b48SSukumar Swaminathan 					menlo_init_rsp_t *init_rsp);
92291a2b48SSukumar Swaminathan extern void			emlxs_log_async_event(emlxs_port_t *port,
93291a2b48SSukumar Swaminathan 					IOCB *iocb);
94fcf3ce44SJohn Forte 
95fcf3ce44SJohn Forte /* Module emlxs_solaris.c External Routine Declarations */
96291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_abort(opaque_t fca_port_handle,
97291a2b48SSukumar Swaminathan 					fc_packet_t *pkt, int32_t sleep);
98291a2b48SSukumar Swaminathan extern char			*emlxs_state_xlate(uint8_t state);
99291a2b48SSukumar Swaminathan extern char			*emlxs_error_xlate(uint8_t errno);
100291a2b48SSukumar Swaminathan extern void			emlxs_mem_free(emlxs_hba_t *hba,
101291a2b48SSukumar Swaminathan 					MBUF_INFO *buf_info);
102291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_alloc(emlxs_hba_t *hba,
103291a2b48SSukumar Swaminathan 					MBUF_INFO *buf_info);
104291a2b48SSukumar Swaminathan extern int			emlxs_map_bus(emlxs_hba_t *hba);
105291a2b48SSukumar Swaminathan extern void			emlxs_unmap_bus(emlxs_hba_t *hba);
106291a2b48SSukumar Swaminathan extern fc_unsol_buf_t		*emlxs_ub_find(emlxs_port_t *port,
107291a2b48SSukumar Swaminathan 					uint32_t token);
108291a2b48SSukumar Swaminathan extern fc_unsol_buf_t		*emlxs_ub_get(emlxs_port_t *port, uint32_t size,
109291a2b48SSukumar Swaminathan 					uint32_t type, uint32_t resv);
110291a2b48SSukumar Swaminathan extern int32_t			emlxs_log_printf(int32_t f, int32_t type,
111291a2b48SSukumar Swaminathan 					int32_t num, int32_t brdno,
112291a2b48SSukumar Swaminathan 					const char *fmt, ...);
113291a2b48SSukumar Swaminathan extern void			emlxs_set_pkt_state(emlxs_buf_t *sbp,
114291a2b48SSukumar Swaminathan 					uint32_t iostat, uint8_t localstat,
115291a2b48SSukumar Swaminathan 					uint32_t lock);
116291a2b48SSukumar Swaminathan extern char			*emlxs_elscmd_xlate(uint32_t cmd);
117291a2b48SSukumar Swaminathan extern char			*emlxs_ctcmd_xlate(uint32_t cmd);
118291a2b48SSukumar Swaminathan extern char			*emlxs_rmcmd_xlate(uint32_t cmd);
119291a2b48SSukumar Swaminathan extern char			*emlxs_wwn_xlate(char *buffer, uint8_t *wwn);
120291a2b48SSukumar Swaminathan extern int32_t			emlxs_transport(opaque_t fca_port_handle,
121291a2b48SSukumar Swaminathan 					fc_packet_t *pkt);
122291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_uninit(opaque_t fca_port_handle,
123291a2b48SSukumar Swaminathan 					fc_packet_t *pkt);
124291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_init(opaque_t fca_port_handle,
125291a2b48SSukumar Swaminathan 					fc_packet_t *pkt, int32_t sleep);
126291a2b48SSukumar Swaminathan extern void			emlxs_pkt_complete(emlxs_buf_t *sbp,
127291a2b48SSukumar Swaminathan 					uint32_t iostat, uint8_t localstat,
128291a2b48SSukumar Swaminathan 					uint32_t doneq);
129291a2b48SSukumar Swaminathan 
130291a2b48SSukumar Swaminathan #ifdef SAN_DIAG_SUPPORT
131291a2b48SSukumar Swaminathan extern void			emlxs_update_sd_bucket(emlxs_buf_t *sbp);
132291a2b48SSukumar Swaminathan #endif /* SAN_DIAG_SUPPORT */
133291a2b48SSukumar Swaminathan 
134291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_instance(int32_t ddiinst);
135291a2b48SSukumar Swaminathan extern char			*emlxs_mscmd_xlate(uint16_t cmd);
136291a2b48SSukumar Swaminathan extern int32_t			emlxs_reset(opaque_t fca_port_handle,
137291a2b48SSukumar Swaminathan 					uint32_t cmd);
138291a2b48SSukumar Swaminathan extern void			emlxs_swap_service_params(SERV_PARM *sp);
139291a2b48SSukumar Swaminathan extern void			emlxs_swap_fcp_pkt(emlxs_buf_t *sbp);
140291a2b48SSukumar Swaminathan extern void			emlxs_swap_ct_pkt(emlxs_buf_t *sbp);
141291a2b48SSukumar Swaminathan extern void			emlxs_swap_els_pkt(emlxs_buf_t *sbp);
142291a2b48SSukumar Swaminathan extern int			emlxs_ub_release(opaque_t fca_port_handle,
143291a2b48SSukumar Swaminathan 					uint32_t count, uint64_t tokens[]);
144291a2b48SSukumar Swaminathan extern void			emlxs_swap_els_ub(fc_unsol_buf_t *ubp);
145291a2b48SSukumar Swaminathan extern void			emlxs_unswap_pkt(emlxs_buf_t *sbp);
146291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_key(emlxs_hba_t *hba, MAILBOX *mb);
147291a2b48SSukumar Swaminathan extern int			emlxs_pm_busy_component(dev_info_t *dip);
148291a2b48SSukumar Swaminathan extern int			emlxs_pm_idle_component(dev_info_t *dip);
149291a2b48SSukumar Swaminathan extern void			emlxs_pm_idle_timer(dev_info_t *dip);
150*bb63f56eSSukumar Swaminathan extern void			emlxs_shutdown_thread(emlxs_hba_t *hba,
151*bb63f56eSSukumar Swaminathan 					void *arg1, void *arg2);
152291a2b48SSukumar Swaminathan extern uint32_t			emlxs_set_parm(emlxs_hba_t *hba, uint32_t index,
153291a2b48SSukumar Swaminathan 					uint32_t new_value);
154291a2b48SSukumar Swaminathan extern void			emlxs_ub_destroy(emlxs_port_t *port,
155291a2b48SSukumar Swaminathan 					emlxs_unsol_buf_t *pool);
156291a2b48SSukumar Swaminathan extern void			emlxs_ub_callback(emlxs_port_t *port,
157291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp);
158291a2b48SSukumar Swaminathan extern void			emlxs_ub_flush(emlxs_port_t *port);
159291a2b48SSukumar Swaminathan extern uint32_t			emlxs_check_parm(emlxs_hba_t *hba,
160291a2b48SSukumar Swaminathan 					uint32_t index, uint32_t new_value);
161291a2b48SSukumar Swaminathan extern int32_t			emlxs_port_manage(opaque_t fca_port_handle,
162291a2b48SSukumar Swaminathan 					fc_fca_pm_t *pm);
163291a2b48SSukumar Swaminathan extern void			emlxs_port_init(emlxs_port_t *port);
164291a2b48SSukumar Swaminathan extern void			emlxs_get_fcode_version(emlxs_hba_t *hba);
165fcf3ce44SJohn Forte 
166fcf3ce44SJohn Forte #ifdef MENLO_SUPPORT
167291a2b48SSukumar Swaminathan extern char			*emlxs_menlo_cmd_xlate(uint32_t cmd);
168291a2b48SSukumar Swaminathan extern char			*emlxs_menlo_rsp_xlate(uint32_t rsp);
169291a2b48SSukumar Swaminathan #endif /* MENLO_SUPPORT */
170291a2b48SSukumar Swaminathan 
171291a2b48SSukumar Swaminathan #ifdef FMA_SUPPORT
172291a2b48SSukumar Swaminathan extern void			emlxs_fm_init(emlxs_hba_t *hba);
173291a2b48SSukumar Swaminathan extern void			emlxs_fm_fini(emlxs_hba_t *hba);
174*bb63f56eSSukumar Swaminathan extern int			emlxs_fm_check_acc_handle(emlxs_hba_t *hba,
175291a2b48SSukumar Swaminathan 					ddi_acc_handle_t handle);
176*bb63f56eSSukumar Swaminathan extern int			emlxs_fm_check_dma_handle(emlxs_hba_t *hba,
177291a2b48SSukumar Swaminathan 					ddi_dma_handle_t handle);
178291a2b48SSukumar Swaminathan extern void			emlxs_fm_ereport(emlxs_hba_t *hba,
179291a2b48SSukumar Swaminathan 					char *detail);
180*bb63f56eSSukumar Swaminathan extern void			emlxs_fm_service_impact(emlxs_hba_t *hba,
181*bb63f56eSSukumar Swaminathan 					int impact);
182291a2b48SSukumar Swaminathan extern int			emlxs_fm_error_cb(dev_info_t *dip,
183291a2b48SSukumar Swaminathan 					ddi_fm_error_t *err,
184291a2b48SSukumar Swaminathan 					const void *impl_data);
185291a2b48SSukumar Swaminathan #endif	/* FMA_SUPPORT */
186fcf3ce44SJohn Forte 
187fcf3ce44SJohn Forte /* Module emlxs_pkt.c External Routine Declarations */
188291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_send(fc_packet_t *pkt, uint32_t now);
189291a2b48SSukumar Swaminathan extern void			emlxs_pkt_free(fc_packet_t *pkt);
190291a2b48SSukumar Swaminathan extern void			emlxs_pkt_callback(fc_packet_t *pkt);
191291a2b48SSukumar Swaminathan extern fc_packet_t		*emlxs_pkt_alloc(emlxs_port_t *port,
192291a2b48SSukumar Swaminathan 					uint32_t cmdlen, uint32_t rsplen,
193291a2b48SSukumar Swaminathan 					uint32_t datalen, int32_t sleep);
194fcf3ce44SJohn Forte 
195fcf3ce44SJohn Forte /* Module emlxs_clock.c External Routine Declarations */
196291a2b48SSukumar Swaminathan extern void			emlxs_timer_checks(emlxs_hba_t *hba);
197291a2b48SSukumar Swaminathan extern void			emlxs_timer_start(emlxs_hba_t *hba);
198291a2b48SSukumar Swaminathan extern void			emlxs_timer_stop(emlxs_hba_t *hba);
199291a2b48SSukumar Swaminathan extern void			emlxs_link_timeout(emlxs_hba_t *hba);
200291a2b48SSukumar Swaminathan extern clock_t			emlxs_timeout(emlxs_hba_t *hba,
201291a2b48SSukumar Swaminathan 					uint32_t timeout);
202fcf3ce44SJohn Forte 
203fcf3ce44SJohn Forte /* Module emlxs_dhchap.c External Routine Declarations */
204fcf3ce44SJohn Forte #ifdef DHCHAP_SUPPORT
205291a2b48SSukumar Swaminathan extern int			emlxs_dhchap_state_machine(emlxs_port_t *port,
206291a2b48SSukumar Swaminathan 					RING *ring, IOCBQ *iocbq, MATCHMAP *mp,
207291a2b48SSukumar Swaminathan 					NODELIST *node, int event);
208291a2b48SSukumar Swaminathan 
209291a2b48SSukumar Swaminathan extern void			emlxs_dhc_attach(emlxs_hba_t *hba);
210291a2b48SSukumar Swaminathan extern void			emlxs_dhc_detach(emlxs_hba_t *hba);
211291a2b48SSukumar Swaminathan extern void			emlxs_dhc_authrsp_timeout(emlxs_port_t *port,
212291a2b48SSukumar Swaminathan 					void *node, void *null);
213291a2b48SSukumar Swaminathan extern void			emlxs_dhc_reauth_timeout(emlxs_port_t *port,
214291a2b48SSukumar Swaminathan 					void *newtimeout, void *node);
215291a2b48SSukumar Swaminathan extern void			emlxs_dhc_auth_stop(emlxs_port_t *port,
216291a2b48SSukumar Swaminathan 					emlxs_node_t *node);
217291a2b48SSukumar Swaminathan extern int			emlxs_dhc_auth_start(emlxs_port_t *port,
218291a2b48SSukumar Swaminathan 					emlxs_node_t *node, uint8_t *sbp,
219291a2b48SSukumar Swaminathan 					uint8_t *ubp);
220291a2b48SSukumar Swaminathan extern void			emlxs_dhc_init_sp(emlxs_port_t *port,
221291a2b48SSukumar Swaminathan 					uint32_t did, SERV_PARM *sp,
222291a2b48SSukumar Swaminathan 					char **msg);
223291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_verify_login(emlxs_port_t *port,
224291a2b48SSukumar Swaminathan 					uint32_t sid, SERV_PARM *sp);
225291a2b48SSukumar Swaminathan extern void			emlxs_dhc_status(emlxs_port_t *port,
226291a2b48SSukumar Swaminathan 					emlxs_node_t *ndlp, uint32_t reason,
227291a2b48SSukumar Swaminathan 					uint32_t explaination);
228291a2b48SSukumar Swaminathan extern void			emlxs_dhc_state(emlxs_port_t *port,
229291a2b48SSukumar Swaminathan 					emlxs_node_t *ndlp, uint32_t state,
230291a2b48SSukumar Swaminathan 					uint32_t reason,
231291a2b48SSukumar Swaminathan 					uint32_t explaination);
232291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_init_auth(emlxs_hba_t *hba,
233291a2b48SSukumar Swaminathan 					uint8_t *lwwpn, uint8_t *rwwpn);
234291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_cfg(emlxs_hba_t *hba,
235291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg);
236291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_key(emlxs_hba_t *hba,
237291a2b48SSukumar Swaminathan 					dfc_auth_password_t *dfc_auth_pwd);
238291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_add_auth_cfg(emlxs_hba_t *hba,
239291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg,
240291a2b48SSukumar Swaminathan 					dfc_password_t *dfc_pwd);
241291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_delete_auth_cfg(emlxs_hba_t *hba,
242291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg,
243291a2b48SSukumar Swaminathan 					dfc_password_t *dfc_pwd);
244291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_set_auth_key(emlxs_hba_t *hba,
245291a2b48SSukumar Swaminathan 					dfc_auth_password_t *dfc_pwd);
246291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_status(emlxs_hba_t *hba,
247291a2b48SSukumar Swaminathan 					dfc_auth_status_t *fcsp_status);
248291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_cfg_table(emlxs_hba_t *hba,
249291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg);
250291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_key_table(emlxs_hba_t *hba,
251291a2b48SSukumar Swaminathan 					dfc_auth_password_t *auth_pwd);
252fcf3ce44SJohn Forte #endif	/* DHCHAP_SUPPORT */
253fcf3ce44SJohn Forte 
254fcf3ce44SJohn Forte /* Module emlxs_node.c External Routine Declarations */
255291a2b48SSukumar Swaminathan extern void			emlxs_node_timeout(emlxs_port_t *port,
256291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno);
257291a2b48SSukumar Swaminathan extern void			emlxs_node_open(emlxs_port_t *port,
258291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno);
259291a2b48SSukumar Swaminathan extern void			emlxs_node_close(emlxs_port_t *port,
260291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno,
261291a2b48SSukumar Swaminathan 					int32_t timeout);
262291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_did(emlxs_port_t *port,
263291a2b48SSukumar Swaminathan 					uint32_t did);
264291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_rpi(emlxs_port_t *port,
265291a2b48SSukumar Swaminathan 					uint32_t rpi);
266291a2b48SSukumar Swaminathan extern void			emlxs_node_destroy_all(emlxs_port_t *port);
267291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_mac(emlxs_port_t *port,
268291a2b48SSukumar Swaminathan 					uint8_t *mac);
269291a2b48SSukumar Swaminathan extern void			emlxs_node_add(emlxs_port_t *port,
270291a2b48SSukumar Swaminathan 					NODELIST *ndlp);
271291a2b48SSukumar Swaminathan extern void			emlxs_node_rm(emlxs_port_t *port,
272291a2b48SSukumar Swaminathan 					NODELIST *ndlp);
273291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_wwpn(emlxs_port_t *port,
274291a2b48SSukumar Swaminathan 					uint8_t *wwpn);
275291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_index(emlxs_port_t *port,
276291a2b48SSukumar Swaminathan 					uint32_t index, uint32_t nports_only);
277291a2b48SSukumar Swaminathan extern uint32_t			emlxs_nport_count(emlxs_port_t *port);
278fcf3ce44SJohn Forte 
279fcf3ce44SJohn Forte /* Module emlxs_els.c External Routine Declarations */
280291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_handle_event(emlxs_hba_t *hba,
281291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
282291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_handle_unsol_req(emlxs_port_t *port,
283291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
284291a2b48SSukumar Swaminathan 					uint32_t size);
285291a2b48SSukumar Swaminathan extern uint32_t			emlxs_generate_rscn(emlxs_port_t *port,
286291a2b48SSukumar Swaminathan 					uint32_t d_id);
287291a2b48SSukumar Swaminathan extern int32_t			emlxs_ct_handle_event(emlxs_hba_t *hba,
288291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
289291a2b48SSukumar Swaminathan extern int32_t			emlxs_ct_handle_unsol_req(emlxs_port_t *port,
290291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
291291a2b48SSukumar Swaminathan 					uint32_t size);
292291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_reply(emlxs_port_t *port,
293291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, uint32_t type,
294291a2b48SSukumar Swaminathan 					uint32_t type2, uint32_t reason,
295291a2b48SSukumar Swaminathan 					uint32_t explain);
296291a2b48SSukumar Swaminathan extern void			emlxs_send_logo(emlxs_port_t *port,
297291a2b48SSukumar Swaminathan 					uint32_t d_id);
298*bb63f56eSSukumar Swaminathan extern void			emlxs_reset_link_thread(emlxs_hba_t *hba,
299*bb63f56eSSukumar Swaminathan 					void *arg1, void *arg2);
300291a2b48SSukumar Swaminathan extern uint32_t			emlxs_process_unsol_flogi(emlxs_port_t *port,
301291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, MATCHMAP *mp,
302291a2b48SSukumar Swaminathan 					uint32_t size, char *buffer);
303291a2b48SSukumar Swaminathan extern uint32_t			emlxs_process_unsol_plogi(emlxs_port_t *port,
304291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, MATCHMAP *mp,
305291a2b48SSukumar Swaminathan 					uint32_t size, char *buffer);
306291a2b48SSukumar Swaminathan extern uint32_t			emlxs_ub_send_login_acc(emlxs_port_t *port,
307291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp);
308fcf3ce44SJohn Forte 
309fcf3ce44SJohn Forte #ifdef MENLO_SUPPORT
310291a2b48SSukumar Swaminathan extern int			emlxs_menlo_handle_event(emlxs_hba_t *hba,
311291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
312291a2b48SSukumar Swaminathan #endif /* MENLO_SUPPORT */
313fcf3ce44SJohn Forte 
314fcf3ce44SJohn Forte /* Module emlxs_ip.c External Routine Declarations */
315291a2b48SSukumar Swaminathan extern int32_t			emlxs_ip_handle_event(emlxs_hba_t *hba,
316291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
317291a2b48SSukumar Swaminathan extern int			emlxs_ip_handle_rcv_seq_list(emlxs_hba_t *hba,
318291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *saveq);
319291a2b48SSukumar Swaminathan extern int			emlxs_ip_handle_unsol_req(emlxs_port_t *port,
320291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
321291a2b48SSukumar Swaminathan 					uint32_t size);
322291a2b48SSukumar Swaminathan extern int			emlxs_create_xri(emlxs_port_t *port, RING *rp,
323291a2b48SSukumar Swaminathan 					NODELIST *ndlp);
324291a2b48SSukumar Swaminathan extern int			emlxs_handle_create_xri(emlxs_hba_t *hba,
325291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
326291a2b48SSukumar Swaminathan extern int			emlxs_handle_xri_aborted(emlxs_hba_t *hba,
327291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
328fcf3ce44SJohn Forte 
329fcf3ce44SJohn Forte /* Module emlxs_mbox.c External Routine Declarations */
330291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_msi(emlxs_hba_t *hba,
331291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t *intr_map,
332291a2b48SSukumar Swaminathan 					uint32_t intr_count);
333291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_msix(emlxs_hba_t *hba,
334291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t *intr_map,
335291a2b48SSukumar Swaminathan 					uint32_t intr_count);
336291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_lnk_stat(emlxs_hba_t *hba,
337291a2b48SSukumar Swaminathan 					MAILBOX *mb);
338291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_link(emlxs_hba_t *hba,
339291a2b48SSukumar Swaminathan 					MAILBOX *mb);
340291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_ring(emlxs_hba_t *hba,
341291a2b48SSukumar Swaminathan 					int32_t ring, MAILBOX *mb);
342291a2b48SSukumar Swaminathan extern void			emlxs_mb_init_link(emlxs_hba_t *hba,
343291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t topology,
344291a2b48SSukumar Swaminathan 					uint32_t linkspeed);
345291a2b48SSukumar Swaminathan extern void			emlxs_mb_down_link(emlxs_hba_t *hba,
346291a2b48SSukumar Swaminathan 					MAILBOX *mb);
347291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_la(emlxs_hba_t *hba,
348291a2b48SSukumar Swaminathan 					MAILBOX *mb);
349291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_nv(emlxs_hba_t *hba,
350291a2b48SSukumar Swaminathan 					MAILBOX *mb);
351291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_rev(emlxs_hba_t *hba,
352291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t v3);
353291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_rpi(emlxs_hba_t *hba,
354291a2b48SSukumar Swaminathan 					uint32_t rpi, MAILBOX *mb,
355291a2b48SSukumar Swaminathan 					uint32_t flg);
356291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_xri(emlxs_hba_t *hba,
357291a2b48SSukumar Swaminathan 					uint32_t xri, MAILBOX *mb,
358291a2b48SSukumar Swaminathan 					uint32_t flg);
359291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_sparam(emlxs_hba_t *hba,
360291a2b48SSukumar Swaminathan 					MAILBOX *mb);
361291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_reg_did(emlxs_port_t *port,
362291a2b48SSukumar Swaminathan 					uint32_t did, SERV_PARM *param,
363291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp, fc_unsol_buf_t *ubp,
364291a2b48SSukumar Swaminathan 					IOCBQ *iocbq);
365291a2b48SSukumar Swaminathan extern void			emlxs_disable_tc(emlxs_hba_t *hba,
366291a2b48SSukumar Swaminathan 					MAILBOX *mb);
367291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_run_biu_diag(emlxs_hba_t *hba,
368291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint64_t in, uint64_t out);
369291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_rpi(emlxs_port_t *port,
370291a2b48SSukumar Swaminathan 					uint32_t rpi, emlxs_buf_t *sbp,
371291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp, IOCBQ *iocbq);
372291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_did(emlxs_port_t *port,
373291a2b48SSukumar Swaminathan 					uint32_t did, emlxs_buf_t *sbp,
374291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp, IOCBQ *iocbq);
375291a2b48SSukumar Swaminathan extern void			emlxs_mb_dump_vpd(emlxs_hba_t *hba,
376291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t offset);
377291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_farp(emlxs_hba_t *hba,
378291a2b48SSukumar Swaminathan 					MAILBOX *mb);
379291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_config(emlxs_hba_t *hba,
380291a2b48SSukumar Swaminathan 					MAILBOX *mb);
381291a2b48SSukumar Swaminathan extern void			emlxs_mb_put(emlxs_hba_t *hba,
382291a2b48SSukumar Swaminathan 					MAILBOXQ *mbq);
383291a2b48SSukumar Swaminathan extern MAILBOXQ			*emlxs_mb_get(emlxs_hba_t *hba);
384291a2b48SSukumar Swaminathan extern void			emlxs_mb_clear_la(emlxs_hba_t *hba,
385291a2b48SSukumar Swaminathan 					MAILBOX *mb);
386291a2b48SSukumar Swaminathan extern void			emlxs_mb_set_var(emlxs_hba_t *hba,
387291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t addr,
388291a2b48SSukumar Swaminathan 					uint32_t value);
389291a2b48SSukumar Swaminathan extern void			emlxs_mb_reset_ring(emlxs_hba_t *hba,
390291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t ringno);
391291a2b48SSukumar Swaminathan extern char			*emlxs_mb_cmd_xlate(uint8_t command);
392291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_status(emlxs_hba_t *hba,
393291a2b48SSukumar Swaminathan 					MAILBOX *mb);
394291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_reg_vpi(emlxs_port_t *port);
395291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_vpi(emlxs_port_t *port);
396291a2b48SSukumar Swaminathan extern void			emlxs_mb_fini(emlxs_hba_t *hba,
397291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t mbxStatus);
398291a2b48SSukumar Swaminathan extern void			emlxs_mb_heartbeat(emlxs_hba_t *hba,
399291a2b48SSukumar Swaminathan 					MAILBOX *mb);
400291a2b48SSukumar Swaminathan extern void			emlxs_mb_async_event(emlxs_hba_t *hba,
401291a2b48SSukumar Swaminathan 					MAILBOX *mb);
402291a2b48SSukumar Swaminathan extern int32_t			emlxs_mb_check_sparm(emlxs_hba_t *hba,
403291a2b48SSukumar Swaminathan 					SERV_PARM *nsp);
404291a2b48SSukumar Swaminathan extern void			emlxs_mb_dump(emlxs_hba_t *hba, MAILBOX *mb,
405291a2b48SSukumar Swaminathan 					uint32_t offset, uint32_t words);
406291a2b48SSukumar Swaminathan extern void			emlxs_mb_retry(emlxs_hba_t *hba, MAILBOX *mb);
407291a2b48SSukumar Swaminathan extern void			emlxs_mb_init(emlxs_hba_t *hba, MAILBOXQ *mbq,
408291a2b48SSukumar Swaminathan 					uint32_t flag, uint32_t tmo);
409fcf3ce44SJohn Forte 
410fcf3ce44SJohn Forte #ifdef SLI3_SUPPORT
411291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_hbq(emlxs_hba_t *hba,
412291a2b48SSukumar Swaminathan 					MAILBOX *mb, int hbq_id);
413fcf3ce44SJohn Forte #endif	/* SLI3_SUPPORT */
414fcf3ce44SJohn Forte 
415fcf3ce44SJohn Forte /* Module emlxs_mem.c External Routine Declarations */
416291a2b48SSukumar Swaminathan extern MATCHMAP			*emlxs_mem_get_vaddr(emlxs_hba_t *hba,
417291a2b48SSukumar Swaminathan 					RING *rp, uint64_t mapbp);
418291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_get(emlxs_hba_t *hba,
419291a2b48SSukumar Swaminathan 					uint32_t seg);
420291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_put(emlxs_hba_t *hba,
421291a2b48SSukumar Swaminathan 					uint32_t seg, uint8_t *bp);
422291a2b48SSukumar Swaminathan extern int32_t			emlxs_mem_free_buffer(emlxs_hba_t *hba);
423291a2b48SSukumar Swaminathan extern int32_t			emlxs_mem_alloc_buffer(emlxs_hba_t *hba);
424291a2b48SSukumar Swaminathan extern void			emlxs_mem_map_vaddr(emlxs_hba_t *hba,
425291a2b48SSukumar Swaminathan 					RING *rp, MATCHMAP *mp, uint32_t *haddr,
426291a2b48SSukumar Swaminathan 					uint32_t *laddr);
427291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_buf_alloc(emlxs_hba_t *hba);
428291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_buf_free(emlxs_hba_t *hba,
429291a2b48SSukumar Swaminathan 					uint8_t *bp);
430fcf3ce44SJohn Forte #ifdef SLI3_SUPPORT
431291a2b48SSukumar Swaminathan extern uint32_t			emlxs_hbq_alloc(emlxs_hba_t *hba,
432291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
433fcf3ce44SJohn Forte #endif	/* SLI3_SUPPORT */
434fcf3ce44SJohn Forte 
435fcf3ce44SJohn Forte /* Module emlxs_hba.c  External Routine Declarations */
436291a2b48SSukumar Swaminathan extern int			emlxs_ffinit(emlxs_hba_t *hba);
437291a2b48SSukumar Swaminathan extern void			emlxs_decode_firmware_rev(emlxs_hba_t *hba,
438291a2b48SSukumar Swaminathan 					emlxs_vpd_t *vp);
439291a2b48SSukumar Swaminathan extern uint32_t			emlxs_init_adapter_info(emlxs_hba_t *hba);
440291a2b48SSukumar Swaminathan extern uint32_t			emlxs_strtol(char *str, uint32_t base);
441291a2b48SSukumar Swaminathan extern uint64_t			emlxs_strtoll(char *str, uint32_t base);
442291a2b48SSukumar Swaminathan extern void			emlxs_decode_version(uint32_t version,
443291a2b48SSukumar Swaminathan 					char *buffer);
444291a2b48SSukumar Swaminathan extern char			*emlxs_ffstate_xlate(uint32_t new_state);
445291a2b48SSukumar Swaminathan extern char			*emlxs_ring_xlate(uint32_t ringno);
446291a2b48SSukumar Swaminathan extern void			emlxs_proc_ring(emlxs_hba_t *hba,
447291a2b48SSukumar Swaminathan 					RING *rp, void *arg2);
448291a2b48SSukumar Swaminathan extern void			emlxs_pcix_mxr_update(emlxs_hba_t *hba,
449291a2b48SSukumar Swaminathan 					uint32_t verbose);
450*bb63f56eSSukumar Swaminathan extern void			emlxs_restart_thread(emlxs_hba_t *hba,
451*bb63f56eSSukumar Swaminathan 					void *arg1, void *arg2);
452291a2b48SSukumar Swaminathan extern void			emlxs_fw_show(emlxs_hba_t *hba);
453291a2b48SSukumar Swaminathan extern void			emlxs_proc_ring_event(emlxs_hba_t *hba,
454291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
455291a2b48SSukumar Swaminathan 
456fcf3ce44SJohn Forte 
457fcf3ce44SJohn Forte #ifdef MSI_SUPPORT
458291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_add(emlxs_hba_t *hba);
459291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_remove(emlxs_hba_t *hba);
460291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_init(emlxs_hba_t *hba, uint32_t max);
461291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_uninit(emlxs_hba_t *hba);
462fcf3ce44SJohn Forte #endif	/* MSI_SUPPORT */
463fcf3ce44SJohn Forte 
464291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_add(emlxs_hba_t *hba);
465291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_remove(emlxs_hba_t *hba);
466291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_init(emlxs_hba_t *hba, uint32_t max);
467291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_uninit(emlxs_hba_t *hba);
468291a2b48SSukumar Swaminathan 
469291a2b48SSukumar Swaminathan /* Module emlxs_sli.c  External Routine Declarations */
470291a2b48SSukumar Swaminathan extern int			emlxs_sli3_map_hdw(emlxs_hba_t *hba);
471291a2b48SSukumar Swaminathan extern int			emlxs_sli4_map_hdw(emlxs_hba_t *hba);
472291a2b48SSukumar Swaminathan 
473291a2b48SSukumar Swaminathan extern void			emlxs_sli3_unmap_hdw(emlxs_hba_t *hba);
474291a2b48SSukumar Swaminathan extern void			emlxs_sli4_unmap_hdw(emlxs_hba_t *hba);
475291a2b48SSukumar Swaminathan 
476291a2b48SSukumar Swaminathan extern int32_t			emlxs_sli3_online(emlxs_hba_t *hba);
477291a2b48SSukumar Swaminathan extern int32_t			emlxs_sli4_online(emlxs_hba_t *hba);
478fcf3ce44SJohn Forte 
479291a2b48SSukumar Swaminathan extern void			emlxs_sli3_offline(emlxs_hba_t *hba);
480291a2b48SSukumar Swaminathan extern void			emlxs_sli4_offline(emlxs_hba_t *hba);
481291a2b48SSukumar Swaminathan 
482291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_hba_reset(emlxs_hba_t *hba,
483291a2b48SSukumar Swaminathan 					uint32_t restart, uint32_t skip_post);
484291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_hba_reset(emlxs_hba_t *hba,
485291a2b48SSukumar Swaminathan 					uint32_t restart, uint32_t skip_post);
486291a2b48SSukumar Swaminathan 
487291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli2_bde_setup(emlxs_port_t *port,
488291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
489291a2b48SSukumar Swaminathan #ifdef SLI3_SUPPORT
490291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_bde_setup(emlxs_port_t *port,
491291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
492291a2b48SSukumar Swaminathan #endif
493291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_bde_setup(emlxs_port_t *port,
494291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
495291a2b48SSukumar Swaminathan 
496291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli2_fct_bde_setup(emlxs_port_t *port,
497291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
498291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_fct_bde_setup(emlxs_port_t *port,
499291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
500291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_fct_bde_setup(emlxs_port_t *port,
501291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
502291a2b48SSukumar Swaminathan 
503291a2b48SSukumar Swaminathan extern void			emlxs_sli3_issue_iocb_cmd(emlxs_hba_t *hba,
504291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocb_cmd);
505291a2b48SSukumar Swaminathan extern void			emlxs_sli4_issue_iocb_cmd(emlxs_hba_t *hba,
506291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocb_cmd);
507291a2b48SSukumar Swaminathan 
508291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_issue_mbox_cmd(emlxs_hba_t *hba,
509291a2b48SSukumar Swaminathan 					MAILBOX *mb, int32_t flg, uint32_t tmo);
510291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_issue_mbox_cmd(emlxs_hba_t *hba,
511291a2b48SSukumar Swaminathan 					MAILBOX *mb, int32_t flg, uint32_t tmo);
512291a2b48SSukumar Swaminathan 
513291a2b48SSukumar Swaminathan #ifdef SFCT_SUPPORT
514291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_fct_iocb(emlxs_port_t *port,
515291a2b48SSukumar Swaminathan 					emlxs_buf_t *cmd_sbp);
516291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_fct_iocb(emlxs_port_t *port,
517291a2b48SSukumar Swaminathan 					emlxs_buf_t *cmd_sbp);
518291a2b48SSukumar Swaminathan #endif /* SFCT_SUPPORT */
519291a2b48SSukumar Swaminathan 
520291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_fcp_iocb(emlxs_port_t *port,
521291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
522291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_fcp_iocb(emlxs_port_t *port,
523291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
524291a2b48SSukumar Swaminathan 
525291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_ip_iocb(emlxs_port_t *port,
526291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
527291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_ip_iocb(emlxs_port_t *port,
528291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
529291a2b48SSukumar Swaminathan 
530291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_els_iocb(emlxs_port_t *port,
531291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
532291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_els_iocb(emlxs_port_t *port,
533291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
534291a2b48SSukumar Swaminathan 
535291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_ct_iocb(emlxs_port_t *port,
536291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
537291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_ct_iocb(emlxs_port_t *port,
538291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
539291a2b48SSukumar Swaminathan 
540291a2b48SSukumar Swaminathan extern void			emlxs_sli3_poll_intr(emlxs_hba_t *hba,
541291a2b48SSukumar Swaminathan 					uint32_t att_bit);
542291a2b48SSukumar Swaminathan extern void			emlxs_sli4_poll_intr(emlxs_hba_t *hba,
543291a2b48SSukumar Swaminathan 					uint32_t att_bit);
544291a2b48SSukumar Swaminathan extern int32_t			emlxs_sli3_intx_intr(char *arg);
545291a2b48SSukumar Swaminathan extern int32_t			emlxs_sli4_intx_intr(char *arg);
546291a2b48SSukumar Swaminathan #ifdef MSI_SUPPORT
547291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_msi_intr(char *arg1, char *arg2);
548291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_msi_intr(char *arg1, char *arg2);
549291a2b48SSukumar Swaminathan #endif /* MSI_SUPPORT */
550291a2b48SSukumar Swaminathan 
551291a2b48SSukumar Swaminathan 
552291a2b48SSukumar Swaminathan extern uint32_t			emlxs_interlock(emlxs_hba_t *hba);
553291a2b48SSukumar Swaminathan extern uint32_t			emlxs_reset_ring(emlxs_hba_t *hba,
554291a2b48SSukumar Swaminathan 					uint32_t ringno);
555291a2b48SSukumar Swaminathan extern void			emlxs_handle_ff_error(emlxs_hba_t *hba);
556291a2b48SSukumar Swaminathan extern uint32_t			emlxs_handle_mb_event(emlxs_hba_t *hba);
557291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_issue_cmd(emlxs_hba_t *hba,
558291a2b48SSukumar Swaminathan 					MAILBOX *mb, int32_t flag,
559291a2b48SSukumar Swaminathan 					uint32_t timeout);
560291a2b48SSukumar Swaminathan extern void			emlxs_timer_check_mbox(emlxs_hba_t *hba);
561291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_config_port(emlxs_hba_t *hba,
562291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t sli_mode,
563291a2b48SSukumar Swaminathan 					uint32_t hbainit);
564291a2b48SSukumar Swaminathan extern void			emlxs_enable_latt(emlxs_hba_t *hba);
565291a2b48SSukumar Swaminathan extern void			emlxs_disable_intr(emlxs_hba_t *hba,
566291a2b48SSukumar Swaminathan 					uint32_t att);
567291a2b48SSukumar Swaminathan extern uint32_t			emlxs_check_attention(emlxs_hba_t *hba);
568291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_attention(emlxs_hba_t *hba,
569291a2b48SSukumar Swaminathan 					uint32_t msgid);
570291a2b48SSukumar Swaminathan extern void			emlxs_proc_attention(emlxs_hba_t *hba,
571291a2b48SSukumar Swaminathan 					uint32_t ha_copy);
572291a2b48SSukumar Swaminathan extern int			emlxs_handle_rcv_seq(emlxs_hba_t *hba,
573291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
574291a2b48SSukumar Swaminathan extern void			emlxs_intr_initialize(emlxs_hba_t *hba);
575291a2b48SSukumar Swaminathan extern void			emlxs_update_HBQ_index(emlxs_hba_t *hba,
576291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
577291a2b48SSukumar Swaminathan extern void			emlxs_hbq_free_all(emlxs_hba_t *hba,
578291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
579291a2b48SSukumar Swaminathan extern uint32_t			emlxs_hbq_setup(emlxs_hba_t *hba,
580291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
581fcf3ce44SJohn Forte 
582fcf3ce44SJohn Forte /* Module emlxs_diag.c  External Routine Declarations */
583291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_post_run(emlxs_hba_t *hba);
584291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_biu_run(emlxs_hba_t *hba,
585291a2b48SSukumar Swaminathan 					uint32_t pattern);
586291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_pattern[256];
587291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_echo_run(emlxs_port_t *port,
588291a2b48SSukumar Swaminathan 					uint32_t did, uint32_t pattern);
589291a2b48SSukumar Swaminathan extern uint32_t			emlxs_core_size(emlxs_hba_t *hba);
590291a2b48SSukumar Swaminathan extern uint32_t			emlxs_core_dump(emlxs_hba_t *hba,
591291a2b48SSukumar Swaminathan 					char *buffer, uint32_t size);
592fcf3ce44SJohn Forte 
593fcf3ce44SJohn Forte /* Module emlxs_download.c External Routine Declarations */
594291a2b48SSukumar Swaminathan extern int32_t			emlxs_fw_download(emlxs_hba_t *hba,
595291a2b48SSukumar Swaminathan 					caddr_t buffer, uint32_t len,
596291a2b48SSukumar Swaminathan 					uint32_t offline);
597291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_max_sram(emlxs_hba_t *hba,
598291a2b48SSukumar Swaminathan 					uint32_t *MaxRbusSize,
599291a2b48SSukumar Swaminathan 					uint32_t *MaxIbusSize);
600291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_load_list(emlxs_hba_t *hba,
601291a2b48SSukumar Swaminathan 					PROG_ID *load_list);
602291a2b48SSukumar Swaminathan extern uint32_t			emlxs_read_wakeup_parms(emlxs_hba_t *hba,
603291a2b48SSukumar Swaminathan 					PWAKE_UP_PARMS WakeUpParms,
604291a2b48SSukumar Swaminathan 					uint32_t verbose);
605291a2b48SSukumar Swaminathan extern int32_t			emlxs_cfl_download(emlxs_hba_t *hba,
606291a2b48SSukumar Swaminathan 					uint32_t region, caddr_t buffer,
607291a2b48SSukumar Swaminathan 					uint32_t len);
608291a2b48SSukumar Swaminathan 
609291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_disable(emlxs_hba_t *hba);
610291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_enable(emlxs_hba_t *hba);
611291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_state(emlxs_hba_t *hba);
612fcf3ce44SJohn Forte 
613fcf3ce44SJohn Forte /* Module emlxs_fcp.c External Routine Declarations */
614291a2b48SSukumar Swaminathan extern int			emlxs_power_up(emlxs_hba_t *hba);
615291a2b48SSukumar Swaminathan extern int			emlxs_power_down(emlxs_hba_t *hba);
616291a2b48SSukumar Swaminathan extern int			emlxs_reset_link(emlxs_hba_t *hba,
617291a2b48SSukumar Swaminathan 					uint32_t linkup);
618291a2b48SSukumar Swaminathan extern emlxs_buf_t		*emlxs_unregister_pkt(RING *rp,
619291a2b48SSukumar Swaminathan 					uint16_t iotag, uint32_t forced);
620291a2b48SSukumar Swaminathan extern uint16_t			emlxs_register_pkt(RING *rp,
621291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
622291a2b48SSukumar Swaminathan 
623291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_abort_xri_cn(emlxs_port_t *port,
624291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t iotag,
625291a2b48SSukumar Swaminathan 					RING *rp, uint8_t class, int32_t flag);
626291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_close_xri_cn(emlxs_port_t *port,
627291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t iotag,
628291a2b48SSukumar Swaminathan 					RING *rp);
629291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_abort_xri_cx(emlxs_port_t *port,
630291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t xid, RING *rp,
631291a2b48SSukumar Swaminathan 					uint8_t class, int32_t flag);
632291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_close_xri_cx(emlxs_port_t *port,
633291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t xid, RING *rp);
634*bb63f56eSSukumar Swaminathan extern void			emlxs_abort_ct_exchange(emlxs_hba_t *hba,
635*bb63f56eSSukumar Swaminathan 					emlxs_port_t *port, uint32_t rxid);
636291a2b48SSukumar Swaminathan 
637291a2b48SSukumar Swaminathan extern emlxs_buf_t		*emlxs_chipq_get(RING *rp, uint16_t iotag);
638291a2b48SSukumar Swaminathan extern void			emlxs_chipq_put(RING *rp, emlxs_buf_t *sbp);
639291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_node_flush(emlxs_port_t *port,
640291a2b48SSukumar Swaminathan 					RING *rp, NODELIST *ndlp,
641291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
642291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_lun_flush(emlxs_port_t *port,
643291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t lun,
644291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
645291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_node_check(emlxs_port_t *port,
646291a2b48SSukumar Swaminathan 					RING *ring, NODELIST *ndlp);
647291a2b48SSukumar Swaminathan 
648291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_tx_get(RING *rp, uint32_t lock);
649291a2b48SSukumar Swaminathan extern void			emlxs_tx_put(IOCBQ *iocbq, uint32_t lock);
650291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_node_check(emlxs_port_t *port,
651291a2b48SSukumar Swaminathan 					NODELIST *ndlp, RING *ring);
652291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_node_flush(emlxs_port_t *port,
653291a2b48SSukumar Swaminathan 					NODELIST *ndlp, RING *ring,
654291a2b48SSukumar Swaminathan 					uint32_t shutdown, emlxs_buf_t *fpkt);
655291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_lun_flush(emlxs_port_t *port,
656291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t lun,
657291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
658291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_ring_flush(emlxs_hba_t *hba,
659291a2b48SSukumar Swaminathan 					RING *rp, emlxs_buf_t *fpkt);
660291a2b48SSukumar Swaminathan 
661291a2b48SSukumar Swaminathan extern void			emlxs_linkdown(emlxs_hba_t *hba);
662291a2b48SSukumar Swaminathan extern void			emlxs_linkup(emlxs_hba_t *hba);
663291a2b48SSukumar Swaminathan extern void			emlxs_port_online(emlxs_port_t *port);
664291a2b48SSukumar Swaminathan extern int32_t			emlxs_port_offline(emlxs_port_t *port,
665291a2b48SSukumar Swaminathan 					uint32_t scope);
666291a2b48SSukumar Swaminathan extern void			emlxs_ffcleanup(emlxs_hba_t *hba);
667291a2b48SSukumar Swaminathan extern int32_t			emlxs_offline(emlxs_hba_t *hba);
668291a2b48SSukumar Swaminathan extern int32_t			emlxs_online(emlxs_hba_t *hba);
669291a2b48SSukumar Swaminathan extern void			emlxs_pcimem_bcopy(uint32_t *src,
670291a2b48SSukumar Swaminathan 					uint32_t *dest, uint32_t cnt);
671291a2b48SSukumar Swaminathan extern int32_t			emlxs_post_buffer(emlxs_hba_t *hba,
672291a2b48SSukumar Swaminathan 					RING *rp, int16_t cnt);
673291a2b48SSukumar Swaminathan extern void			emlxs_swap_bcopy(uint32_t *src,
674291a2b48SSukumar Swaminathan 					uint32_t *dest, uint32_t cnt);
675291a2b48SSukumar Swaminathan extern void			emlxs_ff_start(emlxs_hba_t *hba);
676291a2b48SSukumar Swaminathan extern void			emlxs_handle_fcp_event(emlxs_hba_t *hba,
677291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
678291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_abort(emlxs_hba_t *hba,
679291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
680fcf3ce44SJohn Forte 
681fcf3ce44SJohn Forte /* Module emlxs_thread.c External Routine Declarations */
682291a2b48SSukumar Swaminathan extern void			emlxs_taskq_destroy(emlxs_taskq_t *taskq);
683291a2b48SSukumar Swaminathan extern void			emlxs_taskq_create(emlxs_hba_t *hba,
684291a2b48SSukumar Swaminathan 					emlxs_taskq_t *taskq);
685291a2b48SSukumar Swaminathan extern uint32_t			emlxs_taskq_dispatch(emlxs_taskq_t *taskq,
686291a2b48SSukumar Swaminathan 					void (*func) (), void *arg);
687291a2b48SSukumar Swaminathan extern void			emlxs_thread_create(emlxs_hba_t *hba,
688291a2b48SSukumar Swaminathan 					emlxs_thread_t *ethread);
689291a2b48SSukumar Swaminathan extern void			emlxs_thread_destroy(emlxs_thread_t *ethread);
690291a2b48SSukumar Swaminathan extern void			emlxs_thread_trigger1(emlxs_thread_t *ethread,
691291a2b48SSukumar Swaminathan 					void (*func) ());
692291a2b48SSukumar Swaminathan extern void			emlxs_thread_trigger2(emlxs_thread_t *ethread,
693291a2b48SSukumar Swaminathan 					void (*func) (), RING *rp);
694*bb63f56eSSukumar Swaminathan extern void			emlxs_thread_spawn(emlxs_hba_t *hba,
695*bb63f56eSSukumar Swaminathan 					void (*func) (), void *arg1,
696*bb63f56eSSukumar Swaminathan 					void *arg2);
697*bb63f56eSSukumar Swaminathan extern void			emlxs_thread_spawn_create(emlxs_hba_t *hba);
698*bb63f56eSSukumar Swaminathan extern void			emlxs_thread_spawn_destroy(emlxs_hba_t *hba);
699fcf3ce44SJohn Forte 
700fcf3ce44SJohn Forte /* Module emlxs_dfc.c External Routine Declarations */
701291a2b48SSukumar Swaminathan extern int32_t			emlxs_dfc_manage(emlxs_hba_t *hba, void *dfc,
702291a2b48SSukumar Swaminathan 					int32_t mode);
703291a2b48SSukumar Swaminathan extern int32_t			emlxs_dfc_handle_event(emlxs_hba_t *hba,
704291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
705291a2b48SSukumar Swaminathan extern int			emlxs_dfc_handle_unsol_req(emlxs_port_t *port,
706291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
707291a2b48SSukumar Swaminathan 					uint32_t size);
708*bb63f56eSSukumar Swaminathan extern void			emlxs_fcoe_attention_thread(emlxs_hba_t *hba,
709*bb63f56eSSukumar Swaminathan 					void *arg1, void *arg2);
710291a2b48SSukumar Swaminathan extern uint32_t		emlxs_set_hba_mode(emlxs_hba_t *hba, uint32_t mode);
711291a2b48SSukumar Swaminathan extern uint32_t		emlxs_get_dump_region(emlxs_hba_t *hba, uint32_t region,
712291a2b48SSukumar Swaminathan 			    uint8_t *buffer, uint32_t *psize);
713291a2b48SSukumar Swaminathan extern int32_t		emlxs_send_menlo_cmd(emlxs_hba_t *hba, uint8_t *cmd_buf,
714291a2b48SSukumar Swaminathan 			    uint32_t cmd_size, uint8_t *rsp_buf,
715291a2b48SSukumar Swaminathan 			    uint32_t *rsp_size);
716fcf3ce44SJohn Forte 
717fcf3ce44SJohn Forte #ifdef SFCT_SUPPORT
718fcf3ce44SJohn Forte /* Module emlxs_fct.c External Routine Declarations */
719291a2b48SSukumar Swaminathan extern void			emlxs_fct_link_down(emlxs_port_t *port);
720291a2b48SSukumar Swaminathan extern void			emlxs_fct_link_up(emlxs_port_t *port);
721291a2b48SSukumar Swaminathan extern void			emlxs_fct_init(emlxs_hba_t *hba);
722291a2b48SSukumar Swaminathan extern void			emlxs_fct_detach(emlxs_hba_t *hba);
723291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_unsol_els(emlxs_port_t *port,
724291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
725291a2b48SSukumar Swaminathan 					uint32_t size);
726291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_unsol_req(emlxs_port_t *port,
727291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
728291a2b48SSukumar Swaminathan 					uint32_t size);
729291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_fcp_event(emlxs_hba_t *hba,
730291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
731291a2b48SSukumar Swaminathan extern void			emlxs_fct_bind_port(emlxs_port_t *port);
732291a2b48SSukumar Swaminathan extern void			emlxs_fct_unbind_port(emlxs_port_t *port);
733291a2b48SSukumar Swaminathan extern void			emlxs_fct_unsol_callback(emlxs_port_t *port,
734291a2b48SSukumar Swaminathan 					fct_cmd_t *fct_cmd);
735291a2b48SSukumar Swaminathan extern void			emlxs_fct_attach(emlxs_hba_t *hba);
736291a2b48SSukumar Swaminathan extern int			emlxs_fct_port_shutdown(emlxs_port_t *port);
737291a2b48SSukumar Swaminathan extern int			emlxs_fct_port_initialize(emlxs_port_t *port);
738fcf3ce44SJohn Forte 
739fcf3ce44SJohn Forte #ifdef MODSYM_SUPPORT
740291a2b48SSukumar Swaminathan extern void			emlxs_fct_modclose();
741291a2b48SSukumar Swaminathan #endif /* MODSYM_SUPPORT */
742291a2b48SSukumar Swaminathan 
743291a2b48SSukumar Swaminathan #ifdef FCT_IO_TRACE
744291a2b48SSukumar Swaminathan extern void			emlxs_fct_io_trace(emlxs_port_t *,
745291a2b48SSukumar Swaminathan 					fct_cmd_t *, uint32_t);
746291a2b48SSukumar Swaminathan #endif /* FCT_IO_TRACE */
747291a2b48SSukumar Swaminathan #endif /* SFCT_SUPPORT */
748291a2b48SSukumar Swaminathan 
749291a2b48SSukumar Swaminathan #ifdef SAN_DIAG_SUPPORT
750291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_sd_event(emlxs_port_t *port,
751291a2b48SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event,
752291a2b48SSukumar Swaminathan 					uint32_t sleep);
753291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_basic_els_event(emlxs_port_t *port,
754291a2b48SSukumar Swaminathan 					uint32_t subcat, HBA_WWN *portname,
755291a2b48SSukumar Swaminathan 					HBA_WWN *nodename);
756291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_prlo_event(emlxs_port_t *port,
757291a2b48SSukumar Swaminathan 					HBA_WWN *portname);
758291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_lsrjt_event(emlxs_port_t *port,
759291a2b48SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t orig_cmd,
760291a2b48SSukumar Swaminathan 					uint32_t reason, uint32_t reason_expl);
761291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_fc_bsy_event(emlxs_port_t *port,
762291a2b48SSukumar Swaminathan 					HBA_WWN *remoteport);
763291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_fc_rdchk_event(emlxs_port_t *port,
764291a2b48SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t lun,
765291a2b48SSukumar Swaminathan 					uint32_t opcode, uint32_t fcp_param);
766291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_scsi_event(emlxs_port_t *port,
767291a2b48SSukumar Swaminathan 					uint32_t type, HBA_WWN *remoteport,
768291a2b48SSukumar Swaminathan 					int32_t lun);
769291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_scsi_check_event(
770291a2b48SSukumar Swaminathan 					emlxs_port_t *port,
771291a2b48SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t lun,
772291a2b48SSukumar Swaminathan 					uint32_t cmdcode, uint32_t sensekey,
773291a2b48SSukumar Swaminathan 					uint32_t asc, uint32_t ascq);
774291a2b48SSukumar Swaminathan #endif  /* SAN_DIAG_SUPPORT */
775291a2b48SSukumar Swaminathan 
776291a2b48SSukumar Swaminathan 
777291a2b48SSukumar Swaminathan #ifdef DUMP_SUPPORT
778291a2b48SSukumar Swaminathan /* Module emlxs_dump.c External Routine Declarations */
779291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_drv_event(emlxs_hba_t *hba);
780291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_user_event(emlxs_hba_t *hba);
781291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_temp_event(emlxs_hba_t *hba,
782291a2b48SSukumar Swaminathan 				uint32_t tempType, uint32_t temp);
783*bb63f56eSSukumar Swaminathan extern void		emlxs_dump_drv_thread(emlxs_hba_t *hba,
784*bb63f56eSSukumar Swaminathan 				void *arg1, void *arg2);
785*bb63f56eSSukumar Swaminathan extern void		emlxs_dump_user_thread(emlxs_hba_t *hba,
786*bb63f56eSSukumar Swaminathan 				void *arg1, void *arg2);
787*bb63f56eSSukumar Swaminathan extern void		emlxs_dump_temp_thread(emlxs_hba_t *hba,
788*bb63f56eSSukumar Swaminathan 				void *arg1, void *arg2);
789291a2b48SSukumar Swaminathan extern uint32_t		emlxs_ftell(emlxs_file_t *fp);
790291a2b48SSukumar Swaminathan extern uint32_t		emlxs_get_dump(emlxs_hba_t *hba, uint8_t *buffer,
791291a2b48SSukumar Swaminathan 			    uint32_t *buflen);
792291a2b48SSukumar Swaminathan extern void		emlxs_dump_wait(emlxs_hba_t *hba);
793291a2b48SSukumar Swaminathan extern void		emlxs_dump(emlxs_hba_t *hba, uint32_t type,
794291a2b48SSukumar Swaminathan 			    uint32_t temp_type, uint32_t temp);
795291a2b48SSukumar Swaminathan 
796291a2b48SSukumar Swaminathan #endif /* DUMP_SUPPORT */
797fcf3ce44SJohn Forte 
798fcf3ce44SJohn Forte #ifdef	__cplusplus
799fcf3ce44SJohn Forte }
800fcf3ce44SJohn Forte #endif
801fcf3ce44SJohn Forte 
802fcf3ce44SJohn Forte #endif	/* _EMLXS_EXTERN_H */
803