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 /*
23*291a2b48SSukumar 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 
35*291a2b48SSukumar Swaminathan extern void			*emlxs_soft_state;
36*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance[MAX_FC_BRDS];
37*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance_count;
38*291a2b48SSukumar Swaminathan extern char			emlxs_revision[32];
39*291a2b48SSukumar Swaminathan extern char			emlxs_version[32];
40*291a2b48SSukumar Swaminathan extern char			emlxs_name[64];
41*291a2b48SSukumar Swaminathan extern char			emlxs_label[64];
42*291a2b48SSukumar Swaminathan 
43*291a2b48SSukumar Swaminathan extern emlxs_device_t		emlxs_device;
44*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance[MAX_FC_BRDS];
45*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance_count;
46*291a2b48SSukumar Swaminathan 
47*291a2b48SSukumar Swaminathan extern ddi_device_acc_attr_t	emlxs_data_acc_attr;
48*291a2b48SSukumar Swaminathan extern ddi_device_acc_attr_t	emlxs_dev_acc_attr;
49*291a2b48SSukumar Swaminathan extern ddi_dma_lim_t		emlxs_dma_lim;
50*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_state;
51*291a2b48SSukumar Swaminathan extern emlxs_config_t		emlxs_cfg[];
52*291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr;
53*291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_ro;
54*291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_fcip_rsp;
55*291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_1sg;
56fcf3ce44SJohn Forte 
57fcf3ce44SJohn Forte /* Module emlxs_msg.c External Routine Declarations */
58*291a2b48SSukumar Swaminathan extern void			emlxs_msg_printf(emlxs_port_t *port,
59*291a2b48SSukumar Swaminathan 					const uint32_t fileno,
60*291a2b48SSukumar Swaminathan 					const uint32_t line,
61*291a2b48SSukumar Swaminathan 					void *bp, uint32_t size,
62*291a2b48SSukumar Swaminathan 					emlxs_msg_t *msg,
63*291a2b48SSukumar Swaminathan 					const char *fmt, ...);
64*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_create(emlxs_hba_t *hba);
65*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_destroy(emlxs_hba_t *hba);
66*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_get(emlxs_hba_t *hba,
67*291a2b48SSukumar Swaminathan 					emlxs_log_req_t *req,
68*291a2b48SSukumar Swaminathan 					emlxs_log_resp_t *resp);
69*291a2b48SSukumar Swaminathan extern void			emlxs_log_dump_event(emlxs_port_t *port,
70*291a2b48SSukumar Swaminathan 					uint8_t *buffer, uint32_t size);
71*291a2b48SSukumar Swaminathan extern void			emlxs_log_link_event(emlxs_port_t *port);
72*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_log_ct_event(emlxs_port_t *port,
73*291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size,
74*291a2b48SSukumar Swaminathan 					uint32_t rxid);
75*291a2b48SSukumar Swaminathan extern void			emlxs_log_rscn_event(emlxs_port_t *port,
76*291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size);
77*291a2b48SSukumar Swaminathan extern void			emlxs_log_vportrscn_event(emlxs_port_t *port,
78*291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size);
79*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_dfc_event(emlxs_port_t *port,
80*291a2b48SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event,
81*291a2b48SSukumar Swaminathan 					uint32_t sleep);
82*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_kill_dfc_event(emlxs_port_t *port,
83*291a2b48SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event);
84*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_dfc_eventinfo(emlxs_port_t *port,
85*291a2b48SSukumar Swaminathan 					HBA_EVENTINFO *eventinfo,
86*291a2b48SSukumar Swaminathan 					uint32_t *eventcount,
87*291a2b48SSukumar Swaminathan 					uint32_t *missed);
88*291a2b48SSukumar Swaminathan extern void			emlxs_log_temp_event(emlxs_port_t *port,
89*291a2b48SSukumar Swaminathan 					uint32_t type, uint32_t temp);
90*291a2b48SSukumar Swaminathan extern void			emlxs_log_fcoe_event(emlxs_port_t *port,
91*291a2b48SSukumar Swaminathan 					menlo_init_rsp_t *init_rsp);
92*291a2b48SSukumar Swaminathan extern void			emlxs_log_async_event(emlxs_port_t *port,
93*291a2b48SSukumar Swaminathan 					IOCB *iocb);
94fcf3ce44SJohn Forte 
95fcf3ce44SJohn Forte /* Module emlxs_solaris.c External Routine Declarations */
96*291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_abort(opaque_t fca_port_handle,
97*291a2b48SSukumar Swaminathan 					fc_packet_t *pkt, int32_t sleep);
98*291a2b48SSukumar Swaminathan extern char			*emlxs_state_xlate(uint8_t state);
99*291a2b48SSukumar Swaminathan extern char			*emlxs_error_xlate(uint8_t errno);
100*291a2b48SSukumar Swaminathan extern void			emlxs_mem_free(emlxs_hba_t *hba,
101*291a2b48SSukumar Swaminathan 					MBUF_INFO *buf_info);
102*291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_alloc(emlxs_hba_t *hba,
103*291a2b48SSukumar Swaminathan 					MBUF_INFO *buf_info);
104*291a2b48SSukumar Swaminathan extern int			emlxs_map_bus(emlxs_hba_t *hba);
105*291a2b48SSukumar Swaminathan extern void			emlxs_unmap_bus(emlxs_hba_t *hba);
106*291a2b48SSukumar Swaminathan extern fc_unsol_buf_t		*emlxs_ub_find(emlxs_port_t *port,
107*291a2b48SSukumar Swaminathan 					uint32_t token);
108*291a2b48SSukumar Swaminathan extern fc_unsol_buf_t		*emlxs_ub_get(emlxs_port_t *port, uint32_t size,
109*291a2b48SSukumar Swaminathan 					uint32_t type, uint32_t resv);
110*291a2b48SSukumar Swaminathan extern int32_t			emlxs_log_printf(int32_t f, int32_t type,
111*291a2b48SSukumar Swaminathan 					int32_t num, int32_t brdno,
112*291a2b48SSukumar Swaminathan 					const char *fmt, ...);
113*291a2b48SSukumar Swaminathan extern void			emlxs_set_pkt_state(emlxs_buf_t *sbp,
114*291a2b48SSukumar Swaminathan 					uint32_t iostat, uint8_t localstat,
115*291a2b48SSukumar Swaminathan 					uint32_t lock);
116*291a2b48SSukumar Swaminathan extern char			*emlxs_elscmd_xlate(uint32_t cmd);
117*291a2b48SSukumar Swaminathan extern char			*emlxs_ctcmd_xlate(uint32_t cmd);
118*291a2b48SSukumar Swaminathan extern char			*emlxs_rmcmd_xlate(uint32_t cmd);
119*291a2b48SSukumar Swaminathan extern char			*emlxs_wwn_xlate(char *buffer, uint8_t *wwn);
120*291a2b48SSukumar Swaminathan extern int32_t			emlxs_transport(opaque_t fca_port_handle,
121*291a2b48SSukumar Swaminathan 					fc_packet_t *pkt);
122*291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_uninit(opaque_t fca_port_handle,
123*291a2b48SSukumar Swaminathan 					fc_packet_t *pkt);
124*291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_init(opaque_t fca_port_handle,
125*291a2b48SSukumar Swaminathan 					fc_packet_t *pkt, int32_t sleep);
126*291a2b48SSukumar Swaminathan extern void			emlxs_pkt_complete(emlxs_buf_t *sbp,
127*291a2b48SSukumar Swaminathan 					uint32_t iostat, uint8_t localstat,
128*291a2b48SSukumar Swaminathan 					uint32_t doneq);
129*291a2b48SSukumar Swaminathan 
130*291a2b48SSukumar Swaminathan #ifdef SAN_DIAG_SUPPORT
131*291a2b48SSukumar Swaminathan extern void			emlxs_update_sd_bucket(emlxs_buf_t *sbp);
132*291a2b48SSukumar Swaminathan #endif /* SAN_DIAG_SUPPORT */
133*291a2b48SSukumar Swaminathan 
134*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_instance(int32_t ddiinst);
135*291a2b48SSukumar Swaminathan extern char			*emlxs_mscmd_xlate(uint16_t cmd);
136*291a2b48SSukumar Swaminathan extern int32_t			emlxs_reset(opaque_t fca_port_handle,
137*291a2b48SSukumar Swaminathan 					uint32_t cmd);
138*291a2b48SSukumar Swaminathan extern void			emlxs_swap_service_params(SERV_PARM *sp);
139*291a2b48SSukumar Swaminathan extern void			emlxs_swap_fcp_pkt(emlxs_buf_t *sbp);
140*291a2b48SSukumar Swaminathan extern void			emlxs_swap_ct_pkt(emlxs_buf_t *sbp);
141*291a2b48SSukumar Swaminathan extern void			emlxs_swap_els_pkt(emlxs_buf_t *sbp);
142*291a2b48SSukumar Swaminathan extern int			emlxs_ub_release(opaque_t fca_port_handle,
143*291a2b48SSukumar Swaminathan 					uint32_t count, uint64_t tokens[]);
144*291a2b48SSukumar Swaminathan extern void			emlxs_swap_els_ub(fc_unsol_buf_t *ubp);
145*291a2b48SSukumar Swaminathan extern void			emlxs_unswap_pkt(emlxs_buf_t *sbp);
146*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_key(emlxs_hba_t *hba, MAILBOX *mb);
147*291a2b48SSukumar Swaminathan extern int			emlxs_pm_busy_component(dev_info_t *dip);
148*291a2b48SSukumar Swaminathan extern int			emlxs_pm_idle_component(dev_info_t *dip);
149*291a2b48SSukumar Swaminathan extern void			emlxs_pm_idle_timer(dev_info_t *dip);
150*291a2b48SSukumar Swaminathan extern void			emlxs_shutdown_thread(void *arg);
151*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_set_parm(emlxs_hba_t *hba, uint32_t index,
152*291a2b48SSukumar Swaminathan 					uint32_t new_value);
153*291a2b48SSukumar Swaminathan extern void			emlxs_ub_destroy(emlxs_port_t *port,
154*291a2b48SSukumar Swaminathan 					emlxs_unsol_buf_t *pool);
155*291a2b48SSukumar Swaminathan extern void			emlxs_ub_callback(emlxs_port_t *port,
156*291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp);
157*291a2b48SSukumar Swaminathan extern void			emlxs_ub_flush(emlxs_port_t *port);
158*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_check_parm(emlxs_hba_t *hba,
159*291a2b48SSukumar Swaminathan 					uint32_t index, uint32_t new_value);
160*291a2b48SSukumar Swaminathan extern int32_t			emlxs_port_manage(opaque_t fca_port_handle,
161*291a2b48SSukumar Swaminathan 					fc_fca_pm_t *pm);
162*291a2b48SSukumar Swaminathan extern void			emlxs_port_init(emlxs_port_t *port);
163*291a2b48SSukumar Swaminathan extern void			emlxs_get_fcode_version(emlxs_hba_t *hba);
164fcf3ce44SJohn Forte 
165fcf3ce44SJohn Forte #ifdef MENLO_SUPPORT
166*291a2b48SSukumar Swaminathan extern char			*emlxs_menlo_cmd_xlate(uint32_t cmd);
167*291a2b48SSukumar Swaminathan extern char			*emlxs_menlo_rsp_xlate(uint32_t rsp);
168*291a2b48SSukumar Swaminathan #endif /* MENLO_SUPPORT */
169*291a2b48SSukumar Swaminathan 
170*291a2b48SSukumar Swaminathan #ifdef FMA_SUPPORT
171*291a2b48SSukumar Swaminathan extern void			emlxs_fm_init(emlxs_hba_t *hba);
172*291a2b48SSukumar Swaminathan extern void			emlxs_fm_fini(emlxs_hba_t *hba);
173*291a2b48SSukumar Swaminathan extern int			emlxs_fm_check_acc_handle(
174*291a2b48SSukumar Swaminathan 					ddi_acc_handle_t handle);
175*291a2b48SSukumar Swaminathan extern int			emlxs_fm_check_dma_handle(
176*291a2b48SSukumar Swaminathan 					ddi_dma_handle_t handle);
177*291a2b48SSukumar Swaminathan extern void			emlxs_fm_ereport(emlxs_hba_t *hba,
178*291a2b48SSukumar Swaminathan 					char *detail);
179*291a2b48SSukumar Swaminathan extern int			emlxs_fm_error_cb(dev_info_t *dip,
180*291a2b48SSukumar Swaminathan 					ddi_fm_error_t *err,
181*291a2b48SSukumar Swaminathan 					const void *impl_data);
182*291a2b48SSukumar Swaminathan #endif	/* FMA_SUPPORT */
183fcf3ce44SJohn Forte 
184fcf3ce44SJohn Forte /* Module emlxs_pkt.c External Routine Declarations */
185*291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_send(fc_packet_t *pkt, uint32_t now);
186*291a2b48SSukumar Swaminathan extern void			emlxs_pkt_free(fc_packet_t *pkt);
187*291a2b48SSukumar Swaminathan extern void			emlxs_pkt_callback(fc_packet_t *pkt);
188*291a2b48SSukumar Swaminathan extern fc_packet_t		*emlxs_pkt_alloc(emlxs_port_t *port,
189*291a2b48SSukumar Swaminathan 					uint32_t cmdlen, uint32_t rsplen,
190*291a2b48SSukumar Swaminathan 					uint32_t datalen, int32_t sleep);
191fcf3ce44SJohn Forte 
192fcf3ce44SJohn Forte /* Module emlxs_clock.c External Routine Declarations */
193*291a2b48SSukumar Swaminathan extern void			emlxs_timer_checks(emlxs_hba_t *hba);
194*291a2b48SSukumar Swaminathan extern void			emlxs_timer_start(emlxs_hba_t *hba);
195*291a2b48SSukumar Swaminathan extern void			emlxs_timer_stop(emlxs_hba_t *hba);
196*291a2b48SSukumar Swaminathan extern void			emlxs_link_timeout(emlxs_hba_t *hba);
197*291a2b48SSukumar Swaminathan extern clock_t			emlxs_timeout(emlxs_hba_t *hba,
198*291a2b48SSukumar Swaminathan 					uint32_t timeout);
199fcf3ce44SJohn Forte 
200fcf3ce44SJohn Forte /* Module emlxs_dhchap.c External Routine Declarations */
201fcf3ce44SJohn Forte #ifdef DHCHAP_SUPPORT
202*291a2b48SSukumar Swaminathan extern int			emlxs_dhchap_state_machine(emlxs_port_t *port,
203*291a2b48SSukumar Swaminathan 					RING *ring, IOCBQ *iocbq, MATCHMAP *mp,
204*291a2b48SSukumar Swaminathan 					NODELIST *node, int event);
205*291a2b48SSukumar Swaminathan 
206*291a2b48SSukumar Swaminathan extern void			emlxs_dhc_attach(emlxs_hba_t *hba);
207*291a2b48SSukumar Swaminathan extern void			emlxs_dhc_detach(emlxs_hba_t *hba);
208*291a2b48SSukumar Swaminathan extern void			emlxs_dhc_authrsp_timeout(emlxs_port_t *port,
209*291a2b48SSukumar Swaminathan 					void *node, void *null);
210*291a2b48SSukumar Swaminathan extern void			emlxs_dhc_reauth_timeout(emlxs_port_t *port,
211*291a2b48SSukumar Swaminathan 					void *newtimeout, void *node);
212*291a2b48SSukumar Swaminathan extern void			emlxs_dhc_auth_stop(emlxs_port_t *port,
213*291a2b48SSukumar Swaminathan 					emlxs_node_t *node);
214*291a2b48SSukumar Swaminathan extern int			emlxs_dhc_auth_start(emlxs_port_t *port,
215*291a2b48SSukumar Swaminathan 					emlxs_node_t *node, uint8_t *sbp,
216*291a2b48SSukumar Swaminathan 					uint8_t *ubp);
217*291a2b48SSukumar Swaminathan extern void			emlxs_dhc_init_sp(emlxs_port_t *port,
218*291a2b48SSukumar Swaminathan 					uint32_t did, SERV_PARM *sp,
219*291a2b48SSukumar Swaminathan 					char **msg);
220*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_verify_login(emlxs_port_t *port,
221*291a2b48SSukumar Swaminathan 					uint32_t sid, SERV_PARM *sp);
222*291a2b48SSukumar Swaminathan extern void			emlxs_dhc_status(emlxs_port_t *port,
223*291a2b48SSukumar Swaminathan 					emlxs_node_t *ndlp, uint32_t reason,
224*291a2b48SSukumar Swaminathan 					uint32_t explaination);
225*291a2b48SSukumar Swaminathan extern void			emlxs_dhc_state(emlxs_port_t *port,
226*291a2b48SSukumar Swaminathan 					emlxs_node_t *ndlp, uint32_t state,
227*291a2b48SSukumar Swaminathan 					uint32_t reason,
228*291a2b48SSukumar Swaminathan 					uint32_t explaination);
229*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_init_auth(emlxs_hba_t *hba,
230*291a2b48SSukumar Swaminathan 					uint8_t *lwwpn, uint8_t *rwwpn);
231*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_cfg(emlxs_hba_t *hba,
232*291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg);
233*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_key(emlxs_hba_t *hba,
234*291a2b48SSukumar Swaminathan 					dfc_auth_password_t *dfc_auth_pwd);
235*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_add_auth_cfg(emlxs_hba_t *hba,
236*291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg,
237*291a2b48SSukumar Swaminathan 					dfc_password_t *dfc_pwd);
238*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_delete_auth_cfg(emlxs_hba_t *hba,
239*291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg,
240*291a2b48SSukumar Swaminathan 					dfc_password_t *dfc_pwd);
241*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_set_auth_key(emlxs_hba_t *hba,
242*291a2b48SSukumar Swaminathan 					dfc_auth_password_t *dfc_pwd);
243*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_status(emlxs_hba_t *hba,
244*291a2b48SSukumar Swaminathan 					dfc_auth_status_t *fcsp_status);
245*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_cfg_table(emlxs_hba_t *hba,
246*291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg);
247*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_key_table(emlxs_hba_t *hba,
248*291a2b48SSukumar Swaminathan 					dfc_auth_password_t *auth_pwd);
249fcf3ce44SJohn Forte #endif	/* DHCHAP_SUPPORT */
250fcf3ce44SJohn Forte 
251fcf3ce44SJohn Forte /* Module emlxs_node.c External Routine Declarations */
252*291a2b48SSukumar Swaminathan extern void			emlxs_node_timeout(emlxs_port_t *port,
253*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno);
254*291a2b48SSukumar Swaminathan extern void			emlxs_node_open(emlxs_port_t *port,
255*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno);
256*291a2b48SSukumar Swaminathan extern void			emlxs_node_close(emlxs_port_t *port,
257*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno,
258*291a2b48SSukumar Swaminathan 					int32_t timeout);
259*291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_did(emlxs_port_t *port,
260*291a2b48SSukumar Swaminathan 					uint32_t did);
261*291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_rpi(emlxs_port_t *port,
262*291a2b48SSukumar Swaminathan 					uint32_t rpi);
263*291a2b48SSukumar Swaminathan extern void			emlxs_node_destroy_all(emlxs_port_t *port);
264*291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_mac(emlxs_port_t *port,
265*291a2b48SSukumar Swaminathan 					uint8_t *mac);
266*291a2b48SSukumar Swaminathan extern void			emlxs_node_add(emlxs_port_t *port,
267*291a2b48SSukumar Swaminathan 					NODELIST *ndlp);
268*291a2b48SSukumar Swaminathan extern void			emlxs_node_rm(emlxs_port_t *port,
269*291a2b48SSukumar Swaminathan 					NODELIST *ndlp);
270*291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_wwpn(emlxs_port_t *port,
271*291a2b48SSukumar Swaminathan 					uint8_t *wwpn);
272*291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_index(emlxs_port_t *port,
273*291a2b48SSukumar Swaminathan 					uint32_t index, uint32_t nports_only);
274*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_nport_count(emlxs_port_t *port);
275fcf3ce44SJohn Forte 
276fcf3ce44SJohn Forte /* Module emlxs_els.c External Routine Declarations */
277*291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_handle_event(emlxs_hba_t *hba,
278*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
279*291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_handle_unsol_req(emlxs_port_t *port,
280*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
281*291a2b48SSukumar Swaminathan 					uint32_t size);
282*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_generate_rscn(emlxs_port_t *port,
283*291a2b48SSukumar Swaminathan 					uint32_t d_id);
284*291a2b48SSukumar Swaminathan extern int32_t			emlxs_ct_handle_event(emlxs_hba_t *hba,
285*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
286*291a2b48SSukumar Swaminathan extern int32_t			emlxs_ct_handle_unsol_req(emlxs_port_t *port,
287*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
288*291a2b48SSukumar Swaminathan 					uint32_t size);
289*291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_reply(emlxs_port_t *port,
290*291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, uint32_t type,
291*291a2b48SSukumar Swaminathan 					uint32_t type2, uint32_t reason,
292*291a2b48SSukumar Swaminathan 					uint32_t explain);
293*291a2b48SSukumar Swaminathan extern void			emlxs_send_logo(emlxs_port_t *port,
294*291a2b48SSukumar Swaminathan 					uint32_t d_id);
295*291a2b48SSukumar Swaminathan extern void			emlxs_reset_link_thread(void *arg);
296*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_process_unsol_flogi(emlxs_port_t *port,
297*291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, MATCHMAP *mp,
298*291a2b48SSukumar Swaminathan 					uint32_t size, char *buffer);
299*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_process_unsol_plogi(emlxs_port_t *port,
300*291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, MATCHMAP *mp,
301*291a2b48SSukumar Swaminathan 					uint32_t size, char *buffer);
302*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_ub_send_login_acc(emlxs_port_t *port,
303*291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp);
304fcf3ce44SJohn Forte 
305fcf3ce44SJohn Forte #ifdef MENLO_SUPPORT
306*291a2b48SSukumar Swaminathan extern int			emlxs_menlo_handle_event(emlxs_hba_t *hba,
307*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
308*291a2b48SSukumar Swaminathan #endif /* MENLO_SUPPORT */
309fcf3ce44SJohn Forte 
310fcf3ce44SJohn Forte /* Module emlxs_ip.c External Routine Declarations */
311*291a2b48SSukumar Swaminathan extern int32_t			emlxs_ip_handle_event(emlxs_hba_t *hba,
312*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
313*291a2b48SSukumar Swaminathan extern int			emlxs_ip_handle_rcv_seq_list(emlxs_hba_t *hba,
314*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *saveq);
315*291a2b48SSukumar Swaminathan extern int			emlxs_ip_handle_unsol_req(emlxs_port_t *port,
316*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
317*291a2b48SSukumar Swaminathan 					uint32_t size);
318*291a2b48SSukumar Swaminathan extern int			emlxs_create_xri(emlxs_port_t *port, RING *rp,
319*291a2b48SSukumar Swaminathan 					NODELIST *ndlp);
320*291a2b48SSukumar Swaminathan extern int			emlxs_handle_create_xri(emlxs_hba_t *hba,
321*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
322*291a2b48SSukumar Swaminathan extern int			emlxs_handle_xri_aborted(emlxs_hba_t *hba,
323*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
324fcf3ce44SJohn Forte 
325fcf3ce44SJohn Forte /* Module emlxs_mbox.c External Routine Declarations */
326*291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_msi(emlxs_hba_t *hba,
327*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t *intr_map,
328*291a2b48SSukumar Swaminathan 					uint32_t intr_count);
329*291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_msix(emlxs_hba_t *hba,
330*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t *intr_map,
331*291a2b48SSukumar Swaminathan 					uint32_t intr_count);
332*291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_lnk_stat(emlxs_hba_t *hba,
333*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
334*291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_link(emlxs_hba_t *hba,
335*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
336*291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_ring(emlxs_hba_t *hba,
337*291a2b48SSukumar Swaminathan 					int32_t ring, MAILBOX *mb);
338*291a2b48SSukumar Swaminathan extern void			emlxs_mb_init_link(emlxs_hba_t *hba,
339*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t topology,
340*291a2b48SSukumar Swaminathan 					uint32_t linkspeed);
341*291a2b48SSukumar Swaminathan extern void			emlxs_mb_down_link(emlxs_hba_t *hba,
342*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
343*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_la(emlxs_hba_t *hba,
344*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
345*291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_nv(emlxs_hba_t *hba,
346*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
347*291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_rev(emlxs_hba_t *hba,
348*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t v3);
349*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_rpi(emlxs_hba_t *hba,
350*291a2b48SSukumar Swaminathan 					uint32_t rpi, MAILBOX *mb,
351*291a2b48SSukumar Swaminathan 					uint32_t flg);
352*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_xri(emlxs_hba_t *hba,
353*291a2b48SSukumar Swaminathan 					uint32_t xri, MAILBOX *mb,
354*291a2b48SSukumar Swaminathan 					uint32_t flg);
355*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_sparam(emlxs_hba_t *hba,
356*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
357*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_reg_did(emlxs_port_t *port,
358*291a2b48SSukumar Swaminathan 					uint32_t did, SERV_PARM *param,
359*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp, fc_unsol_buf_t *ubp,
360*291a2b48SSukumar Swaminathan 					IOCBQ *iocbq);
361*291a2b48SSukumar Swaminathan extern void			emlxs_disable_tc(emlxs_hba_t *hba,
362*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
363*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_run_biu_diag(emlxs_hba_t *hba,
364*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint64_t in, uint64_t out);
365*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_rpi(emlxs_port_t *port,
366*291a2b48SSukumar Swaminathan 					uint32_t rpi, emlxs_buf_t *sbp,
367*291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp, IOCBQ *iocbq);
368*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_did(emlxs_port_t *port,
369*291a2b48SSukumar Swaminathan 					uint32_t did, emlxs_buf_t *sbp,
370*291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp, IOCBQ *iocbq);
371*291a2b48SSukumar Swaminathan extern void			emlxs_mb_dump_vpd(emlxs_hba_t *hba,
372*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t offset);
373*291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_farp(emlxs_hba_t *hba,
374*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
375*291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_config(emlxs_hba_t *hba,
376*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
377*291a2b48SSukumar Swaminathan extern void			emlxs_mb_put(emlxs_hba_t *hba,
378*291a2b48SSukumar Swaminathan 					MAILBOXQ *mbq);
379*291a2b48SSukumar Swaminathan extern MAILBOXQ			*emlxs_mb_get(emlxs_hba_t *hba);
380*291a2b48SSukumar Swaminathan extern void			emlxs_mb_clear_la(emlxs_hba_t *hba,
381*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
382*291a2b48SSukumar Swaminathan extern void			emlxs_mb_set_var(emlxs_hba_t *hba,
383*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t addr,
384*291a2b48SSukumar Swaminathan 					uint32_t value);
385*291a2b48SSukumar Swaminathan extern void			emlxs_mb_reset_ring(emlxs_hba_t *hba,
386*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t ringno);
387*291a2b48SSukumar Swaminathan extern char			*emlxs_mb_cmd_xlate(uint8_t command);
388*291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_status(emlxs_hba_t *hba,
389*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
390*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_reg_vpi(emlxs_port_t *port);
391*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_vpi(emlxs_port_t *port);
392*291a2b48SSukumar Swaminathan extern void			emlxs_mb_fini(emlxs_hba_t *hba,
393*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t mbxStatus);
394*291a2b48SSukumar Swaminathan extern void			emlxs_mb_heartbeat(emlxs_hba_t *hba,
395*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
396*291a2b48SSukumar Swaminathan extern void			emlxs_mb_async_event(emlxs_hba_t *hba,
397*291a2b48SSukumar Swaminathan 					MAILBOX *mb);
398*291a2b48SSukumar Swaminathan extern int32_t			emlxs_mb_check_sparm(emlxs_hba_t *hba,
399*291a2b48SSukumar Swaminathan 					SERV_PARM *nsp);
400*291a2b48SSukumar Swaminathan extern void			emlxs_mb_dump(emlxs_hba_t *hba, MAILBOX *mb,
401*291a2b48SSukumar Swaminathan 					uint32_t offset, uint32_t words);
402*291a2b48SSukumar Swaminathan extern void			emlxs_mb_retry(emlxs_hba_t *hba, MAILBOX *mb);
403*291a2b48SSukumar Swaminathan extern void			emlxs_mb_init(emlxs_hba_t *hba, MAILBOXQ *mbq,
404*291a2b48SSukumar Swaminathan 					uint32_t flag, uint32_t tmo);
405fcf3ce44SJohn Forte 
406fcf3ce44SJohn Forte #ifdef SLI3_SUPPORT
407*291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_hbq(emlxs_hba_t *hba,
408*291a2b48SSukumar Swaminathan 					MAILBOX *mb, int hbq_id);
409fcf3ce44SJohn Forte #endif	/* SLI3_SUPPORT */
410fcf3ce44SJohn Forte 
411fcf3ce44SJohn Forte /* Module emlxs_mem.c External Routine Declarations */
412*291a2b48SSukumar Swaminathan extern MATCHMAP			*emlxs_mem_get_vaddr(emlxs_hba_t *hba,
413*291a2b48SSukumar Swaminathan 					RING *rp, uint64_t mapbp);
414*291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_get(emlxs_hba_t *hba,
415*291a2b48SSukumar Swaminathan 					uint32_t seg);
416*291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_put(emlxs_hba_t *hba,
417*291a2b48SSukumar Swaminathan 					uint32_t seg, uint8_t *bp);
418*291a2b48SSukumar Swaminathan extern int32_t			emlxs_mem_free_buffer(emlxs_hba_t *hba);
419*291a2b48SSukumar Swaminathan extern int32_t			emlxs_mem_alloc_buffer(emlxs_hba_t *hba);
420*291a2b48SSukumar Swaminathan extern void			emlxs_mem_map_vaddr(emlxs_hba_t *hba,
421*291a2b48SSukumar Swaminathan 					RING *rp, MATCHMAP *mp, uint32_t *haddr,
422*291a2b48SSukumar Swaminathan 					uint32_t *laddr);
423*291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_buf_alloc(emlxs_hba_t *hba);
424*291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_buf_free(emlxs_hba_t *hba,
425*291a2b48SSukumar Swaminathan 					uint8_t *bp);
426fcf3ce44SJohn Forte #ifdef SLI3_SUPPORT
427*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_hbq_alloc(emlxs_hba_t *hba,
428*291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
429fcf3ce44SJohn Forte #endif	/* SLI3_SUPPORT */
430fcf3ce44SJohn Forte 
431fcf3ce44SJohn Forte /* Module emlxs_hba.c  External Routine Declarations */
432*291a2b48SSukumar Swaminathan extern int			emlxs_ffinit(emlxs_hba_t *hba);
433*291a2b48SSukumar Swaminathan extern void			emlxs_decode_firmware_rev(emlxs_hba_t *hba,
434*291a2b48SSukumar Swaminathan 					emlxs_vpd_t *vp);
435*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_init_adapter_info(emlxs_hba_t *hba);
436*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_strtol(char *str, uint32_t base);
437*291a2b48SSukumar Swaminathan extern uint64_t			emlxs_strtoll(char *str, uint32_t base);
438*291a2b48SSukumar Swaminathan extern void			emlxs_decode_version(uint32_t version,
439*291a2b48SSukumar Swaminathan 					char *buffer);
440*291a2b48SSukumar Swaminathan extern char			*emlxs_ffstate_xlate(uint32_t new_state);
441*291a2b48SSukumar Swaminathan extern char			*emlxs_ring_xlate(uint32_t ringno);
442*291a2b48SSukumar Swaminathan extern void			emlxs_proc_ring(emlxs_hba_t *hba,
443*291a2b48SSukumar Swaminathan 					RING *rp, void *arg2);
444*291a2b48SSukumar Swaminathan extern void			emlxs_pcix_mxr_update(emlxs_hba_t *hba,
445*291a2b48SSukumar Swaminathan 					uint32_t verbose);
446*291a2b48SSukumar Swaminathan extern void			emlxs_restart_thread(void *arg);
447*291a2b48SSukumar Swaminathan extern void			emlxs_fw_show(emlxs_hba_t *hba);
448*291a2b48SSukumar Swaminathan extern void			emlxs_proc_ring_event(emlxs_hba_t *hba,
449*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
450*291a2b48SSukumar Swaminathan 
451fcf3ce44SJohn Forte 
452fcf3ce44SJohn Forte #ifdef MSI_SUPPORT
453*291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_add(emlxs_hba_t *hba);
454*291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_remove(emlxs_hba_t *hba);
455*291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_init(emlxs_hba_t *hba, uint32_t max);
456*291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_uninit(emlxs_hba_t *hba);
457fcf3ce44SJohn Forte #endif	/* MSI_SUPPORT */
458fcf3ce44SJohn Forte 
459*291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_add(emlxs_hba_t *hba);
460*291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_remove(emlxs_hba_t *hba);
461*291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_init(emlxs_hba_t *hba, uint32_t max);
462*291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_uninit(emlxs_hba_t *hba);
463*291a2b48SSukumar Swaminathan 
464*291a2b48SSukumar Swaminathan /* Module emlxs_sli.c  External Routine Declarations */
465*291a2b48SSukumar Swaminathan extern int			emlxs_sli3_map_hdw(emlxs_hba_t *hba);
466*291a2b48SSukumar Swaminathan extern int			emlxs_sli4_map_hdw(emlxs_hba_t *hba);
467*291a2b48SSukumar Swaminathan 
468*291a2b48SSukumar Swaminathan extern void			emlxs_sli3_unmap_hdw(emlxs_hba_t *hba);
469*291a2b48SSukumar Swaminathan extern void			emlxs_sli4_unmap_hdw(emlxs_hba_t *hba);
470*291a2b48SSukumar Swaminathan 
471*291a2b48SSukumar Swaminathan extern int32_t			emlxs_sli3_online(emlxs_hba_t *hba);
472*291a2b48SSukumar Swaminathan extern int32_t			emlxs_sli4_online(emlxs_hba_t *hba);
473fcf3ce44SJohn Forte 
474*291a2b48SSukumar Swaminathan extern void			emlxs_sli3_offline(emlxs_hba_t *hba);
475*291a2b48SSukumar Swaminathan extern void			emlxs_sli4_offline(emlxs_hba_t *hba);
476*291a2b48SSukumar Swaminathan 
477*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_hba_reset(emlxs_hba_t *hba,
478*291a2b48SSukumar Swaminathan 					uint32_t restart, uint32_t skip_post);
479*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_hba_reset(emlxs_hba_t *hba,
480*291a2b48SSukumar Swaminathan 					uint32_t restart, uint32_t skip_post);
481*291a2b48SSukumar Swaminathan 
482*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli2_bde_setup(emlxs_port_t *port,
483*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
484*291a2b48SSukumar Swaminathan #ifdef SLI3_SUPPORT
485*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_bde_setup(emlxs_port_t *port,
486*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
487*291a2b48SSukumar Swaminathan #endif
488*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_bde_setup(emlxs_port_t *port,
489*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
490*291a2b48SSukumar Swaminathan 
491*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli2_fct_bde_setup(emlxs_port_t *port,
492*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
493*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_fct_bde_setup(emlxs_port_t *port,
494*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
495*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_fct_bde_setup(emlxs_port_t *port,
496*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
497*291a2b48SSukumar Swaminathan 
498*291a2b48SSukumar Swaminathan extern void			emlxs_sli3_issue_iocb_cmd(emlxs_hba_t *hba,
499*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocb_cmd);
500*291a2b48SSukumar Swaminathan extern void			emlxs_sli4_issue_iocb_cmd(emlxs_hba_t *hba,
501*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocb_cmd);
502*291a2b48SSukumar Swaminathan 
503*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_issue_mbox_cmd(emlxs_hba_t *hba,
504*291a2b48SSukumar Swaminathan 					MAILBOX *mb, int32_t flg, uint32_t tmo);
505*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_issue_mbox_cmd(emlxs_hba_t *hba,
506*291a2b48SSukumar Swaminathan 					MAILBOX *mb, int32_t flg, uint32_t tmo);
507*291a2b48SSukumar Swaminathan 
508*291a2b48SSukumar Swaminathan #ifdef SFCT_SUPPORT
509*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_fct_iocb(emlxs_port_t *port,
510*291a2b48SSukumar Swaminathan 					emlxs_buf_t *cmd_sbp);
511*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_fct_iocb(emlxs_port_t *port,
512*291a2b48SSukumar Swaminathan 					emlxs_buf_t *cmd_sbp);
513*291a2b48SSukumar Swaminathan #endif /* SFCT_SUPPORT */
514*291a2b48SSukumar Swaminathan 
515*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_fcp_iocb(emlxs_port_t *port,
516*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
517*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_fcp_iocb(emlxs_port_t *port,
518*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
519*291a2b48SSukumar Swaminathan 
520*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_ip_iocb(emlxs_port_t *port,
521*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
522*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_ip_iocb(emlxs_port_t *port,
523*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
524*291a2b48SSukumar Swaminathan 
525*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_els_iocb(emlxs_port_t *port,
526*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
527*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_els_iocb(emlxs_port_t *port,
528*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
529*291a2b48SSukumar Swaminathan 
530*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_prep_ct_iocb(emlxs_port_t *port,
531*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
532*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_prep_ct_iocb(emlxs_port_t *port,
533*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
534*291a2b48SSukumar Swaminathan 
535*291a2b48SSukumar Swaminathan extern void			emlxs_sli3_poll_intr(emlxs_hba_t *hba,
536*291a2b48SSukumar Swaminathan 					uint32_t att_bit);
537*291a2b48SSukumar Swaminathan extern void			emlxs_sli4_poll_intr(emlxs_hba_t *hba,
538*291a2b48SSukumar Swaminathan 					uint32_t att_bit);
539*291a2b48SSukumar Swaminathan extern int32_t			emlxs_sli3_intx_intr(char *arg);
540*291a2b48SSukumar Swaminathan extern int32_t			emlxs_sli4_intx_intr(char *arg);
541*291a2b48SSukumar Swaminathan #ifdef MSI_SUPPORT
542*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli3_msi_intr(char *arg1, char *arg2);
543*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_sli4_msi_intr(char *arg1, char *arg2);
544*291a2b48SSukumar Swaminathan #endif /* MSI_SUPPORT */
545*291a2b48SSukumar Swaminathan 
546*291a2b48SSukumar Swaminathan 
547*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_interlock(emlxs_hba_t *hba);
548*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_reset_ring(emlxs_hba_t *hba,
549*291a2b48SSukumar Swaminathan 					uint32_t ringno);
550*291a2b48SSukumar Swaminathan extern void			emlxs_handle_ff_error(emlxs_hba_t *hba);
551*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_handle_mb_event(emlxs_hba_t *hba);
552*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_issue_cmd(emlxs_hba_t *hba,
553*291a2b48SSukumar Swaminathan 					MAILBOX *mb, int32_t flag,
554*291a2b48SSukumar Swaminathan 					uint32_t timeout);
555*291a2b48SSukumar Swaminathan extern void			emlxs_timer_check_mbox(emlxs_hba_t *hba);
556*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_config_port(emlxs_hba_t *hba,
557*291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t sli_mode,
558*291a2b48SSukumar Swaminathan 					uint32_t hbainit);
559*291a2b48SSukumar Swaminathan extern void			emlxs_enable_latt(emlxs_hba_t *hba);
560*291a2b48SSukumar Swaminathan extern void			emlxs_disable_intr(emlxs_hba_t *hba,
561*291a2b48SSukumar Swaminathan 					uint32_t att);
562*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_check_attention(emlxs_hba_t *hba);
563*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_attention(emlxs_hba_t *hba,
564*291a2b48SSukumar Swaminathan 					uint32_t msgid);
565*291a2b48SSukumar Swaminathan extern void			emlxs_proc_attention(emlxs_hba_t *hba,
566*291a2b48SSukumar Swaminathan 					uint32_t ha_copy);
567*291a2b48SSukumar Swaminathan extern int			emlxs_handle_rcv_seq(emlxs_hba_t *hba,
568*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
569*291a2b48SSukumar Swaminathan extern void			emlxs_intr_initialize(emlxs_hba_t *hba);
570*291a2b48SSukumar Swaminathan extern void			emlxs_update_HBQ_index(emlxs_hba_t *hba,
571*291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
572*291a2b48SSukumar Swaminathan extern void			emlxs_hbq_free_all(emlxs_hba_t *hba,
573*291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
574*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_hbq_setup(emlxs_hba_t *hba,
575*291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
576fcf3ce44SJohn Forte 
577fcf3ce44SJohn Forte /* Module emlxs_diag.c  External Routine Declarations */
578*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_post_run(emlxs_hba_t *hba);
579*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_biu_run(emlxs_hba_t *hba,
580*291a2b48SSukumar Swaminathan 					uint32_t pattern);
581*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_pattern[256];
582*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_echo_run(emlxs_port_t *port,
583*291a2b48SSukumar Swaminathan 					uint32_t did, uint32_t pattern);
584*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_core_size(emlxs_hba_t *hba);
585*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_core_dump(emlxs_hba_t *hba,
586*291a2b48SSukumar Swaminathan 					char *buffer, uint32_t size);
587fcf3ce44SJohn Forte 
588fcf3ce44SJohn Forte /* Module emlxs_download.c External Routine Declarations */
589*291a2b48SSukumar Swaminathan extern int32_t			emlxs_fw_download(emlxs_hba_t *hba,
590*291a2b48SSukumar Swaminathan 					caddr_t buffer, uint32_t len,
591*291a2b48SSukumar Swaminathan 					uint32_t offline);
592*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_max_sram(emlxs_hba_t *hba,
593*291a2b48SSukumar Swaminathan 					uint32_t *MaxRbusSize,
594*291a2b48SSukumar Swaminathan 					uint32_t *MaxIbusSize);
595*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_load_list(emlxs_hba_t *hba,
596*291a2b48SSukumar Swaminathan 					PROG_ID *load_list);
597*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_read_wakeup_parms(emlxs_hba_t *hba,
598*291a2b48SSukumar Swaminathan 					PWAKE_UP_PARMS WakeUpParms,
599*291a2b48SSukumar Swaminathan 					uint32_t verbose);
600*291a2b48SSukumar Swaminathan extern int32_t			emlxs_cfl_download(emlxs_hba_t *hba,
601*291a2b48SSukumar Swaminathan 					uint32_t region, caddr_t buffer,
602*291a2b48SSukumar Swaminathan 					uint32_t len);
603*291a2b48SSukumar Swaminathan 
604*291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_disable(emlxs_hba_t *hba);
605*291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_enable(emlxs_hba_t *hba);
606*291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_state(emlxs_hba_t *hba);
607fcf3ce44SJohn Forte 
608fcf3ce44SJohn Forte /* Module emlxs_fcp.c External Routine Declarations */
609*291a2b48SSukumar Swaminathan extern int			emlxs_power_up(emlxs_hba_t *hba);
610*291a2b48SSukumar Swaminathan extern int			emlxs_power_down(emlxs_hba_t *hba);
611*291a2b48SSukumar Swaminathan extern int			emlxs_reset_link(emlxs_hba_t *hba,
612*291a2b48SSukumar Swaminathan 					uint32_t linkup);
613*291a2b48SSukumar Swaminathan extern emlxs_buf_t		*emlxs_unregister_pkt(RING *rp,
614*291a2b48SSukumar Swaminathan 					uint16_t iotag, uint32_t forced);
615*291a2b48SSukumar Swaminathan extern uint16_t			emlxs_register_pkt(RING *rp,
616*291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
617*291a2b48SSukumar Swaminathan 
618*291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_abort_xri_cn(emlxs_port_t *port,
619*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t iotag,
620*291a2b48SSukumar Swaminathan 					RING *rp, uint8_t class, int32_t flag);
621*291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_close_xri_cn(emlxs_port_t *port,
622*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t iotag,
623*291a2b48SSukumar Swaminathan 					RING *rp);
624*291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_abort_xri_cx(emlxs_port_t *port,
625*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t xid, RING *rp,
626*291a2b48SSukumar Swaminathan 					uint8_t class, int32_t flag);
627*291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_close_xri_cx(emlxs_port_t *port,
628*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t xid, RING *rp);
629*291a2b48SSukumar Swaminathan extern void			emlxs_abort_ct_exchange(emlxs_port_t *port,
630*291a2b48SSukumar Swaminathan 					uint32_t rxid);
631*291a2b48SSukumar Swaminathan 
632*291a2b48SSukumar Swaminathan extern emlxs_buf_t		*emlxs_chipq_get(RING *rp, uint16_t iotag);
633*291a2b48SSukumar Swaminathan extern void			emlxs_chipq_put(RING *rp, emlxs_buf_t *sbp);
634*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_node_flush(emlxs_port_t *port,
635*291a2b48SSukumar Swaminathan 					RING *rp, NODELIST *ndlp,
636*291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
637*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_lun_flush(emlxs_port_t *port,
638*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t lun,
639*291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
640*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_node_check(emlxs_port_t *port,
641*291a2b48SSukumar Swaminathan 					RING *ring, NODELIST *ndlp);
642*291a2b48SSukumar Swaminathan 
643*291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_tx_get(RING *rp, uint32_t lock);
644*291a2b48SSukumar Swaminathan extern void			emlxs_tx_put(IOCBQ *iocbq, uint32_t lock);
645*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_node_check(emlxs_port_t *port,
646*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, RING *ring);
647*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_node_flush(emlxs_port_t *port,
648*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, RING *ring,
649*291a2b48SSukumar Swaminathan 					uint32_t shutdown, emlxs_buf_t *fpkt);
650*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_lun_flush(emlxs_port_t *port,
651*291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t lun,
652*291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
653*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_ring_flush(emlxs_hba_t *hba,
654*291a2b48SSukumar Swaminathan 					RING *rp, emlxs_buf_t *fpkt);
655*291a2b48SSukumar Swaminathan 
656*291a2b48SSukumar Swaminathan extern void			emlxs_linkdown(emlxs_hba_t *hba);
657*291a2b48SSukumar Swaminathan extern void			emlxs_linkup(emlxs_hba_t *hba);
658*291a2b48SSukumar Swaminathan extern void			emlxs_port_online(emlxs_port_t *port);
659*291a2b48SSukumar Swaminathan extern int32_t			emlxs_port_offline(emlxs_port_t *port,
660*291a2b48SSukumar Swaminathan 					uint32_t scope);
661*291a2b48SSukumar Swaminathan extern void			emlxs_ffcleanup(emlxs_hba_t *hba);
662*291a2b48SSukumar Swaminathan extern int32_t			emlxs_offline(emlxs_hba_t *hba);
663*291a2b48SSukumar Swaminathan extern int32_t			emlxs_online(emlxs_hba_t *hba);
664*291a2b48SSukumar Swaminathan extern void			emlxs_pcimem_bcopy(uint32_t *src,
665*291a2b48SSukumar Swaminathan 					uint32_t *dest, uint32_t cnt);
666*291a2b48SSukumar Swaminathan extern int32_t			emlxs_post_buffer(emlxs_hba_t *hba,
667*291a2b48SSukumar Swaminathan 					RING *rp, int16_t cnt);
668*291a2b48SSukumar Swaminathan extern void			emlxs_swap_bcopy(uint32_t *src,
669*291a2b48SSukumar Swaminathan 					uint32_t *dest, uint32_t cnt);
670*291a2b48SSukumar Swaminathan extern void			emlxs_ff_start(emlxs_hba_t *hba);
671*291a2b48SSukumar Swaminathan extern void			emlxs_handle_fcp_event(emlxs_hba_t *hba,
672*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
673*291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_abort(emlxs_hba_t *hba,
674*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
675fcf3ce44SJohn Forte 
676fcf3ce44SJohn Forte /* Module emlxs_thread.c External Routine Declarations */
677*291a2b48SSukumar Swaminathan extern void			emlxs_taskq_destroy(emlxs_taskq_t *taskq);
678*291a2b48SSukumar Swaminathan extern void			emlxs_taskq_create(emlxs_hba_t *hba,
679*291a2b48SSukumar Swaminathan 					emlxs_taskq_t *taskq);
680*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_taskq_dispatch(emlxs_taskq_t *taskq,
681*291a2b48SSukumar Swaminathan 					void (*func) (), void *arg);
682*291a2b48SSukumar Swaminathan extern void			emlxs_thread_create(emlxs_hba_t *hba,
683*291a2b48SSukumar Swaminathan 					emlxs_thread_t *ethread);
684*291a2b48SSukumar Swaminathan extern void			emlxs_thread_destroy(emlxs_thread_t *ethread);
685*291a2b48SSukumar Swaminathan extern void			emlxs_thread_trigger1(emlxs_thread_t *ethread,
686*291a2b48SSukumar Swaminathan 					void (*func) ());
687*291a2b48SSukumar Swaminathan extern void			emlxs_thread_trigger2(emlxs_thread_t *ethread,
688*291a2b48SSukumar Swaminathan 					void (*func) (), RING *rp);
689fcf3ce44SJohn Forte 
690fcf3ce44SJohn Forte /* Module emlxs_dfc.c External Routine Declarations */
691*291a2b48SSukumar Swaminathan extern int32_t			emlxs_dfc_manage(emlxs_hba_t *hba, void *dfc,
692*291a2b48SSukumar Swaminathan 					int32_t mode);
693*291a2b48SSukumar Swaminathan extern int32_t			emlxs_dfc_handle_event(emlxs_hba_t *hba,
694*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *temp);
695*291a2b48SSukumar Swaminathan extern int			emlxs_dfc_handle_unsol_req(emlxs_port_t *port,
696*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
697*291a2b48SSukumar Swaminathan 					uint32_t size);
698*291a2b48SSukumar Swaminathan extern void		emlxs_fcoe_attention_thread(void *arg);
699*291a2b48SSukumar Swaminathan extern uint32_t		emlxs_set_hba_mode(emlxs_hba_t *hba, uint32_t mode);
700*291a2b48SSukumar Swaminathan extern uint32_t		emlxs_get_dump_region(emlxs_hba_t *hba, uint32_t region,
701*291a2b48SSukumar Swaminathan 			    uint8_t *buffer, uint32_t *psize);
702*291a2b48SSukumar Swaminathan extern int32_t		emlxs_send_menlo_cmd(emlxs_hba_t *hba, uint8_t *cmd_buf,
703*291a2b48SSukumar Swaminathan 			    uint32_t cmd_size, uint8_t *rsp_buf,
704*291a2b48SSukumar Swaminathan 			    uint32_t *rsp_size);
705fcf3ce44SJohn Forte 
706fcf3ce44SJohn Forte #ifdef SFCT_SUPPORT
707fcf3ce44SJohn Forte /* Module emlxs_fct.c External Routine Declarations */
708*291a2b48SSukumar Swaminathan extern void			emlxs_fct_link_down(emlxs_port_t *port);
709*291a2b48SSukumar Swaminathan extern void			emlxs_fct_link_up(emlxs_port_t *port);
710*291a2b48SSukumar Swaminathan extern void			emlxs_fct_init(emlxs_hba_t *hba);
711*291a2b48SSukumar Swaminathan extern void			emlxs_fct_detach(emlxs_hba_t *hba);
712*291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_unsol_els(emlxs_port_t *port,
713*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
714*291a2b48SSukumar Swaminathan 					uint32_t size);
715*291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_unsol_req(emlxs_port_t *port,
716*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq, MATCHMAP *mp,
717*291a2b48SSukumar Swaminathan 					uint32_t size);
718*291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_fcp_event(emlxs_hba_t *hba,
719*291a2b48SSukumar Swaminathan 					RING *rp, IOCBQ *iocbq);
720*291a2b48SSukumar Swaminathan extern void			emlxs_fct_bind_port(emlxs_port_t *port);
721*291a2b48SSukumar Swaminathan extern void			emlxs_fct_unbind_port(emlxs_port_t *port);
722*291a2b48SSukumar Swaminathan extern void			emlxs_fct_unsol_callback(emlxs_port_t *port,
723*291a2b48SSukumar Swaminathan 					fct_cmd_t *fct_cmd);
724*291a2b48SSukumar Swaminathan extern void			emlxs_fct_attach(emlxs_hba_t *hba);
725*291a2b48SSukumar Swaminathan extern int			emlxs_fct_port_shutdown(emlxs_port_t *port);
726*291a2b48SSukumar Swaminathan extern int			emlxs_fct_port_initialize(emlxs_port_t *port);
727fcf3ce44SJohn Forte 
728fcf3ce44SJohn Forte #ifdef MODSYM_SUPPORT
729*291a2b48SSukumar Swaminathan extern void			emlxs_fct_modclose();
730*291a2b48SSukumar Swaminathan #endif /* MODSYM_SUPPORT */
731*291a2b48SSukumar Swaminathan 
732*291a2b48SSukumar Swaminathan #ifdef FCT_IO_TRACE
733*291a2b48SSukumar Swaminathan extern void			emlxs_fct_io_trace(emlxs_port_t *,
734*291a2b48SSukumar Swaminathan 					fct_cmd_t *, uint32_t);
735*291a2b48SSukumar Swaminathan #endif /* FCT_IO_TRACE */
736*291a2b48SSukumar Swaminathan #endif /* SFCT_SUPPORT */
737*291a2b48SSukumar Swaminathan 
738*291a2b48SSukumar Swaminathan #ifdef SAN_DIAG_SUPPORT
739*291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_sd_event(emlxs_port_t *port,
740*291a2b48SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event,
741*291a2b48SSukumar Swaminathan 					uint32_t sleep);
742*291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_basic_els_event(emlxs_port_t *port,
743*291a2b48SSukumar Swaminathan 					uint32_t subcat, HBA_WWN *portname,
744*291a2b48SSukumar Swaminathan 					HBA_WWN *nodename);
745*291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_prlo_event(emlxs_port_t *port,
746*291a2b48SSukumar Swaminathan 					HBA_WWN *portname);
747*291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_lsrjt_event(emlxs_port_t *port,
748*291a2b48SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t orig_cmd,
749*291a2b48SSukumar Swaminathan 					uint32_t reason, uint32_t reason_expl);
750*291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_fc_bsy_event(emlxs_port_t *port,
751*291a2b48SSukumar Swaminathan 					HBA_WWN *remoteport);
752*291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_fc_rdchk_event(emlxs_port_t *port,
753*291a2b48SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t lun,
754*291a2b48SSukumar Swaminathan 					uint32_t opcode, uint32_t fcp_param);
755*291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_scsi_event(emlxs_port_t *port,
756*291a2b48SSukumar Swaminathan 					uint32_t type, HBA_WWN *remoteport,
757*291a2b48SSukumar Swaminathan 					int32_t lun);
758*291a2b48SSukumar Swaminathan extern void			emlxs_log_sd_scsi_check_event(
759*291a2b48SSukumar Swaminathan 					emlxs_port_t *port,
760*291a2b48SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t lun,
761*291a2b48SSukumar Swaminathan 					uint32_t cmdcode, uint32_t sensekey,
762*291a2b48SSukumar Swaminathan 					uint32_t asc, uint32_t ascq);
763*291a2b48SSukumar Swaminathan #endif  /* SAN_DIAG_SUPPORT */
764*291a2b48SSukumar Swaminathan 
765*291a2b48SSukumar Swaminathan 
766*291a2b48SSukumar Swaminathan #ifdef DUMP_SUPPORT
767*291a2b48SSukumar Swaminathan /* Module emlxs_dump.c External Routine Declarations */
768*291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_drv_event(emlxs_hba_t *hba);
769*291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_user_event(emlxs_hba_t *hba);
770*291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_temp_event(emlxs_hba_t *hba,
771*291a2b48SSukumar Swaminathan 				uint32_t tempType, uint32_t temp);
772*291a2b48SSukumar Swaminathan extern void		emlxs_dump_drv_thread(void *arg);
773*291a2b48SSukumar Swaminathan extern void		emlxs_dump_user_thread(void *arg);
774*291a2b48SSukumar Swaminathan extern void		emlxs_dump_temp_thread(void *arg);
775*291a2b48SSukumar Swaminathan extern uint32_t		emlxs_ftell(emlxs_file_t *fp);
776*291a2b48SSukumar Swaminathan extern uint32_t		emlxs_get_dump(emlxs_hba_t *hba, uint8_t *buffer,
777*291a2b48SSukumar Swaminathan 			    uint32_t *buflen);
778*291a2b48SSukumar Swaminathan extern void		emlxs_dump_wait(emlxs_hba_t *hba);
779*291a2b48SSukumar Swaminathan extern void		emlxs_dump(emlxs_hba_t *hba, uint32_t type,
780*291a2b48SSukumar Swaminathan 			    uint32_t temp_type, uint32_t temp);
781*291a2b48SSukumar Swaminathan 
782*291a2b48SSukumar Swaminathan #endif /* DUMP_SUPPORT */
783fcf3ce44SJohn Forte 
784fcf3ce44SJohn Forte #ifdef	__cplusplus
785fcf3ce44SJohn Forte }
786fcf3ce44SJohn Forte #endif
787fcf3ce44SJohn Forte 
788fcf3ce44SJohn Forte #endif	/* _EMLXS_EXTERN_H */
789