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*6a573d82SSukumar Swaminathan  * Copyright 2010 Emulex.  All rights reserved.
2482527734SSukumar Swaminathan  * Use is subject to license terms.
25fcf3ce44SJohn Forte  */
26fcf3ce44SJohn Forte 
27fcf3ce44SJohn Forte #ifndef _EMLXS_EXTERN_H
28fcf3ce44SJohn Forte #define	_EMLXS_EXTERN_H
29fcf3ce44SJohn Forte 
30fcf3ce44SJohn Forte #ifdef	__cplusplus
31fcf3ce44SJohn Forte extern "C" {
32fcf3ce44SJohn Forte #endif
33fcf3ce44SJohn Forte 
34291a2b48SSukumar Swaminathan extern void			*emlxs_soft_state;
35291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance[MAX_FC_BRDS];
36291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance_count;
37291a2b48SSukumar Swaminathan extern char			emlxs_revision[32];
38291a2b48SSukumar Swaminathan extern char			emlxs_version[32];
39291a2b48SSukumar Swaminathan extern char			emlxs_name[64];
40291a2b48SSukumar Swaminathan extern char			emlxs_label[64];
41291a2b48SSukumar Swaminathan 
42291a2b48SSukumar Swaminathan extern emlxs_device_t		emlxs_device;
43291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance[MAX_FC_BRDS];
44291a2b48SSukumar Swaminathan extern uint32_t			emlxs_instance_count;
45291a2b48SSukumar Swaminathan 
46291a2b48SSukumar Swaminathan extern ddi_device_acc_attr_t	emlxs_data_acc_attr;
47291a2b48SSukumar Swaminathan extern ddi_device_acc_attr_t	emlxs_dev_acc_attr;
48291a2b48SSukumar Swaminathan extern ddi_dma_lim_t		emlxs_dma_lim;
49291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_state;
50291a2b48SSukumar Swaminathan extern emlxs_config_t		emlxs_cfg[];
51291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr;
52291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_ro;
53291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_fcip_rsp;
54291a2b48SSukumar Swaminathan extern ddi_dma_attr_t		emlxs_dma_attr_1sg;
55fcf3ce44SJohn Forte 
56fcf3ce44SJohn Forte /* Module emlxs_msg.c External Routine Declarations */
57291a2b48SSukumar Swaminathan extern void			emlxs_msg_printf(emlxs_port_t *port,
58291a2b48SSukumar Swaminathan 					const uint32_t fileno,
59291a2b48SSukumar Swaminathan 					const uint32_t line,
60291a2b48SSukumar Swaminathan 					emlxs_msg_t *msg,
61291a2b48SSukumar Swaminathan 					const char *fmt, ...);
62291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_create(emlxs_hba_t *hba);
63291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_destroy(emlxs_hba_t *hba);
64291a2b48SSukumar Swaminathan extern uint32_t			emlxs_msg_log_get(emlxs_hba_t *hba,
65291a2b48SSukumar Swaminathan 					emlxs_log_req_t *req,
66291a2b48SSukumar Swaminathan 					emlxs_log_resp_t *resp);
6782527734SSukumar Swaminathan 
6882527734SSukumar Swaminathan /* Module emlxs_event.c External Routine Declarations */
6982527734SSukumar Swaminathan extern void			emlxs_timer_check_events(emlxs_hba_t *hba);
7082527734SSukumar Swaminathan 
7182527734SSukumar Swaminathan extern uint32_t			emlxs_event_queue_create(emlxs_hba_t *hba);
7282527734SSukumar Swaminathan 
7382527734SSukumar Swaminathan extern void			emlxs_event_queue_destroy(emlxs_hba_t *hba);
7482527734SSukumar Swaminathan 
7582527734SSukumar Swaminathan extern void			emlxs_event(emlxs_port_t *port,
7682527734SSukumar Swaminathan 					emlxs_event_t *evt, void *bp,
7782527734SSukumar Swaminathan 					uint32_t size);
78291a2b48SSukumar Swaminathan extern void			emlxs_log_dump_event(emlxs_port_t *port,
79291a2b48SSukumar Swaminathan 					uint8_t *buffer, uint32_t size);
80291a2b48SSukumar Swaminathan extern void			emlxs_log_link_event(emlxs_port_t *port);
8182527734SSukumar Swaminathan 
82291a2b48SSukumar Swaminathan extern uint32_t			emlxs_log_ct_event(emlxs_port_t *port,
83291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size,
84291a2b48SSukumar Swaminathan 					uint32_t rxid);
85291a2b48SSukumar Swaminathan extern void			emlxs_log_rscn_event(emlxs_port_t *port,
86291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size);
87291a2b48SSukumar Swaminathan extern void			emlxs_log_vportrscn_event(emlxs_port_t *port,
88291a2b48SSukumar Swaminathan 					uint8_t *payload, uint32_t size);
89291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_dfc_event(emlxs_port_t *port,
90291a2b48SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event,
91291a2b48SSukumar Swaminathan 					uint32_t sleep);
92291a2b48SSukumar Swaminathan extern uint32_t			emlxs_kill_dfc_event(emlxs_port_t *port,
93291a2b48SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event);
94291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_dfc_eventinfo(emlxs_port_t *port,
95291a2b48SSukumar Swaminathan 					HBA_EVENTINFO *eventinfo,
96291a2b48SSukumar Swaminathan 					uint32_t *eventcount,
97291a2b48SSukumar Swaminathan 					uint32_t *missed);
98291a2b48SSukumar Swaminathan extern void			emlxs_log_temp_event(emlxs_port_t *port,
99291a2b48SSukumar Swaminathan 					uint32_t type, uint32_t temp);
100291a2b48SSukumar Swaminathan extern void			emlxs_log_fcoe_event(emlxs_port_t *port,
101291a2b48SSukumar Swaminathan 					menlo_init_rsp_t *init_rsp);
102291a2b48SSukumar Swaminathan extern void			emlxs_log_async_event(emlxs_port_t *port,
103291a2b48SSukumar Swaminathan 					IOCB *iocb);
104fcf3ce44SJohn Forte 
10582527734SSukumar Swaminathan #ifdef SAN_DIAG_SUPPORT
10682527734SSukumar Swaminathan extern uint32_t			emlxs_get_sd_event(emlxs_port_t *port,
10782527734SSukumar Swaminathan 					emlxs_dfc_event_t *dfc_event,
10882527734SSukumar Swaminathan 					uint32_t sleep);
10982527734SSukumar Swaminathan extern void			emlxs_log_sd_basic_els_event(emlxs_port_t *port,
11082527734SSukumar Swaminathan 					uint32_t subcat, HBA_WWN *portname,
11182527734SSukumar Swaminathan 					HBA_WWN *nodename);
11282527734SSukumar Swaminathan extern void			emlxs_log_sd_prlo_event(emlxs_port_t *port,
11382527734SSukumar Swaminathan 					HBA_WWN *portname);
11482527734SSukumar Swaminathan extern void			emlxs_log_sd_lsrjt_event(emlxs_port_t *port,
11582527734SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t orig_cmd,
11682527734SSukumar Swaminathan 					uint32_t reason, uint32_t reason_expl);
11782527734SSukumar Swaminathan extern void			emlxs_log_sd_fc_bsy_event(emlxs_port_t *port,
11882527734SSukumar Swaminathan 					HBA_WWN *remoteport);
11982527734SSukumar Swaminathan extern void			emlxs_log_sd_fc_rdchk_event(emlxs_port_t *port,
12082527734SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t lun,
12182527734SSukumar Swaminathan 					uint32_t opcode, uint32_t fcp_param);
12282527734SSukumar Swaminathan extern void			emlxs_log_sd_scsi_event(emlxs_port_t *port,
12382527734SSukumar Swaminathan 					uint32_t type, HBA_WWN *remoteport,
12482527734SSukumar Swaminathan 					int32_t lun);
12582527734SSukumar Swaminathan extern void			emlxs_log_sd_scsi_check_event(
12682527734SSukumar Swaminathan 					emlxs_port_t *port,
12782527734SSukumar Swaminathan 					HBA_WWN *remoteport, uint32_t lun,
12882527734SSukumar Swaminathan 					uint32_t cmdcode, uint32_t sensekey,
12982527734SSukumar Swaminathan 					uint32_t asc, uint32_t ascq);
13082527734SSukumar Swaminathan #endif  /* SAN_DIAG_SUPPORT */
13182527734SSukumar Swaminathan 
132fcf3ce44SJohn Forte /* Module emlxs_solaris.c External Routine Declarations */
133291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_abort(opaque_t fca_port_handle,
134291a2b48SSukumar Swaminathan 					fc_packet_t *pkt, int32_t sleep);
135291a2b48SSukumar Swaminathan extern char			*emlxs_state_xlate(uint8_t state);
136291a2b48SSukumar Swaminathan extern char			*emlxs_error_xlate(uint8_t errno);
137291a2b48SSukumar Swaminathan extern void			emlxs_mem_free(emlxs_hba_t *hba,
138291a2b48SSukumar Swaminathan 					MBUF_INFO *buf_info);
139291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_alloc(emlxs_hba_t *hba,
140291a2b48SSukumar Swaminathan 					MBUF_INFO *buf_info);
141291a2b48SSukumar Swaminathan extern int			emlxs_map_bus(emlxs_hba_t *hba);
142291a2b48SSukumar Swaminathan extern void			emlxs_unmap_bus(emlxs_hba_t *hba);
143291a2b48SSukumar Swaminathan extern fc_unsol_buf_t		*emlxs_ub_find(emlxs_port_t *port,
144291a2b48SSukumar Swaminathan 					uint32_t token);
145291a2b48SSukumar Swaminathan extern fc_unsol_buf_t		*emlxs_ub_get(emlxs_port_t *port, uint32_t size,
146291a2b48SSukumar Swaminathan 					uint32_t type, uint32_t resv);
147291a2b48SSukumar Swaminathan extern int32_t			emlxs_log_printf(int32_t f, int32_t type,
148291a2b48SSukumar Swaminathan 					int32_t num, int32_t brdno,
149291a2b48SSukumar Swaminathan 					const char *fmt, ...);
150291a2b48SSukumar Swaminathan extern void			emlxs_set_pkt_state(emlxs_buf_t *sbp,
151291a2b48SSukumar Swaminathan 					uint32_t iostat, uint8_t localstat,
152291a2b48SSukumar Swaminathan 					uint32_t lock);
153291a2b48SSukumar Swaminathan extern char			*emlxs_elscmd_xlate(uint32_t cmd);
154291a2b48SSukumar Swaminathan extern char			*emlxs_ctcmd_xlate(uint32_t cmd);
155291a2b48SSukumar Swaminathan extern char			*emlxs_rmcmd_xlate(uint32_t cmd);
156291a2b48SSukumar Swaminathan extern char			*emlxs_wwn_xlate(char *buffer, uint8_t *wwn);
157291a2b48SSukumar Swaminathan extern int32_t			emlxs_transport(opaque_t fca_port_handle,
158291a2b48SSukumar Swaminathan 					fc_packet_t *pkt);
159291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_uninit(opaque_t fca_port_handle,
160291a2b48SSukumar Swaminathan 					fc_packet_t *pkt);
161291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_init(opaque_t fca_port_handle,
162291a2b48SSukumar Swaminathan 					fc_packet_t *pkt, int32_t sleep);
163291a2b48SSukumar Swaminathan extern void			emlxs_pkt_complete(emlxs_buf_t *sbp,
164291a2b48SSukumar Swaminathan 					uint32_t iostat, uint8_t localstat,
165291a2b48SSukumar Swaminathan 					uint32_t doneq);
166291a2b48SSukumar Swaminathan 
167291a2b48SSukumar Swaminathan #ifdef SAN_DIAG_SUPPORT
168291a2b48SSukumar Swaminathan extern void			emlxs_update_sd_bucket(emlxs_buf_t *sbp);
169291a2b48SSukumar Swaminathan #endif /* SAN_DIAG_SUPPORT */
170291a2b48SSukumar Swaminathan 
171291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_instance(int32_t ddiinst);
172291a2b48SSukumar Swaminathan extern char			*emlxs_mscmd_xlate(uint16_t cmd);
173*6a573d82SSukumar Swaminathan extern int32_t			emlxs_reset(emlxs_port_t *port, uint32_t cmd);
174291a2b48SSukumar Swaminathan extern void			emlxs_swap_service_params(SERV_PARM *sp);
175291a2b48SSukumar Swaminathan extern void			emlxs_swap_fcp_pkt(emlxs_buf_t *sbp);
176291a2b48SSukumar Swaminathan extern void			emlxs_swap_ct_pkt(emlxs_buf_t *sbp);
177291a2b48SSukumar Swaminathan extern void			emlxs_swap_els_pkt(emlxs_buf_t *sbp);
178291a2b48SSukumar Swaminathan extern int			emlxs_ub_release(opaque_t fca_port_handle,
179291a2b48SSukumar Swaminathan 					uint32_t count, uint64_t tokens[]);
180291a2b48SSukumar Swaminathan extern void			emlxs_swap_els_ub(fc_unsol_buf_t *ubp);
181291a2b48SSukumar Swaminathan extern void			emlxs_unswap_pkt(emlxs_buf_t *sbp);
18282527734SSukumar Swaminathan extern uint32_t			emlxs_get_key(emlxs_hba_t *hba, MAILBOXQ *mbq);
183291a2b48SSukumar Swaminathan extern int			emlxs_pm_busy_component(dev_info_t *dip);
184291a2b48SSukumar Swaminathan extern int			emlxs_pm_idle_component(dev_info_t *dip);
185291a2b48SSukumar Swaminathan extern void			emlxs_pm_idle_timer(dev_info_t *dip);
186bb63f56eSSukumar Swaminathan extern void			emlxs_shutdown_thread(emlxs_hba_t *hba,
187bb63f56eSSukumar Swaminathan 					void *arg1, void *arg2);
188291a2b48SSukumar Swaminathan extern uint32_t			emlxs_set_parm(emlxs_hba_t *hba, uint32_t index,
189291a2b48SSukumar Swaminathan 					uint32_t new_value);
190291a2b48SSukumar Swaminathan extern void			emlxs_ub_destroy(emlxs_port_t *port,
191291a2b48SSukumar Swaminathan 					emlxs_unsol_buf_t *pool);
192291a2b48SSukumar Swaminathan extern void			emlxs_ub_callback(emlxs_port_t *port,
193291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp);
194291a2b48SSukumar Swaminathan extern void			emlxs_ub_flush(emlxs_port_t *port);
195291a2b48SSukumar Swaminathan extern uint32_t			emlxs_check_parm(emlxs_hba_t *hba,
196291a2b48SSukumar Swaminathan 					uint32_t index, uint32_t new_value);
197291a2b48SSukumar Swaminathan extern int32_t			emlxs_port_manage(opaque_t fca_port_handle,
198291a2b48SSukumar Swaminathan 					fc_fca_pm_t *pm);
199291a2b48SSukumar Swaminathan extern void			emlxs_port_init(emlxs_port_t *port);
200291a2b48SSukumar Swaminathan extern void			emlxs_get_fcode_version(emlxs_hba_t *hba);
201fcf3ce44SJohn Forte 
20282527734SSukumar Swaminathan extern void			emlxs_swap32_buffer(uint8_t *buffer,
20382527734SSukumar Swaminathan 					uint32_t size);
20482527734SSukumar Swaminathan extern void			emlxs_swap32_bcopy(uint8_t *src,
20582527734SSukumar Swaminathan 					uint8_t *dst, uint32_t size);
20682527734SSukumar Swaminathan 
207fcf3ce44SJohn Forte #ifdef MENLO_SUPPORT
208291a2b48SSukumar Swaminathan extern char			*emlxs_menlo_cmd_xlate(uint32_t cmd);
209291a2b48SSukumar Swaminathan extern char			*emlxs_menlo_rsp_xlate(uint32_t rsp);
210291a2b48SSukumar Swaminathan #endif /* MENLO_SUPPORT */
211291a2b48SSukumar Swaminathan 
212291a2b48SSukumar Swaminathan #ifdef FMA_SUPPORT
213291a2b48SSukumar Swaminathan extern void			emlxs_fm_init(emlxs_hba_t *hba);
214291a2b48SSukumar Swaminathan extern void			emlxs_fm_fini(emlxs_hba_t *hba);
215bb63f56eSSukumar Swaminathan extern int			emlxs_fm_check_acc_handle(emlxs_hba_t *hba,
216291a2b48SSukumar Swaminathan 					ddi_acc_handle_t handle);
217bb63f56eSSukumar Swaminathan extern int			emlxs_fm_check_dma_handle(emlxs_hba_t *hba,
218291a2b48SSukumar Swaminathan 					ddi_dma_handle_t handle);
219291a2b48SSukumar Swaminathan extern void			emlxs_fm_ereport(emlxs_hba_t *hba,
220291a2b48SSukumar Swaminathan 					char *detail);
221bb63f56eSSukumar Swaminathan extern void			emlxs_fm_service_impact(emlxs_hba_t *hba,
222bb63f56eSSukumar Swaminathan 					int impact);
223291a2b48SSukumar Swaminathan extern int			emlxs_fm_error_cb(dev_info_t *dip,
224291a2b48SSukumar Swaminathan 					ddi_fm_error_t *err,
225291a2b48SSukumar Swaminathan 					const void *impl_data);
226b3660a96SSukumar Swaminathan extern void			emlxs_check_dma(emlxs_hba_t *hba,
227b3660a96SSukumar Swaminathan 					emlxs_buf_t *sbp);
228291a2b48SSukumar Swaminathan #endif	/* FMA_SUPPORT */
229fcf3ce44SJohn Forte 
230fcf3ce44SJohn Forte /* Module emlxs_pkt.c External Routine Declarations */
231291a2b48SSukumar Swaminathan extern int32_t			emlxs_pkt_send(fc_packet_t *pkt, uint32_t now);
232291a2b48SSukumar Swaminathan extern void			emlxs_pkt_free(fc_packet_t *pkt);
233291a2b48SSukumar Swaminathan extern void			emlxs_pkt_callback(fc_packet_t *pkt);
234291a2b48SSukumar Swaminathan extern fc_packet_t		*emlxs_pkt_alloc(emlxs_port_t *port,
235291a2b48SSukumar Swaminathan 					uint32_t cmdlen, uint32_t rsplen,
236291a2b48SSukumar Swaminathan 					uint32_t datalen, int32_t sleep);
237fcf3ce44SJohn Forte 
238fcf3ce44SJohn Forte /* Module emlxs_clock.c External Routine Declarations */
239291a2b48SSukumar Swaminathan extern void			emlxs_timer_checks(emlxs_hba_t *hba);
240291a2b48SSukumar Swaminathan extern void			emlxs_timer_start(emlxs_hba_t *hba);
241291a2b48SSukumar Swaminathan extern void			emlxs_timer_stop(emlxs_hba_t *hba);
242291a2b48SSukumar Swaminathan extern void			emlxs_link_timeout(emlxs_hba_t *hba);
243291a2b48SSukumar Swaminathan extern clock_t			emlxs_timeout(emlxs_hba_t *hba,
244291a2b48SSukumar Swaminathan 					uint32_t timeout);
245fcf3ce44SJohn Forte 
246fcf3ce44SJohn Forte /* Module emlxs_dhchap.c External Routine Declarations */
247fcf3ce44SJohn Forte #ifdef DHCHAP_SUPPORT
248291a2b48SSukumar Swaminathan extern int			emlxs_dhchap_state_machine(emlxs_port_t *port,
24982527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq,
25082527734SSukumar Swaminathan 					MATCHMAP *mp, NODELIST *node, int evt);
251291a2b48SSukumar Swaminathan 
252291a2b48SSukumar Swaminathan extern void			emlxs_dhc_attach(emlxs_hba_t *hba);
253291a2b48SSukumar Swaminathan extern void			emlxs_dhc_detach(emlxs_hba_t *hba);
254291a2b48SSukumar Swaminathan extern void			emlxs_dhc_authrsp_timeout(emlxs_port_t *port,
255291a2b48SSukumar Swaminathan 					void *node, void *null);
256291a2b48SSukumar Swaminathan extern void			emlxs_dhc_reauth_timeout(emlxs_port_t *port,
257291a2b48SSukumar Swaminathan 					void *newtimeout, void *node);
258291a2b48SSukumar Swaminathan extern void			emlxs_dhc_auth_stop(emlxs_port_t *port,
259291a2b48SSukumar Swaminathan 					emlxs_node_t *node);
260291a2b48SSukumar Swaminathan extern int			emlxs_dhc_auth_start(emlxs_port_t *port,
261291a2b48SSukumar Swaminathan 					emlxs_node_t *node, uint8_t *sbp,
262291a2b48SSukumar Swaminathan 					uint8_t *ubp);
263291a2b48SSukumar Swaminathan extern void			emlxs_dhc_init_sp(emlxs_port_t *port,
264291a2b48SSukumar Swaminathan 					uint32_t did, SERV_PARM *sp,
265291a2b48SSukumar Swaminathan 					char **msg);
266291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_verify_login(emlxs_port_t *port,
267291a2b48SSukumar Swaminathan 					uint32_t sid, SERV_PARM *sp);
268291a2b48SSukumar Swaminathan extern void			emlxs_dhc_status(emlxs_port_t *port,
269291a2b48SSukumar Swaminathan 					emlxs_node_t *ndlp, uint32_t reason,
270291a2b48SSukumar Swaminathan 					uint32_t explaination);
271291a2b48SSukumar Swaminathan extern void			emlxs_dhc_state(emlxs_port_t *port,
272291a2b48SSukumar Swaminathan 					emlxs_node_t *ndlp, uint32_t state,
273291a2b48SSukumar Swaminathan 					uint32_t reason,
274291a2b48SSukumar Swaminathan 					uint32_t explaination);
275291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_init_auth(emlxs_hba_t *hba,
276291a2b48SSukumar Swaminathan 					uint8_t *lwwpn, uint8_t *rwwpn);
277291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_cfg(emlxs_hba_t *hba,
278291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg);
279291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_key(emlxs_hba_t *hba,
280291a2b48SSukumar Swaminathan 					dfc_auth_password_t *dfc_auth_pwd);
281291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_add_auth_cfg(emlxs_hba_t *hba,
282291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg,
283291a2b48SSukumar Swaminathan 					dfc_password_t *dfc_pwd);
284291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_delete_auth_cfg(emlxs_hba_t *hba,
285291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg,
286291a2b48SSukumar Swaminathan 					dfc_password_t *dfc_pwd);
287291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_set_auth_key(emlxs_hba_t *hba,
288291a2b48SSukumar Swaminathan 					dfc_auth_password_t *dfc_pwd);
289291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_status(emlxs_hba_t *hba,
290291a2b48SSukumar Swaminathan 					dfc_auth_status_t *fcsp_status);
291291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_cfg_table(emlxs_hba_t *hba,
292291a2b48SSukumar Swaminathan 					dfc_fcsp_config_t *fcsp_cfg);
293291a2b48SSukumar Swaminathan extern uint32_t			emlxs_dhc_get_auth_key_table(emlxs_hba_t *hba,
294291a2b48SSukumar Swaminathan 					dfc_auth_password_t *auth_pwd);
295fcf3ce44SJohn Forte #endif	/* DHCHAP_SUPPORT */
296fcf3ce44SJohn Forte 
297fcf3ce44SJohn Forte /* Module emlxs_node.c External Routine Declarations */
298291a2b48SSukumar Swaminathan extern void			emlxs_node_timeout(emlxs_port_t *port,
299291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno);
300291a2b48SSukumar Swaminathan extern void			emlxs_node_open(emlxs_port_t *port,
301291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno);
302291a2b48SSukumar Swaminathan extern void			emlxs_node_close(emlxs_port_t *port,
303291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t ringno,
304291a2b48SSukumar Swaminathan 					int32_t timeout);
305291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_did(emlxs_port_t *port,
306291a2b48SSukumar Swaminathan 					uint32_t did);
307291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_rpi(emlxs_port_t *port,
308291a2b48SSukumar Swaminathan 					uint32_t rpi);
309291a2b48SSukumar Swaminathan extern void			emlxs_node_destroy_all(emlxs_port_t *port);
310291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_mac(emlxs_port_t *port,
311291a2b48SSukumar Swaminathan 					uint8_t *mac);
312291a2b48SSukumar Swaminathan extern void			emlxs_node_add(emlxs_port_t *port,
313291a2b48SSukumar Swaminathan 					NODELIST *ndlp);
314291a2b48SSukumar Swaminathan extern void			emlxs_node_rm(emlxs_port_t *port,
315291a2b48SSukumar Swaminathan 					NODELIST *ndlp);
316291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_wwpn(emlxs_port_t *port,
317291a2b48SSukumar Swaminathan 					uint8_t *wwpn);
318291a2b48SSukumar Swaminathan extern NODELIST			*emlxs_node_find_index(emlxs_port_t *port,
319291a2b48SSukumar Swaminathan 					uint32_t index, uint32_t nports_only);
320291a2b48SSukumar Swaminathan extern uint32_t			emlxs_nport_count(emlxs_port_t *port);
321fcf3ce44SJohn Forte 
322fcf3ce44SJohn Forte /* Module emlxs_els.c External Routine Declarations */
323291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_handle_event(emlxs_hba_t *hba,
32482527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *temp);
325291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_handle_unsol_req(emlxs_port_t *port,
32682527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq,
32782527734SSukumar Swaminathan 					MATCHMAP *mp, uint32_t size);
328291a2b48SSukumar Swaminathan extern uint32_t			emlxs_generate_rscn(emlxs_port_t *port,
329291a2b48SSukumar Swaminathan 					uint32_t d_id);
330291a2b48SSukumar Swaminathan extern int32_t			emlxs_ct_handle_event(emlxs_hba_t *hba,
33182527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *temp);
332291a2b48SSukumar Swaminathan extern int32_t			emlxs_ct_handle_unsol_req(emlxs_port_t *port,
33382527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq,
33482527734SSukumar Swaminathan 					MATCHMAP *mp, uint32_t size);
335291a2b48SSukumar Swaminathan extern int32_t			emlxs_els_reply(emlxs_port_t *port,
336291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, uint32_t type,
337291a2b48SSukumar Swaminathan 					uint32_t type2, uint32_t reason,
338291a2b48SSukumar Swaminathan 					uint32_t explain);
339291a2b48SSukumar Swaminathan extern void			emlxs_send_logo(emlxs_port_t *port,
340291a2b48SSukumar Swaminathan 					uint32_t d_id);
341bb63f56eSSukumar Swaminathan extern void			emlxs_reset_link_thread(emlxs_hba_t *hba,
342bb63f56eSSukumar Swaminathan 					void *arg1, void *arg2);
343291a2b48SSukumar Swaminathan extern uint32_t			emlxs_process_unsol_flogi(emlxs_port_t *port,
344291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, MATCHMAP *mp,
345291a2b48SSukumar Swaminathan 					uint32_t size, char *buffer);
346291a2b48SSukumar Swaminathan extern uint32_t			emlxs_process_unsol_plogi(emlxs_port_t *port,
347291a2b48SSukumar Swaminathan 					IOCBQ *iocbq, MATCHMAP *mp,
348291a2b48SSukumar Swaminathan 					uint32_t size, char *buffer);
349291a2b48SSukumar Swaminathan extern uint32_t			emlxs_ub_send_login_acc(emlxs_port_t *port,
350291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp);
351fcf3ce44SJohn Forte 
352fcf3ce44SJohn Forte #ifdef MENLO_SUPPORT
353291a2b48SSukumar Swaminathan extern int			emlxs_menlo_handle_event(emlxs_hba_t *hba,
35482527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq);
355291a2b48SSukumar Swaminathan #endif /* MENLO_SUPPORT */
356fcf3ce44SJohn Forte 
357fcf3ce44SJohn Forte /* Module emlxs_ip.c External Routine Declarations */
358291a2b48SSukumar Swaminathan extern int32_t			emlxs_ip_handle_event(emlxs_hba_t *hba,
35982527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *temp);
360291a2b48SSukumar Swaminathan extern int			emlxs_ip_handle_rcv_seq_list(emlxs_hba_t *hba,
36182527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *saveq);
362291a2b48SSukumar Swaminathan extern int			emlxs_ip_handle_unsol_req(emlxs_port_t *port,
36382527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq, MATCHMAP *mp,
364291a2b48SSukumar Swaminathan 					uint32_t size);
36582527734SSukumar Swaminathan extern int			emlxs_create_xri(emlxs_port_t *port,
36682527734SSukumar Swaminathan 					CHANNEL *cp, NODELIST *ndlp);
367291a2b48SSukumar Swaminathan extern int			emlxs_handle_create_xri(emlxs_hba_t *hba,
36882527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *temp);
369291a2b48SSukumar Swaminathan extern int			emlxs_handle_xri_aborted(emlxs_hba_t *hba,
37082527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *temp);
371fcf3ce44SJohn Forte 
372fcf3ce44SJohn Forte /* Module emlxs_mbox.c External Routine Declarations */
373291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_msi(emlxs_hba_t *hba,
37482527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t *intr_map,
375291a2b48SSukumar Swaminathan 					uint32_t intr_count);
376291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_msix(emlxs_hba_t *hba,
37782527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t *intr_map,
378291a2b48SSukumar Swaminathan 					uint32_t intr_count);
379291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_lnk_stat(emlxs_hba_t *hba,
38082527734SSukumar Swaminathan 					MAILBOXQ *mbq);
381291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_link(emlxs_hba_t *hba,
38282527734SSukumar Swaminathan 					MAILBOXQ *mbq);
383291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_ring(emlxs_hba_t *hba,
38482527734SSukumar Swaminathan 					int32_t ring, MAILBOXQ *mbq);
385291a2b48SSukumar Swaminathan extern void			emlxs_mb_init_link(emlxs_hba_t *hba,
38682527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t topology,
387291a2b48SSukumar Swaminathan 					uint32_t linkspeed);
388291a2b48SSukumar Swaminathan extern void			emlxs_mb_down_link(emlxs_hba_t *hba,
38982527734SSukumar Swaminathan 					MAILBOXQ *mbq);
390291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_la(emlxs_hba_t *hba,
39182527734SSukumar Swaminathan 					MAILBOXQ *mbq);
392291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_nv(emlxs_hba_t *hba,
39382527734SSukumar Swaminathan 					MAILBOXQ *mbq);
394291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_rev(emlxs_hba_t *hba,
39582527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t v3);
396291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_rpi(emlxs_hba_t *hba,
39782527734SSukumar Swaminathan 					uint32_t rpi, MAILBOXQ *mbq,
398291a2b48SSukumar Swaminathan 					uint32_t flg);
399291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_xri(emlxs_hba_t *hba,
40082527734SSukumar Swaminathan 					uint32_t xri, MAILBOXQ *mbq,
401291a2b48SSukumar Swaminathan 					uint32_t flg);
402291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_read_sparam(emlxs_hba_t *hba,
40382527734SSukumar Swaminathan 					MAILBOXQ *mbq);
404291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_reg_did(emlxs_port_t *port,
405291a2b48SSukumar Swaminathan 					uint32_t did, SERV_PARM *param,
406291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp, fc_unsol_buf_t *ubp,
407291a2b48SSukumar Swaminathan 					IOCBQ *iocbq);
408291a2b48SSukumar Swaminathan extern void			emlxs_disable_tc(emlxs_hba_t *hba,
40982527734SSukumar Swaminathan 					MAILBOXQ *mbq);
410291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_run_biu_diag(emlxs_hba_t *hba,
41182527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint64_t in,
41282527734SSukumar Swaminathan 					uint64_t out);
413291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_rpi(emlxs_port_t *port,
414291a2b48SSukumar Swaminathan 					uint32_t rpi, emlxs_buf_t *sbp,
415291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp, IOCBQ *iocbq);
416291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_did(emlxs_port_t *port,
417291a2b48SSukumar Swaminathan 					uint32_t did, emlxs_buf_t *sbp,
418291a2b48SSukumar Swaminathan 					fc_unsol_buf_t *ubp, IOCBQ *iocbq);
419291a2b48SSukumar Swaminathan extern void			emlxs_mb_dump_vpd(emlxs_hba_t *hba,
42082527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t offset);
42182527734SSukumar Swaminathan extern void			emlxs_mb_dump_fcoe(emlxs_hba_t *hba,
42282527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t offset);
423291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_farp(emlxs_hba_t *hba,
42482527734SSukumar Swaminathan 					MAILBOXQ *mbq);
425291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_config(emlxs_hba_t *hba,
42682527734SSukumar Swaminathan 					MAILBOXQ *mbq);
427291a2b48SSukumar Swaminathan extern void			emlxs_mb_put(emlxs_hba_t *hba,
428291a2b48SSukumar Swaminathan 					MAILBOXQ *mbq);
429291a2b48SSukumar Swaminathan extern MAILBOXQ			*emlxs_mb_get(emlxs_hba_t *hba);
430291a2b48SSukumar Swaminathan extern void			emlxs_mb_clear_la(emlxs_hba_t *hba,
43182527734SSukumar Swaminathan 					MAILBOXQ *mbq);
432291a2b48SSukumar Swaminathan extern void			emlxs_mb_set_var(emlxs_hba_t *hba,
43382527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t addr,
434291a2b48SSukumar Swaminathan 					uint32_t value);
435291a2b48SSukumar Swaminathan extern void			emlxs_mb_reset_ring(emlxs_hba_t *hba,
43682527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t ringno);
437291a2b48SSukumar Swaminathan extern char			*emlxs_mb_cmd_xlate(uint8_t command);
438291a2b48SSukumar Swaminathan extern void			emlxs_mb_read_status(emlxs_hba_t *hba,
43982527734SSukumar Swaminathan 					MAILBOXQ *mbq);
44082527734SSukumar Swaminathan extern int			emlxs_cmpl_init_vpi(void *arg1, MAILBOXQ *mbq);
44182527734SSukumar Swaminathan extern uint32_t			emlxs_mb_init_vpi(emlxs_port_t *port);
44282527734SSukumar Swaminathan extern int			emlxs_cmpl_reg_vpi(void *arg1, MAILBOXQ *mbq);
44382527734SSukumar Swaminathan extern uint32_t			emlxs_mb_reg_vpi(emlxs_port_t *port,
44482527734SSukumar Swaminathan 					emlxs_buf_t *sbp);
44582527734SSukumar Swaminathan extern int			emlxs_cmpl_unreg_vpi(void *arg1, MAILBOXQ *mbq);
446291a2b48SSukumar Swaminathan extern uint32_t			emlxs_mb_unreg_vpi(emlxs_port_t *port);
447291a2b48SSukumar Swaminathan extern void			emlxs_mb_fini(emlxs_hba_t *hba,
448291a2b48SSukumar Swaminathan 					MAILBOX *mb, uint32_t mbxStatus);
44982527734SSukumar Swaminathan extern void			emlxs_mb_flush(emlxs_hba_t *hba);
450291a2b48SSukumar Swaminathan extern void			emlxs_mb_heartbeat(emlxs_hba_t *hba,
45182527734SSukumar Swaminathan 					MAILBOXQ *mbq);
45282527734SSukumar Swaminathan extern void			emlxs_mb_request_features(emlxs_hba_t *hba,
45382527734SSukumar Swaminathan 					MAILBOXQ *mbq);
45482527734SSukumar Swaminathan extern int			emlxs_mb_resume_rpi(emlxs_hba_t *hba,
45582527734SSukumar Swaminathan 					emlxs_buf_t *sbp, uint16_t rpi);
45682527734SSukumar Swaminathan extern void			emlxs_mb_noop(emlxs_hba_t *hba,
45782527734SSukumar Swaminathan 					MAILBOXQ *mbq);
45882527734SSukumar Swaminathan extern int			emlxs_mbext_noop(emlxs_hba_t *hba,
45982527734SSukumar Swaminathan 					MAILBOXQ *mbq);
46082527734SSukumar Swaminathan extern void			emlxs_mb_resetport(emlxs_hba_t *hba,
46182527734SSukumar Swaminathan 					MAILBOXQ *mbq);
46282527734SSukumar Swaminathan extern void			emlxs_mb_eq_create(emlxs_hba_t *hba,
46382527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t num);
46482527734SSukumar Swaminathan extern void			emlxs_mb_cq_create(emlxs_hba_t *hba,
46582527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t num);
46682527734SSukumar Swaminathan extern void			emlxs_mb_wq_create(emlxs_hba_t *hba,
46782527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t num);
46882527734SSukumar Swaminathan extern void			emlxs_mb_rq_create(emlxs_hba_t *hba,
46982527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t num);
47082527734SSukumar Swaminathan extern void			emlxs_mb_mq_create(emlxs_hba_t *hba,
47182527734SSukumar Swaminathan 					MAILBOXQ *mbq);
47282527734SSukumar Swaminathan extern void			emlxs_mb_reg_fcfi(emlxs_hba_t *hba,
47382527734SSukumar Swaminathan 					MAILBOXQ *mbq, FCFIobj_t *fcfp);
47482527734SSukumar Swaminathan extern int			emlxs_mb_unreg_fcfi(emlxs_hba_t *hba,
47582527734SSukumar Swaminathan 					FCFIobj_t *fcfp);
47682527734SSukumar Swaminathan extern int			emlxs_mb_reg_vfi(emlxs_hba_t *hba,
47782527734SSukumar Swaminathan 					MAILBOXQ *mb, VFIobj_t *vfip,
47882527734SSukumar Swaminathan 					emlxs_port_t *vpip);
47982527734SSukumar Swaminathan extern int			emlxs_mb_unreg_vfi(emlxs_hba_t *hba,
48082527734SSukumar Swaminathan 					VFIobj_t *vfip);
48182527734SSukumar Swaminathan extern int			emlxs_mbext_read_fcf_table(emlxs_hba_t *hba,
48282527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t index);
48382527734SSukumar Swaminathan extern int			emlxs_mbext_add_fcf_table(emlxs_hba_t *hba,
48482527734SSukumar Swaminathan 					MAILBOXQ *mbq, uint32_t index);
485291a2b48SSukumar Swaminathan extern void			emlxs_mb_async_event(emlxs_hba_t *hba,
48682527734SSukumar Swaminathan 					MAILBOXQ *mbq);
487291a2b48SSukumar Swaminathan extern int32_t			emlxs_mb_check_sparm(emlxs_hba_t *hba,
488291a2b48SSukumar Swaminathan 					SERV_PARM *nsp);
48982527734SSukumar Swaminathan extern void			emlxs_cmpl_mbox(emlxs_hba_t *hba, MAILBOXQ *mq);
49082527734SSukumar Swaminathan extern void			emlxs_mb_dump(emlxs_hba_t *hba, MAILBOXQ *mbq,
491291a2b48SSukumar Swaminathan 					uint32_t offset, uint32_t words);
49282527734SSukumar Swaminathan extern void			emlxs_mb_retry(emlxs_hba_t *hba, MAILBOXQ *mbq);
493291a2b48SSukumar Swaminathan extern void			emlxs_mb_init(emlxs_hba_t *hba, MAILBOXQ *mbq,
494291a2b48SSukumar Swaminathan 					uint32_t flag, uint32_t tmo);
495291a2b48SSukumar Swaminathan extern void			emlxs_mb_config_hbq(emlxs_hba_t *hba,
49682527734SSukumar Swaminathan 					MAILBOXQ *mbq, int hbq_id);
497fcf3ce44SJohn Forte 
498fcf3ce44SJohn Forte /* Module emlxs_mem.c External Routine Declarations */
499291a2b48SSukumar Swaminathan extern MATCHMAP			*emlxs_mem_get_vaddr(emlxs_hba_t *hba,
500291a2b48SSukumar Swaminathan 					RING *rp, uint64_t mapbp);
501291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_get(emlxs_hba_t *hba,
50282527734SSukumar Swaminathan 					uint32_t seg_id, uint32_t priority);
503291a2b48SSukumar Swaminathan extern uint8_t			*emlxs_mem_put(emlxs_hba_t *hba,
50482527734SSukumar Swaminathan 					uint32_t seg_id, uint8_t *bp);
505291a2b48SSukumar Swaminathan extern int32_t			emlxs_mem_free_buffer(emlxs_hba_t *hba);
506291a2b48SSukumar Swaminathan extern int32_t			emlxs_mem_alloc_buffer(emlxs_hba_t *hba);
507291a2b48SSukumar Swaminathan extern void			emlxs_mem_map_vaddr(emlxs_hba_t *hba,
508291a2b48SSukumar Swaminathan 					RING *rp, MATCHMAP *mp, uint32_t *haddr,
509291a2b48SSukumar Swaminathan 					uint32_t *laddr);
51082527734SSukumar Swaminathan extern MATCHMAP			*emlxs_mem_buf_alloc(emlxs_hba_t *hba,
51182527734SSukumar Swaminathan 					uint32_t size);
51282527734SSukumar Swaminathan extern MATCHMAP			*emlxs_mem_buf_free(emlxs_hba_t *hba,
51382527734SSukumar Swaminathan 					MATCHMAP *mp);
514291a2b48SSukumar Swaminathan extern uint32_t			emlxs_hbq_alloc(emlxs_hba_t *hba,
515291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
51682527734SSukumar Swaminathan extern MEMSEG			*emlxs_mem_pool_alloc(emlxs_hba_t *hba,
51782527734SSukumar Swaminathan 				    MEMSEG *seg);
51882527734SSukumar Swaminathan extern void			emlxs_mem_pool_free(emlxs_hba_t *hba,
51982527734SSukumar Swaminathan 				    MEMSEG *seg);
52082527734SSukumar Swaminathan extern uint8_t 			*emlxs_mem_pool_get(emlxs_hba_t *hba,
52182527734SSukumar Swaminathan 				    MEMSEG *seg, uint32_t priority);
52282527734SSukumar Swaminathan extern MEMSEG			*emlxs_mem_pool_put(emlxs_hba_t *hba,
52382527734SSukumar Swaminathan 				    MEMSEG *seg, uint8_t *bp);
524fcf3ce44SJohn Forte 
525fcf3ce44SJohn Forte /* Module emlxs_hba.c  External Routine Declarations */
526291a2b48SSukumar Swaminathan extern void			emlxs_decode_firmware_rev(emlxs_hba_t *hba,
527291a2b48SSukumar Swaminathan 					emlxs_vpd_t *vp);
528291a2b48SSukumar Swaminathan extern uint32_t			emlxs_init_adapter_info(emlxs_hba_t *hba);
529291a2b48SSukumar Swaminathan extern uint32_t			emlxs_strtol(char *str, uint32_t base);
530291a2b48SSukumar Swaminathan extern uint64_t			emlxs_strtoll(char *str, uint32_t base);
531291a2b48SSukumar Swaminathan extern void			emlxs_decode_version(uint32_t version,
532291a2b48SSukumar Swaminathan 					char *buffer);
533291a2b48SSukumar Swaminathan extern char			*emlxs_ffstate_xlate(uint32_t new_state);
534291a2b48SSukumar Swaminathan extern char			*emlxs_ring_xlate(uint32_t ringno);
53582527734SSukumar Swaminathan extern void			emlxs_proc_channel(emlxs_hba_t *hba,
53682527734SSukumar Swaminathan 					CHANNEL *cp, void *arg2);
537291a2b48SSukumar Swaminathan extern void			emlxs_pcix_mxr_update(emlxs_hba_t *hba,
538291a2b48SSukumar Swaminathan 					uint32_t verbose);
539bb63f56eSSukumar Swaminathan extern void			emlxs_restart_thread(emlxs_hba_t *hba,
540bb63f56eSSukumar Swaminathan 					void *arg1, void *arg2);
541291a2b48SSukumar Swaminathan extern void			emlxs_fw_show(emlxs_hba_t *hba);
54282527734SSukumar Swaminathan extern void			emlxs_proc_channel_event(emlxs_hba_t *hba,
54382527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq);
544291a2b48SSukumar Swaminathan 
54582527734SSukumar Swaminathan #ifdef MODFW_SUPPORT
54682527734SSukumar Swaminathan extern void			emlxs_fw_load(emlxs_hba_t *hba,
54782527734SSukumar Swaminathan 					emlxs_firmware_t *fw);
54882527734SSukumar Swaminathan extern void			emlxs_fw_unload(emlxs_hba_t *hba,
54982527734SSukumar Swaminathan 					emlxs_firmware_t *fw);
55082527734SSukumar Swaminathan #endif /* MODFW_SUPPORT */
551fcf3ce44SJohn Forte 
552fcf3ce44SJohn Forte #ifdef MSI_SUPPORT
553291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_add(emlxs_hba_t *hba);
554291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_remove(emlxs_hba_t *hba);
555291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_init(emlxs_hba_t *hba, uint32_t max);
556291a2b48SSukumar Swaminathan extern int32_t			emlxs_msi_uninit(emlxs_hba_t *hba);
557fcf3ce44SJohn Forte #endif	/* MSI_SUPPORT */
558fcf3ce44SJohn Forte 
559291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_add(emlxs_hba_t *hba);
560291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_remove(emlxs_hba_t *hba);
561291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_init(emlxs_hba_t *hba, uint32_t max);
562291a2b48SSukumar Swaminathan extern int32_t			emlxs_intx_uninit(emlxs_hba_t *hba);
563291a2b48SSukumar Swaminathan 
56482527734SSukumar Swaminathan extern void			emlxs_parse_prog_types(emlxs_hba_t *hba,
56582527734SSukumar Swaminathan 					char *types);
56682527734SSukumar Swaminathan extern int32_t			emlxs_parse_vpd(emlxs_hba_t *hba, uint8_t *vpd,
56782527734SSukumar Swaminathan 					uint32_t size);
56882527734SSukumar Swaminathan extern int32_t			emlxs_parse_fcoe(emlxs_hba_t *hba, uint8_t *p,
56982527734SSukumar Swaminathan 					uint32_t size);
570291a2b48SSukumar Swaminathan 
57182527734SSukumar Swaminathan extern void			emlxs_decode_label(char *label, char *buffer,
57282527734SSukumar Swaminathan 					int bige);
57382527734SSukumar Swaminathan extern void			emlxs_build_prog_types(emlxs_hba_t *hba,
57482527734SSukumar Swaminathan 					char *prog_types);
57582527734SSukumar Swaminathan extern void			emlxs_process_link_speed(emlxs_hba_t *hba);
576291a2b48SSukumar Swaminathan 
57782527734SSukumar Swaminathan extern uint32_t			emlxs_iotag_flush(emlxs_hba_t *hba);
578291a2b48SSukumar Swaminathan 
57982527734SSukumar Swaminathan extern int			emlxs_pci_model_count;
58082527734SSukumar Swaminathan extern emlxs_model_t		emlxs_pci_model[];
581291a2b48SSukumar Swaminathan 
58282527734SSukumar Swaminathan extern int			emlxs_fw_count;
58382527734SSukumar Swaminathan extern emlxs_firmware_t		emlxs_fw_table[];
584291a2b48SSukumar Swaminathan 
585291a2b48SSukumar Swaminathan 
58682527734SSukumar Swaminathan /* Module emlxs_sli3.c  External Routine Declarations */
58782527734SSukumar Swaminathan extern emlxs_sli_api_t		emlxs_sli3_api;
588291a2b48SSukumar Swaminathan 
589291a2b48SSukumar Swaminathan extern int			emlxs_handle_rcv_seq(emlxs_hba_t *hba,
59082527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq);
591291a2b48SSukumar Swaminathan extern void			emlxs_update_HBQ_index(emlxs_hba_t *hba,
592291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
593291a2b48SSukumar Swaminathan extern void			emlxs_hbq_free_all(emlxs_hba_t *hba,
594291a2b48SSukumar Swaminathan 					uint32_t hbq_id);
59582527734SSukumar Swaminathan 
59682527734SSukumar Swaminathan /* Module emlxs_sli4.c  External Routine Declarations */
59782527734SSukumar Swaminathan extern int 			emlxs_sli4_unreg_all_rpi_by_port(
59882527734SSukumar Swaminathan 				    emlxs_port_t *port);
59982527734SSukumar Swaminathan extern emlxs_sli_api_t		emlxs_sli4_api;
60082527734SSukumar Swaminathan 
60182527734SSukumar Swaminathan extern FCFIobj_t		*emlxs_sli4_assign_fcfi(emlxs_hba_t *hba,
60282527734SSukumar Swaminathan 					FCF_RECORD_t *fcfrec);
60382527734SSukumar Swaminathan extern void			emlxs_data_dump(emlxs_hba_t *hba, char *str,
60482527734SSukumar Swaminathan 					uint32_t *data, int cnt, int err);
60582527734SSukumar Swaminathan extern void			emlxs_ue_dump(emlxs_hba_t *hba, char *str);
60682527734SSukumar Swaminathan 
60782527734SSukumar Swaminathan extern RPIobj_t 		*emlxs_sli4_find_rpi(emlxs_hba_t *hba,
60882527734SSukumar Swaminathan 					uint16_t rpi);
60982527734SSukumar Swaminathan extern XRIobj_t			*emlxs_sli4_find_xri(emlxs_hba_t *hba,
61082527734SSukumar Swaminathan 					uint16_t xri);
61182527734SSukumar Swaminathan 
61282527734SSukumar Swaminathan extern RPIobj_t 		*emlxs_sli4_alloc_rpi(emlxs_port_t *port);
61382527734SSukumar Swaminathan 
61482527734SSukumar Swaminathan extern void			emlxs_sli4_free_rpi(emlxs_hba_t *hba,
61582527734SSukumar Swaminathan 					RPIobj_t *xp);
61682527734SSukumar Swaminathan extern VFIobj_t			*emlxs_sli4_alloc_vfi(emlxs_hba_t *hba,
61782527734SSukumar Swaminathan 					FCFIobj_t *fp);
61882527734SSukumar Swaminathan extern void			emlxs_sli4_free_vfi(emlxs_hba_t *hba,
61982527734SSukumar Swaminathan 					VFIobj_t *xp);
62082527734SSukumar Swaminathan extern void			emlxs_sli4_free_fcfi(emlxs_hba_t *hba,
62182527734SSukumar Swaminathan 					FCFIobj_t *xp);
62282527734SSukumar Swaminathan extern void			emlxs_sli4_free_xri(emlxs_hba_t *hba,
62382527734SSukumar Swaminathan 					emlxs_buf_t *sbp, XRIobj_t *xp);
62482527734SSukumar Swaminathan extern FCFIobj_t		*emlxs_sli4_bind_fcfi(emlxs_hba_t *hba);
62582527734SSukumar Swaminathan 
62682527734SSukumar Swaminathan extern uint32_t			emlxs_sli4_unreserve_xri(emlxs_hba_t *hba,
62782527734SSukumar Swaminathan 					uint16_t xri);
628fcf3ce44SJohn Forte 
629fcf3ce44SJohn Forte /* Module emlxs_diag.c  External Routine Declarations */
630291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_post_run(emlxs_hba_t *hba);
631291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_biu_run(emlxs_hba_t *hba,
632291a2b48SSukumar Swaminathan 					uint32_t pattern);
633291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_pattern[256];
634291a2b48SSukumar Swaminathan extern uint32_t			emlxs_diag_echo_run(emlxs_port_t *port,
635291a2b48SSukumar Swaminathan 					uint32_t did, uint32_t pattern);
636fcf3ce44SJohn Forte 
637fcf3ce44SJohn Forte /* Module emlxs_download.c External Routine Declarations */
638291a2b48SSukumar Swaminathan extern int32_t			emlxs_fw_download(emlxs_hba_t *hba,
639291a2b48SSukumar Swaminathan 					caddr_t buffer, uint32_t len,
640291a2b48SSukumar Swaminathan 					uint32_t offline);
641291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_max_sram(emlxs_hba_t *hba,
642291a2b48SSukumar Swaminathan 					uint32_t *MaxRbusSize,
643291a2b48SSukumar Swaminathan 					uint32_t *MaxIbusSize);
644291a2b48SSukumar Swaminathan extern uint32_t			emlxs_get_load_list(emlxs_hba_t *hba,
645291a2b48SSukumar Swaminathan 					PROG_ID *load_list);
646291a2b48SSukumar Swaminathan extern uint32_t			emlxs_read_wakeup_parms(emlxs_hba_t *hba,
647291a2b48SSukumar Swaminathan 					PWAKE_UP_PARMS WakeUpParms,
648291a2b48SSukumar Swaminathan 					uint32_t verbose);
649291a2b48SSukumar Swaminathan extern int32_t			emlxs_cfl_download(emlxs_hba_t *hba,
650291a2b48SSukumar Swaminathan 					uint32_t region, caddr_t buffer,
651291a2b48SSukumar Swaminathan 					uint32_t len);
652291a2b48SSukumar Swaminathan 
653291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_disable(emlxs_hba_t *hba);
654291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_enable(emlxs_hba_t *hba);
655291a2b48SSukumar Swaminathan extern int32_t			emlxs_boot_code_state(emlxs_hba_t *hba);
656fcf3ce44SJohn Forte 
65782527734SSukumar Swaminathan extern int32_t			emlxs_sli4_read_fw_version(emlxs_hba_t *hba,
65882527734SSukumar Swaminathan 					emlxs_firmware_t *fw);
65982527734SSukumar Swaminathan 
660fcf3ce44SJohn Forte /* Module emlxs_fcp.c External Routine Declarations */
661291a2b48SSukumar Swaminathan extern int			emlxs_power_up(emlxs_hba_t *hba);
662291a2b48SSukumar Swaminathan extern int			emlxs_power_down(emlxs_hba_t *hba);
663291a2b48SSukumar Swaminathan extern int			emlxs_reset_link(emlxs_hba_t *hba,
66482527734SSukumar Swaminathan 					uint32_t linkup, uint32_t wait);
66582527734SSukumar Swaminathan extern emlxs_buf_t		*emlxs_unregister_pkt(CHANNEL *cp,
666291a2b48SSukumar Swaminathan 					uint16_t iotag, uint32_t forced);
66782527734SSukumar Swaminathan extern uint16_t			emlxs_register_pkt(CHANNEL *cp,
668291a2b48SSukumar Swaminathan 					emlxs_buf_t *sbp);
669291a2b48SSukumar Swaminathan 
670291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_abort_xri_cn(emlxs_port_t *port,
671291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t iotag,
67282527734SSukumar Swaminathan 					CHANNEL *cp, uint8_t class,
67382527734SSukumar Swaminathan 					int32_t flag);
674291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_close_xri_cn(emlxs_port_t *port,
675291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint16_t iotag,
67682527734SSukumar Swaminathan 					CHANNEL *cp);
677291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_abort_xri_cx(emlxs_port_t *port,
67882527734SSukumar Swaminathan 					NODELIST *ndlp, uint16_t xid,
67982527734SSukumar Swaminathan 					CHANNEL *cp, uint8_t class,
68082527734SSukumar Swaminathan 					int32_t flag);
681291a2b48SSukumar Swaminathan extern IOCBQ			*emlxs_create_close_xri_cx(emlxs_port_t *port,
68282527734SSukumar Swaminathan 					NODELIST *ndlp, uint16_t xid,
68382527734SSukumar Swaminathan 					CHANNEL *cp);
684bb63f56eSSukumar Swaminathan extern void			emlxs_abort_ct_exchange(emlxs_hba_t *hba,
685bb63f56eSSukumar Swaminathan 					emlxs_port_t *port, uint32_t rxid);
686fe199829SSukumar Swaminathan extern void			emlxs_abort_els_exchange(emlxs_hba_t *hba,
687fe199829SSukumar Swaminathan 					emlxs_port_t *port, uint32_t rxid);
688fe199829SSukumar Swaminathan extern void			emlxs_abort_fct_exchange(emlxs_hba_t *hba,
689fe199829SSukumar Swaminathan 					emlxs_port_t *port, uint32_t rxid);
69082527734SSukumar Swaminathan extern emlxs_buf_t		*emlxs_chipq_get(CHANNEL *cp, uint16_t iotag);
69182527734SSukumar Swaminathan extern void			emlxs_chipq_put(CHANNEL *cp, emlxs_buf_t *sbp);
692291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_node_flush(emlxs_port_t *port,
69382527734SSukumar Swaminathan 					CHANNEL *cp, NODELIST *ndlp,
694291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
695291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_lun_flush(emlxs_port_t *port,
696291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t lun,
697291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
698291a2b48SSukumar Swaminathan extern uint32_t			emlxs_chipq_node_check(emlxs_port_t *port,
69982527734SSukumar Swaminathan 					CHANNEL *cp, NODELIST *ndlp);
700291a2b48SSukumar Swaminathan 
70182527734SSukumar Swaminathan extern IOCBQ			*emlxs_tx_get(CHANNEL *cp, uint32_t lock);
702291a2b48SSukumar Swaminathan extern void			emlxs_tx_put(IOCBQ *iocbq, uint32_t lock);
70382527734SSukumar Swaminathan extern void			emlxs_tx_move(NODELIST *ndlp, CHANNEL *from,
70482527734SSukumar Swaminathan 					CHANNEL *to, uint32_t cmd,
70582527734SSukumar Swaminathan 					emlxs_buf_t *fpkt, uint32_t lock);
70682527734SSukumar Swaminathan 
707291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_node_check(emlxs_port_t *port,
70882527734SSukumar Swaminathan 					NODELIST *ndlp, CHANNEL *cp);
709291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_node_flush(emlxs_port_t *port,
71082527734SSukumar Swaminathan 					NODELIST *ndlp, CHANNEL *cp,
711291a2b48SSukumar Swaminathan 					uint32_t shutdown, emlxs_buf_t *fpkt);
712291a2b48SSukumar Swaminathan extern uint32_t			emlxs_tx_lun_flush(emlxs_port_t *port,
713291a2b48SSukumar Swaminathan 					NODELIST *ndlp, uint32_t lun,
714291a2b48SSukumar Swaminathan 					emlxs_buf_t *fpkt);
71582527734SSukumar Swaminathan extern uint32_t			emlxs_tx_channel_flush(emlxs_hba_t *hba,
71682527734SSukumar Swaminathan 					CHANNEL *cp, emlxs_buf_t *fpkt);
717291a2b48SSukumar Swaminathan 
718291a2b48SSukumar Swaminathan extern void			emlxs_linkdown(emlxs_hba_t *hba);
719291a2b48SSukumar Swaminathan extern void			emlxs_linkup(emlxs_hba_t *hba);
720291a2b48SSukumar Swaminathan extern void			emlxs_port_online(emlxs_port_t *port);
721291a2b48SSukumar Swaminathan extern int32_t			emlxs_port_offline(emlxs_port_t *port,
722291a2b48SSukumar Swaminathan 					uint32_t scope);
723291a2b48SSukumar Swaminathan extern void			emlxs_ffcleanup(emlxs_hba_t *hba);
724291a2b48SSukumar Swaminathan extern int32_t			emlxs_offline(emlxs_hba_t *hba);
725291a2b48SSukumar Swaminathan extern int32_t			emlxs_online(emlxs_hba_t *hba);
726291a2b48SSukumar Swaminathan extern int32_t			emlxs_post_buffer(emlxs_hba_t *hba,
727291a2b48SSukumar Swaminathan 					RING *rp, int16_t cnt);
728291a2b48SSukumar Swaminathan extern void			emlxs_ff_start(emlxs_hba_t *hba);
729291a2b48SSukumar Swaminathan extern void			emlxs_handle_fcp_event(emlxs_hba_t *hba,
73082527734SSukumar Swaminathan 					CHANNEL *rp, IOCBQ *temp);
731291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_abort(emlxs_hba_t *hba,
73282527734SSukumar Swaminathan 					CHANNEL *rp, IOCBQ *iocbq);
733fcf3ce44SJohn Forte 
734fcf3ce44SJohn Forte /* Module emlxs_thread.c External Routine Declarations */
735291a2b48SSukumar Swaminathan extern void			emlxs_taskq_destroy(emlxs_taskq_t *taskq);
736291a2b48SSukumar Swaminathan extern void			emlxs_taskq_create(emlxs_hba_t *hba,
737291a2b48SSukumar Swaminathan 					emlxs_taskq_t *taskq);
738291a2b48SSukumar Swaminathan extern uint32_t			emlxs_taskq_dispatch(emlxs_taskq_t *taskq,
739291a2b48SSukumar Swaminathan 					void (*func) (), void *arg);
740291a2b48SSukumar Swaminathan extern void			emlxs_thread_create(emlxs_hba_t *hba,
741291a2b48SSukumar Swaminathan 					emlxs_thread_t *ethread);
742291a2b48SSukumar Swaminathan extern void			emlxs_thread_destroy(emlxs_thread_t *ethread);
743291a2b48SSukumar Swaminathan extern void			emlxs_thread_trigger1(emlxs_thread_t *ethread,
744291a2b48SSukumar Swaminathan 					void (*func) ());
745291a2b48SSukumar Swaminathan extern void			emlxs_thread_trigger2(emlxs_thread_t *ethread,
74682527734SSukumar Swaminathan 					void (*func) (), CHANNEL *cp);
747bb63f56eSSukumar Swaminathan extern void			emlxs_thread_spawn(emlxs_hba_t *hba,
748bb63f56eSSukumar Swaminathan 					void (*func) (), void *arg1,
749bb63f56eSSukumar Swaminathan 					void *arg2);
750bb63f56eSSukumar Swaminathan extern void			emlxs_thread_spawn_create(emlxs_hba_t *hba);
751bb63f56eSSukumar Swaminathan extern void			emlxs_thread_spawn_destroy(emlxs_hba_t *hba);
752fcf3ce44SJohn Forte 
753fcf3ce44SJohn Forte /* Module emlxs_dfc.c External Routine Declarations */
754291a2b48SSukumar Swaminathan extern int32_t			emlxs_dfc_manage(emlxs_hba_t *hba, void *dfc,
755291a2b48SSukumar Swaminathan 					int32_t mode);
756291a2b48SSukumar Swaminathan extern int32_t			emlxs_dfc_handle_event(emlxs_hba_t *hba,
75782527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *temp);
758291a2b48SSukumar Swaminathan extern int			emlxs_dfc_handle_unsol_req(emlxs_port_t *port,
75982527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq,
76082527734SSukumar Swaminathan 					MATCHMAP *mp, uint32_t size);
761bb63f56eSSukumar Swaminathan extern void			emlxs_fcoe_attention_thread(emlxs_hba_t *hba,
762bb63f56eSSukumar Swaminathan 					void *arg1, void *arg2);
763291a2b48SSukumar Swaminathan extern uint32_t		emlxs_set_hba_mode(emlxs_hba_t *hba, uint32_t mode);
764291a2b48SSukumar Swaminathan extern uint32_t		emlxs_get_dump_region(emlxs_hba_t *hba, uint32_t region,
765291a2b48SSukumar Swaminathan 			    uint8_t *buffer, uint32_t *psize);
766291a2b48SSukumar Swaminathan extern int32_t		emlxs_send_menlo_cmd(emlxs_hba_t *hba, uint8_t *cmd_buf,
767291a2b48SSukumar Swaminathan 			    uint32_t cmd_size, uint8_t *rsp_buf,
768291a2b48SSukumar Swaminathan 			    uint32_t *rsp_size);
769fcf3ce44SJohn Forte 
770fcf3ce44SJohn Forte #ifdef SFCT_SUPPORT
771fcf3ce44SJohn Forte /* Module emlxs_fct.c External Routine Declarations */
772291a2b48SSukumar Swaminathan extern void			emlxs_fct_link_down(emlxs_port_t *port);
773291a2b48SSukumar Swaminathan extern void			emlxs_fct_link_up(emlxs_port_t *port);
774291a2b48SSukumar Swaminathan extern void			emlxs_fct_init(emlxs_hba_t *hba);
775291a2b48SSukumar Swaminathan extern void			emlxs_fct_detach(emlxs_hba_t *hba);
776291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_unsol_els(emlxs_port_t *port,
77782527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq, MATCHMAP *mp,
778291a2b48SSukumar Swaminathan 					uint32_t size);
779291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_unsol_req(emlxs_port_t *port,
78082527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq, MATCHMAP *mp,
781291a2b48SSukumar Swaminathan 					uint32_t size);
782291a2b48SSukumar Swaminathan extern int			emlxs_fct_handle_fcp_event(emlxs_hba_t *hba,
78382527734SSukumar Swaminathan 					CHANNEL *cp, IOCBQ *iocbq);
784291a2b48SSukumar Swaminathan extern void			emlxs_fct_bind_port(emlxs_port_t *port);
785291a2b48SSukumar Swaminathan extern void			emlxs_fct_unbind_port(emlxs_port_t *port);
786291a2b48SSukumar Swaminathan extern void			emlxs_fct_unsol_callback(emlxs_port_t *port,
787291a2b48SSukumar Swaminathan 					fct_cmd_t *fct_cmd);
788291a2b48SSukumar Swaminathan extern void			emlxs_fct_attach(emlxs_hba_t *hba);
789291a2b48SSukumar Swaminathan extern int			emlxs_fct_port_shutdown(emlxs_port_t *port);
790291a2b48SSukumar Swaminathan extern int			emlxs_fct_port_initialize(emlxs_port_t *port);
791fcf3ce44SJohn Forte 
792fcf3ce44SJohn Forte #ifdef MODSYM_SUPPORT
793e51761e0SSukumar Swaminathan extern int			emlxs_fct_modopen();
794291a2b48SSukumar Swaminathan extern void			emlxs_fct_modclose();
795291a2b48SSukumar Swaminathan #endif /* MODSYM_SUPPORT */
796291a2b48SSukumar Swaminathan 
797291a2b48SSukumar Swaminathan #ifdef FCT_IO_TRACE
798291a2b48SSukumar Swaminathan extern void			emlxs_fct_io_trace(emlxs_port_t *,
799291a2b48SSukumar Swaminathan 					fct_cmd_t *, uint32_t);
800291a2b48SSukumar Swaminathan #endif /* FCT_IO_TRACE */
801291a2b48SSukumar Swaminathan #endif /* SFCT_SUPPORT */
802291a2b48SSukumar Swaminathan 
803291a2b48SSukumar Swaminathan #ifdef DUMP_SUPPORT
804291a2b48SSukumar Swaminathan /* Module emlxs_dump.c External Routine Declarations */
805291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_drv_event(emlxs_hba_t *hba);
806291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_user_event(emlxs_hba_t *hba);
807291a2b48SSukumar Swaminathan extern uint32_t		emlxs_dump_temp_event(emlxs_hba_t *hba,
808291a2b48SSukumar Swaminathan 				uint32_t tempType, uint32_t temp);
809bb63f56eSSukumar Swaminathan extern void		emlxs_dump_drv_thread(emlxs_hba_t *hba,
810bb63f56eSSukumar Swaminathan 				void *arg1, void *arg2);
811bb63f56eSSukumar Swaminathan extern void		emlxs_dump_user_thread(emlxs_hba_t *hba,
812bb63f56eSSukumar Swaminathan 				void *arg1, void *arg2);
813bb63f56eSSukumar Swaminathan extern void		emlxs_dump_temp_thread(emlxs_hba_t *hba,
814bb63f56eSSukumar Swaminathan 				void *arg1, void *arg2);
815291a2b48SSukumar Swaminathan extern uint32_t		emlxs_ftell(emlxs_file_t *fp);
816291a2b48SSukumar Swaminathan extern uint32_t		emlxs_get_dump(emlxs_hba_t *hba, uint8_t *buffer,
817291a2b48SSukumar Swaminathan 			    uint32_t *buflen);
818291a2b48SSukumar Swaminathan extern void		emlxs_dump_wait(emlxs_hba_t *hba);
819291a2b48SSukumar Swaminathan extern void		emlxs_dump(emlxs_hba_t *hba, uint32_t type,
820291a2b48SSukumar Swaminathan 			    uint32_t temp_type, uint32_t temp);
821291a2b48SSukumar Swaminathan 
82282527734SSukumar Swaminathan extern emlxs_file_t	*emlxs_fopen(emlxs_hba_t *hba, uint32_t file_type);
82382527734SSukumar Swaminathan extern void		emlxs_fflush(emlxs_file_t *fp);
82482527734SSukumar Swaminathan extern uint32_t		emlxs_fclose(emlxs_file_t *fp);
82582527734SSukumar Swaminathan extern uint32_t		emlxs_dump_word_dmpfile(emlxs_file_t *fpDmpFile,
82682527734SSukumar Swaminathan 				uint8_t *pBuffer, uint32_t bufferLen,
82782527734SSukumar Swaminathan 				int fSwap);
828291a2b48SSukumar Swaminathan #endif /* DUMP_SUPPORT */
829fcf3ce44SJohn Forte 
830fcf3ce44SJohn Forte #ifdef	__cplusplus
831fcf3ce44SJohn Forte }
832fcf3ce44SJohn Forte #endif
833fcf3ce44SJohn Forte 
834fcf3ce44SJohn Forte #endif	/* _EMLXS_EXTERN_H */
835