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