Home | History | Annotate | Line # | Download | only in ic
isp_library.h revision 1.2
      1  1.2  mjacob /* $Id: isp_library.h,v 1.2 2008/03/11 05:33:30 mjacob Exp $ */
      2  1.2  mjacob /*-
      3  1.2  mjacob  *  Copyright (c) 1997-2008 by Matthew Jacob
      4  1.2  mjacob  *  All rights reserved.
      5  1.2  mjacob  *
      6  1.2  mjacob  *  Redistribution and use in source and binary forms, with or without
      7  1.2  mjacob  *  modification, are permitted provided that the following conditions
      8  1.2  mjacob  *  are met:
      9  1.2  mjacob  *
     10  1.2  mjacob  *  1. Redistributions of source code must retain the above copyright
     11  1.2  mjacob  *     notice, this list of conditions and the following disclaimer.
     12  1.2  mjacob  *  2. Redistributions in binary form must reproduce the above copyright
     13  1.2  mjacob  *     notice, this list of conditions and the following disclaimer in the
     14  1.2  mjacob  *     documentation and/or other materials provided with the distribution.
     15  1.2  mjacob  *
     16  1.2  mjacob  *  THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     17  1.2  mjacob  *  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     18  1.2  mjacob  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     19  1.2  mjacob  *  ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
     20  1.2  mjacob  *  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21  1.2  mjacob  *  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     22  1.2  mjacob  *  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     23  1.2  mjacob  *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     24  1.2  mjacob  *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     25  1.2  mjacob  *  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     26  1.2  mjacob  *  SUCH DAMAGE.
     27  1.2  mjacob  *
     28  1.2  mjacob  *
     29  1.2  mjacob  *  Matthew Jacob
     30  1.2  mjacob  *  Feral Software
     31  1.2  mjacob  *  421 Laurel Avenue
     32  1.2  mjacob  *  Menlo Park, CA 94025
     33  1.2  mjacob  *  USA
     34  1.2  mjacob  *
     35  1.2  mjacob  *  gplbsd at feral com
     36  1.1  mjacob  */
     37  1.2  mjacob #ifndef _ISP_LIBRARY_H
     38  1.2  mjacob #define _ISP_LIBRARY_H
     39  1.2  mjacob extern const char *isp_class3_roles[4];
     40  1.2  mjacob 
     41  1.2  mjacob /* XXXXXX BARF - CLEAN UP THIS MESS XXXXXXXX*/
     42  1.2  mjacob int isp_save_xs(ispsoftc_t *, XS_T *, uint32_t *);
     43  1.2  mjacob XS_T * isp_find_xs(ispsoftc_t *, uint32_t);
     44  1.2  mjacob uint32_t isp_find_handle(ispsoftc_t *, XS_T *);
     45  1.2  mjacob uint32_t isp_handle_index(uint32_t);
     46  1.2  mjacob void isp_destroy_handle(ispsoftc_t *, uint32_t);
     47  1.2  mjacob int isp_getrqentry(ispsoftc_t *, uint32_t *, uint32_t *, void **);
     48  1.2  mjacob void isp_print_qentry (ispsoftc_t *, char *, int, void *);
     49  1.2  mjacob void isp_print_bytes(ispsoftc_t *, const char *, int, void *);
     50  1.2  mjacob int isp_fc_runstate(ispsoftc_t *, int, int);
     51  1.2  mjacob void isp_dump_portdb(ispsoftc_t *, int);
     52  1.2  mjacob void isp_shutdown(ispsoftc_t *);
     53  1.2  mjacob void isp_put_hdr(ispsoftc_t *, isphdr_t *, isphdr_t *);
     54  1.2  mjacob void isp_get_hdr(ispsoftc_t *, isphdr_t *, isphdr_t *);
     55  1.2  mjacob int isp_get_response_type(ispsoftc_t *, isphdr_t *);
     56  1.2  mjacob 
     57  1.2  mjacob void isp_put_request(ispsoftc_t *, ispreq_t *, ispreq_t *);
     58  1.2  mjacob void isp_put_marker(ispsoftc_t *, isp_marker_t *, isp_marker_t *);
     59  1.2  mjacob void isp_put_marker_24xx(ispsoftc_t *, isp_marker_24xx_t *, isp_marker_24xx_t *);
     60  1.2  mjacob void isp_put_request_t2(ispsoftc_t *, ispreqt2_t *, ispreqt2_t *);
     61  1.2  mjacob void isp_put_request_t2e(ispsoftc_t *, ispreqt2e_t *, ispreqt2e_t *);
     62  1.2  mjacob void isp_put_request_t3(ispsoftc_t *, ispreqt3_t *, ispreqt3_t *);
     63  1.2  mjacob void isp_put_request_t3e(ispsoftc_t *, ispreqt3e_t *, ispreqt3e_t *);
     64  1.2  mjacob void isp_put_extended_request(ispsoftc_t *, ispextreq_t *, ispextreq_t *);
     65  1.2  mjacob void isp_put_request_t7(ispsoftc_t *, ispreqt7_t *, ispreqt7_t *);
     66  1.2  mjacob void isp_put_24xx_tmf(ispsoftc_t *, isp24xx_tmf_t *, isp24xx_tmf_t *);
     67  1.2  mjacob void isp_put_24xx_abrt(ispsoftc_t *, isp24xx_abrt_t *, isp24xx_abrt_t *);
     68  1.2  mjacob void isp_put_cont_req(ispsoftc_t *, ispcontreq_t *, ispcontreq_t *);
     69  1.2  mjacob void isp_put_cont64_req(ispsoftc_t *, ispcontreq64_t *, ispcontreq64_t *);
     70  1.2  mjacob void isp_get_response(ispsoftc_t *, ispstatusreq_t *, ispstatusreq_t *);
     71  1.2  mjacob void isp_get_24xx_response(ispsoftc_t *, isp24xx_statusreq_t *, isp24xx_statusreq_t *);
     72  1.2  mjacob void isp_get_24xx_abrt(ispsoftc_t *, isp24xx_abrt_t *, isp24xx_abrt_t *);
     73  1.2  mjacob void isp_get_rio2(ispsoftc_t *, isp_rio2_t *, isp_rio2_t *);
     74  1.2  mjacob void isp_put_icb(ispsoftc_t *, isp_icb_t *, isp_icb_t *);
     75  1.2  mjacob void isp_put_icb_2400(ispsoftc_t *, isp_icb_2400_t *, isp_icb_2400_t *);
     76  1.2  mjacob void isp_put_icb_2400_vpinfo(ispsoftc_t *, isp_icb_2400_vpinfo_t *, isp_icb_2400_vpinfo_t *);
     77  1.2  mjacob void isp_put_vp_port_info(ispsoftc_t *, vp_port_info_t *, vp_port_info_t *);
     78  1.2  mjacob void isp_get_vp_port_info(ispsoftc_t *, vp_port_info_t *, vp_port_info_t *);
     79  1.2  mjacob void isp_put_vp_ctrl_info(ispsoftc_t *, vp_ctrl_info_t *, vp_ctrl_info_t *);
     80  1.2  mjacob void isp_get_vp_ctrl_info(ispsoftc_t *, vp_ctrl_info_t *, vp_ctrl_info_t *);
     81  1.2  mjacob void isp_put_vp_modify(ispsoftc_t *, vp_modify_t *, vp_modify_t *);
     82  1.2  mjacob void isp_get_vp_modify(ispsoftc_t *, vp_modify_t *, vp_modify_t *);
     83  1.2  mjacob void isp_get_pdb_21xx(ispsoftc_t *, isp_pdb_21xx_t *, isp_pdb_21xx_t *);
     84  1.2  mjacob void isp_get_pdb_24xx(ispsoftc_t *, isp_pdb_24xx_t *, isp_pdb_24xx_t *);
     85  1.2  mjacob void isp_get_ridacq(ispsoftc_t *, isp_ridacq_t *, isp_ridacq_t *);
     86  1.2  mjacob void isp_get_plogx(ispsoftc_t *, isp_plogx_t *, isp_plogx_t *);
     87  1.2  mjacob void isp_put_plogx(ispsoftc_t *, isp_plogx_t *, isp_plogx_t *);
     88  1.2  mjacob void isp_get_ct_pt(ispsoftc_t *isp, isp_ct_pt_t *, isp_ct_pt_t *);
     89  1.2  mjacob void isp_get_ms(ispsoftc_t *isp, isp_ms_t *, isp_ms_t *);
     90  1.2  mjacob void isp_put_ct_pt(ispsoftc_t *isp, isp_ct_pt_t *, isp_ct_pt_t *);
     91  1.2  mjacob void isp_put_ms(ispsoftc_t *isp, isp_ms_t *, isp_ms_t *);
     92  1.2  mjacob void isp_put_sns_request(ispsoftc_t *, sns_screq_t *, sns_screq_t *);
     93  1.2  mjacob void isp_put_gid_ft_request(ispsoftc_t *, sns_gid_ft_req_t *, sns_gid_ft_req_t *);
     94  1.2  mjacob void isp_put_gxn_id_request(ispsoftc_t *, sns_gxn_id_req_t *, sns_gxn_id_req_t *);
     95  1.2  mjacob void isp_get_sns_response(ispsoftc_t *, sns_scrsp_t *, sns_scrsp_t *, int);
     96  1.2  mjacob void isp_get_gid_ft_response(ispsoftc_t *, sns_gid_ft_rsp_t *, sns_gid_ft_rsp_t *, int);
     97  1.2  mjacob void isp_get_gxn_id_response(ispsoftc_t *, sns_gxn_id_rsp_t *, sns_gxn_id_rsp_t *);
     98  1.2  mjacob void isp_get_gff_id_response(ispsoftc_t *, sns_gff_id_rsp_t *, sns_gff_id_rsp_t *);
     99  1.2  mjacob void isp_get_ga_nxt_response(ispsoftc_t *, sns_ga_nxt_rsp_t *, sns_ga_nxt_rsp_t *);
    100  1.2  mjacob void isp_get_els(ispsoftc_t *, els_t *, els_t *);
    101  1.2  mjacob void isp_put_els(ispsoftc_t *, els_t *, els_t *);
    102  1.2  mjacob void isp_get_fc_hdr(ispsoftc_t *, fc_hdr_t *, fc_hdr_t *);
    103  1.2  mjacob void isp_get_fcp_cmnd_iu(ispsoftc_t *, fcp_cmnd_iu_t *, fcp_cmnd_iu_t *);
    104  1.2  mjacob void isp_put_rft_id(ispsoftc_t *, rft_id_t *, rft_id_t *);
    105  1.2  mjacob void isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *);
    106  1.2  mjacob void isp_put_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *);
    107  1.1  mjacob 
    108  1.2  mjacob #define ISP_HANDLE_MASK  0x7fff
    109  1.1  mjacob 
    110  1.2  mjacob #ifdef ISP_TARGET_MODE
    111  1.2  mjacob #if defined(__NetBSD__) || defined(__OpenBSD__)
    112  1.1  mjacob #include <dev/ic/isp_target.h>
    113  1.2  mjacob #elif  defined(__FreeBSD__)
    114  1.1  mjacob #include <dev/isp/isp_target.h>
    115  1.1  mjacob #else
    116  1.1  mjacob #include "isp_target.h"
    117  1.1  mjacob #endif
    118  1.1  mjacob 
    119  1.2  mjacob #define IS_TARGET_HANDLE(x)     ((x) & 0x8000)
    120  1.1  mjacob 
    121  1.2  mjacob int isp_save_xs_tgt(ispsoftc_t *, void *, uint32_t *);
    122  1.2  mjacob void *isp_find_xs_tgt(ispsoftc_t *, uint32_t);
    123  1.2  mjacob uint32_t isp_find_tgt_handle(ispsoftc_t *, void *);
    124  1.2  mjacob void isp_destroy_tgt_handle(ispsoftc_t *, uint32_t);
    125  1.2  mjacob 
    126  1.2  mjacob void isp_put_atio(ispsoftc_t *, at_entry_t *, at_entry_t *);
    127  1.2  mjacob void isp_get_atio(ispsoftc_t *, at_entry_t *, at_entry_t *);
    128  1.2  mjacob void isp_put_atio2(ispsoftc_t *, at2_entry_t *, at2_entry_t *);
    129  1.2  mjacob void isp_put_atio2e(ispsoftc_t *, at2e_entry_t *, at2e_entry_t *);
    130  1.2  mjacob void isp_get_atio2(ispsoftc_t *, at2_entry_t *, at2_entry_t *);
    131  1.2  mjacob void isp_get_atio2e(ispsoftc_t *, at2e_entry_t *, at2e_entry_t *);
    132  1.2  mjacob void isp_get_atio7(ispsoftc_t *isp, at7_entry_t *, at7_entry_t *);
    133  1.2  mjacob void isp_put_ctio(ispsoftc_t *, ct_entry_t *, ct_entry_t *);
    134  1.2  mjacob void isp_get_ctio(ispsoftc_t *, ct_entry_t *, ct_entry_t *);
    135  1.2  mjacob void isp_put_ctio2(ispsoftc_t *, ct2_entry_t *, ct2_entry_t *);
    136  1.2  mjacob void isp_put_ctio2e(ispsoftc_t *, ct2e_entry_t *, ct2e_entry_t *);
    137  1.2  mjacob void isp_put_ctio7(ispsoftc_t *, ct7_entry_t *, ct7_entry_t *);
    138  1.2  mjacob void isp_get_ctio2(ispsoftc_t *, ct2_entry_t *, ct2_entry_t *);
    139  1.2  mjacob void isp_get_ctio2e(ispsoftc_t *, ct2e_entry_t *, ct2e_entry_t *);
    140  1.2  mjacob void isp_get_ctio7(ispsoftc_t *, ct7_entry_t *, ct7_entry_t *);
    141  1.2  mjacob void isp_put_enable_lun(ispsoftc_t *, lun_entry_t *, lun_entry_t *);
    142  1.2  mjacob void isp_get_enable_lun(ispsoftc_t *, lun_entry_t *, lun_entry_t *);
    143  1.2  mjacob void isp_put_notify(ispsoftc_t *, in_entry_t *, in_entry_t *);
    144  1.2  mjacob void isp_get_notify(ispsoftc_t *, in_entry_t *, in_entry_t *);
    145  1.2  mjacob void isp_put_notify_fc(ispsoftc_t *, in_fcentry_t *, in_fcentry_t *);
    146  1.2  mjacob void isp_put_notify_fc_e(ispsoftc_t *, in_fcentry_e_t *, in_fcentry_e_t *);
    147  1.2  mjacob void isp_put_notify_24xx(ispsoftc_t *, in_fcentry_24xx_t *, in_fcentry_24xx_t *);
    148  1.2  mjacob void isp_get_notify_fc(ispsoftc_t *, in_fcentry_t *, in_fcentry_t *);
    149  1.2  mjacob void isp_get_notify_fc_e(ispsoftc_t *, in_fcentry_e_t *, in_fcentry_e_t *);
    150  1.2  mjacob void isp_get_notify_24xx(ispsoftc_t *, in_fcentry_24xx_t *, in_fcentry_24xx_t *);
    151  1.2  mjacob void isp_put_notify_ack(ispsoftc_t *, na_entry_t *, na_entry_t *);
    152  1.2  mjacob void isp_get_notify_ack(ispsoftc_t *, na_entry_t *, na_entry_t *);
    153  1.2  mjacob void isp_put_notify_24xx_ack(ispsoftc_t *, na_fcentry_24xx_t *, na_fcentry_24xx_t *);
    154  1.2  mjacob void isp_put_notify_ack_fc(ispsoftc_t *, na_fcentry_t *, na_fcentry_t *);
    155  1.2  mjacob void isp_put_notify_ack_fc_e(ispsoftc_t *, na_fcentry_e_t *, na_fcentry_e_t *);
    156  1.2  mjacob void isp_put_notify_ack_24xx(ispsoftc_t *, na_fcentry_24xx_t *, na_fcentry_24xx_t *);
    157  1.2  mjacob void isp_get_notify_ack_fc(ispsoftc_t *, na_fcentry_t *, na_fcentry_t *);
    158  1.2  mjacob void isp_get_notify_ack_fc_e(ispsoftc_t *, na_fcentry_e_t *, na_fcentry_e_t *);
    159  1.2  mjacob void isp_get_notify_ack_24xx(ispsoftc_t *, na_fcentry_24xx_t *, na_fcentry_24xx_t *);
    160  1.2  mjacob void isp_get_abts(ispsoftc_t *, abts_t *, abts_t *);
    161  1.2  mjacob void isp_put_abts_rsp(ispsoftc_t *, abts_rsp_t *, abts_rsp_t *);
    162  1.2  mjacob void isp_get_abts_rsp(ispsoftc_t *, abts_rsp_t *, abts_rsp_t *);
    163  1.2  mjacob #endif /* ISP_TARGET_MODE */
    164  1.2  mjacob #endif /* _ISP_LIBRARY_H */
    165