📄 isp_inline.h
字号:
ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]); ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]); ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen); ISP_IOXPUT_16(isp, src->snscb_res1, &dst->snscb_res1); ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd); ISP_IOXPUT_16(isp, src->snscb_mword_div_2, &dst->snscb_mword_div_2); ISP_IOXPUT_32(isp, src->snscb_res3, &dst->snscb_res3); ISP_IOXPUT_16(isp, src->snscb_fc4_type, &dst->snscb_fc4_type);}static INLINE voidisp_put_gxn_id_request(struct ispsoftc *isp, sns_gxn_id_req_t *src, sns_gxn_id_req_t *dst){ ISP_IOXPUT_16(isp, src->snscb_rblen, &dst->snscb_rblen); ISP_IOXPUT_16(isp, src->snscb_res0, &dst->snscb_res0); ISP_IOXPUT_16(isp, src->snscb_addr[0], &dst->snscb_addr[0]); ISP_IOXPUT_16(isp, src->snscb_addr[1], &dst->snscb_addr[1]); ISP_IOXPUT_16(isp, src->snscb_addr[2], &dst->snscb_addr[2]); ISP_IOXPUT_16(isp, src->snscb_addr[3], &dst->snscb_addr[3]); ISP_IOXPUT_16(isp, src->snscb_sblen, &dst->snscb_sblen); ISP_IOXPUT_16(isp, src->snscb_res1, &dst->snscb_res1); ISP_IOXPUT_16(isp, src->snscb_cmd, &dst->snscb_cmd); ISP_IOXPUT_16(isp, src->snscb_res2, &dst->snscb_res2); ISP_IOXPUT_32(isp, src->snscb_res3, &dst->snscb_res3); ISP_IOXPUT_32(isp, src->snscb_portid, &dst->snscb_portid);}/* * Generic SNS response - not particularly useful since the per-command data * isn't always 16 bit words. */static INLINE voidisp_get_sns_response(struct ispsoftc *isp, sns_scrsp_t *src, sns_scrsp_t *dst, int nwords){ int i; isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type); for (i = 0; i < 3; i++) { ISP_IOXGET_8(isp, &src->snscb_port_id[i], dst->snscb_port_id[i]); } for (i = 0; i < 8; i++) { ISP_IOXGET_8(isp, &src->snscb_portname[i], dst->snscb_portname[i]); } for (i = 0; i < nwords; i++) { ISP_IOXGET_16(isp, &src->snscb_data[i], dst->snscb_data[i]); }}static INLINE voidisp_get_gid_ft_response(struct ispsoftc *isp, sns_gid_ft_rsp_t *src, sns_gid_ft_rsp_t *dst, int nwords){ int i; isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); for (i = 0; i < nwords; i++) { int j; ISP_IOXGET_8(isp, &src->snscb_ports[i].control, dst->snscb_ports[i].control); for (j = 0; j < 3; j++) { ISP_IOXGET_8(isp, &src->snscb_ports[i].portid[j], dst->snscb_ports[i].portid[j]); } if (dst->snscb_ports[i].control & 0x80) { break; } }}static INLINE voidisp_get_gxn_id_response(struct ispsoftc *isp, sns_gxn_id_rsp_t *src, sns_gxn_id_rsp_t *dst){ int i; isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); for (i = 0; i < 8; i++) ISP_IOXGET_8(isp, &src->snscb_wwn[i], dst->snscb_wwn[i]);}static INLINE voidisp_get_ga_nxt_response(struct ispsoftc *isp, sns_ga_nxt_rsp_t *src, sns_ga_nxt_rsp_t *dst){ int i; isp_get_ct_hdr(isp, &src->snscb_cthdr, &dst->snscb_cthdr); ISP_IOXGET_8(isp, &src->snscb_port_type, dst->snscb_port_type); for (i = 0; i < 3; i++) { ISP_IOXGET_8(isp, &src->snscb_port_id[i], dst->snscb_port_id[i]); } for (i = 0; i < 8; i++) { ISP_IOXGET_8(isp, &src->snscb_portname[i], dst->snscb_portname[i]); } ISP_IOXGET_8(isp, &src->snscb_pnlen, dst->snscb_pnlen); for (i = 0; i < 255; i++) { ISP_IOXGET_8(isp, &src->snscb_pname[i], dst->snscb_pname[i]); } for (i = 0; i < 8; i++) { ISP_IOXGET_8(isp, &src->snscb_nodename[i], dst->snscb_nodename[i]); } ISP_IOXGET_8(isp, &src->snscb_nnlen, dst->snscb_nnlen); for (i = 0; i < 255; i++) { ISP_IOXGET_8(isp, &src->snscb_nname[i], dst->snscb_nname[i]); } for (i = 0; i < 8; i++) { ISP_IOXGET_8(isp, &src->snscb_ipassoc[i], dst->snscb_ipassoc[i]); } for (i = 0; i < 16; i++) { ISP_IOXGET_8(isp, &src->snscb_ipaddr[i], dst->snscb_ipaddr[i]); } for (i = 0; i < 4; i++) { ISP_IOXGET_8(isp, &src->snscb_svc_class[i], dst->snscb_svc_class[i]); } for (i = 0; i < 32; i++) { ISP_IOXGET_8(isp, &src->snscb_fc4_types[i], dst->snscb_fc4_types[i]); } for (i = 0; i < 8; i++) { ISP_IOXGET_8(isp, &src->snscb_fpname[i], dst->snscb_fpname[i]); } ISP_IOXGET_8(isp, &src->snscb_reserved, dst->snscb_reserved); for (i = 0; i < 3; i++) { ISP_IOXGET_8(isp, &src->snscb_hardaddr[i], dst->snscb_hardaddr[i]); }}#ifdef ISP_TARGET_MODEstatic INLINE voidisp_put_atio(struct ispsoftc *isp, at_entry_t *atsrc, at_entry_t *atdst){ int i; isp_copy_out_hdr(isp, &atsrc->at_header, &atdst->at_header); ISP_IOXPUT_16(isp, atsrc->at_reserved, &atdst->at_reserved); ISP_IOXPUT_16(isp, atsrc->at_handle, &atdst->at_handle); if (ISP_IS_SBUS(isp)) { ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_iid); ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_lun); ISP_IOXPUT_8(isp, atsrc->at_cdblen, &atdst->at_tgt); ISP_IOXPUT_8(isp, atsrc->at_tgt, &atdst->at_cdblen); ISP_IOXPUT_8(isp, atsrc->at_status, &atdst->at_scsi_status); ISP_IOXPUT_8(isp, atsrc->at_scsi_status, &atdst->at_status); ISP_IOXPUT_8(isp, atsrc->at_tag_val, &atdst->at_tag_type); ISP_IOXPUT_8(isp, atsrc->at_tag_type, &atdst->at_tag_val); } else { ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_lun); ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_iid); ISP_IOXPUT_8(isp, atsrc->at_cdblen, &atdst->at_cdblen); ISP_IOXPUT_8(isp, atsrc->at_tgt, &atdst->at_tgt); ISP_IOXPUT_8(isp, atsrc->at_status, &atdst->at_status); ISP_IOXPUT_8(isp, atsrc->at_scsi_status, &atdst->at_scsi_status); ISP_IOXPUT_8(isp, atsrc->at_tag_val, &atdst->at_tag_val); ISP_IOXPUT_8(isp, atsrc->at_tag_type, &atdst->at_tag_type); } ISP_IOXPUT_32(isp, atsrc->at_flags, &atdst->at_flags); for (i = 0; i < ATIO_CDBLEN; i++) { ISP_IOXPUT_8(isp, atsrc->at_cdb[i], &atdst->at_cdb[i]); } for (i = 0; i < QLTM_SENSELEN; i++) { ISP_IOXPUT_8(isp, atsrc->at_sense[i], &atdst->at_sense[i]); }}static INLINE voidisp_get_atio(struct ispsoftc *isp, at_entry_t *atsrc, at_entry_t *atdst){ int i; isp_copy_in_hdr(isp, &atsrc->at_header, &atdst->at_header); ISP_IOXGET_16(isp, &atsrc->at_reserved, atdst->at_reserved); ISP_IOXGET_16(isp, &atsrc->at_handle, atdst->at_handle); if (ISP_IS_SBUS(isp)) { ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_iid); ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_lun); ISP_IOXGET_8(isp, &atsrc->at_cdblen, atdst->at_tgt); ISP_IOXGET_8(isp, &atsrc->at_tgt, atdst->at_cdblen); ISP_IOXGET_8(isp, &atsrc->at_status, atdst->at_scsi_status); ISP_IOXGET_8(isp, &atsrc->at_scsi_status, atdst->at_status); ISP_IOXGET_8(isp, &atsrc->at_tag_val, atdst->at_tag_type); ISP_IOXGET_8(isp, &atsrc->at_tag_type, atdst->at_tag_val); } else { ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_lun); ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_iid); ISP_IOXGET_8(isp, &atsrc->at_cdblen, atdst->at_cdblen); ISP_IOXGET_8(isp, &atsrc->at_tgt, atdst->at_tgt); ISP_IOXGET_8(isp, &atsrc->at_status, atdst->at_status); ISP_IOXGET_8(isp, &atsrc->at_scsi_status, atdst->at_scsi_status); ISP_IOXGET_8(isp, &atsrc->at_tag_val, atdst->at_tag_val); ISP_IOXGET_8(isp, &atsrc->at_tag_type, atdst->at_tag_type); } ISP_IOXGET_32(isp, &atsrc->at_flags, atdst->at_flags); for (i = 0; i < ATIO_CDBLEN; i++) { ISP_IOXGET_8(isp, &atsrc->at_cdb[i], atdst->at_cdb[i]); } for (i = 0; i < QLTM_SENSELEN; i++) { ISP_IOXGET_8(isp, &atsrc->at_sense[i], atdst->at_sense[i]); }}static INLINE voidisp_put_atio2(struct ispsoftc *isp, at2_entry_t *atsrc, at2_entry_t *atdst){ int i; isp_copy_out_hdr(isp, &atsrc->at_header, &atdst->at_header); ISP_IOXPUT_32(isp, atsrc->at_reserved, &atdst->at_reserved); ISP_IOXPUT_8(isp, atsrc->at_lun, &atdst->at_lun); ISP_IOXPUT_8(isp, atsrc->at_iid, &atdst->at_iid); ISP_IOXPUT_16(isp, atsrc->at_rxid, &atdst->at_rxid); ISP_IOXPUT_16(isp, atsrc->at_flags, &atdst->at_flags); ISP_IOXPUT_16(isp, atsrc->at_status, &atdst->at_status); ISP_IOXPUT_8(isp, atsrc->at_reserved1, &atdst->at_reserved1); ISP_IOXPUT_8(isp, atsrc->at_taskcodes, &atdst->at_taskcodes); ISP_IOXPUT_8(isp, atsrc->at_taskflags, &atdst->at_taskflags); ISP_IOXPUT_8(isp, atsrc->at_execodes, &atdst->at_execodes); for (i = 0; i < ATIO2_CDBLEN; i++) { ISP_IOXPUT_8(isp, atsrc->at_cdb[i], &atdst->at_cdb[i]); } ISP_IOXPUT_32(isp, atsrc->at_datalen, &atdst->at_datalen); ISP_IOXPUT_16(isp, atsrc->at_scclun, &atdst->at_scclun); for (i = 0; i < 4; i++) { ISP_IOXPUT_16(isp, atsrc->at_wwpn[i], &atdst->at_wwpn[i]); } for (i = 0; i < 6; i++) { ISP_IOXPUT_16(isp, atsrc->at_reserved2[i], &atdst->at_reserved2[i]); } ISP_IOXPUT_16(isp, atsrc->at_oxid, &atdst->at_oxid);}static INLINE voidisp_get_atio2(struct ispsoftc *isp, at2_entry_t *atsrc, at2_entry_t *atdst){ int i; isp_copy_in_hdr(isp, &atsrc->at_header, &atdst->at_header); ISP_IOXGET_32(isp, &atsrc->at_reserved, atdst->at_reserved); ISP_IOXGET_8(isp, &atsrc->at_lun, atdst->at_lun); ISP_IOXGET_8(isp, &atsrc->at_iid, atdst->at_iid); ISP_IOXGET_16(isp, &atsrc->at_rxid, atdst->at_rxid); ISP_IOXGET_16(isp, &atsrc->at_flags, atdst->at_flags); ISP_IOXGET_16(isp, &atsrc->at_status, atdst->at_status); ISP_IOXGET_8(isp, &atsrc->at_reserved1, atdst->at_reserved1); ISP_IOXGET_8(isp, &atsrc->at_taskcodes, atdst->at_taskcodes); ISP_IOXGET_8(isp, &atsrc->at_taskflags, atdst->at_taskflags); ISP_IOXGET_8(isp, &atsrc->at_execodes, atdst->at_execodes); for (i = 0; i < ATIO2_CDBLEN; i++) { ISP_IOXGET_8(isp, &atsrc->at_cdb[i], atdst->at_cdb[i]); } ISP_IOXGET_32(isp, &atsrc->at_datalen, atdst->at_datalen); ISP_IOXGET_16(isp, &atsrc->at_scclun, atdst->at_scclun); for (i = 0; i < 4; i++) { ISP_IOXGET_16(isp, &atsrc->at_wwpn[i], atdst->at_wwpn[i]); } for (i = 0; i < 6; i++) { ISP_IOXGET_16(isp, &atsrc->at_reserved2[i], atdst->at_reserved2[i]); } ISP_IOXGET_16(isp, &atsrc->at_oxid, atdst->at_oxid);}static INLINE voidisp_put_ctio(struct ispsoftc *isp, ct_entry_t *ctsrc, ct_entry_t *ctdst){ int i; isp_copy_out_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header); ISP_IOXPUT_16(isp, ctsrc->ct_reserved, &ctdst->ct_reserved); ISP_IOXPUT_16(isp, ctsrc->ct_fwhandle, &ctdst->ct_fwhandle); if (ISP_IS_SBUS(isp)) { ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_lun); ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_iid); ISP_IOXPUT_8(isp, ctsrc->ct_tgt, &ctdst->ct_reserved2); ISP_IOXPUT_8(isp, ctsrc->ct_reserved2, &ctdst->ct_tgt); ISP_IOXPUT_8(isp, ctsrc->ct_status, &ctdst->ct_scsi_status); ISP_IOXPUT_8(isp, ctsrc->ct_scsi_status, &ctdst->ct_status); ISP_IOXPUT_8(isp, ctsrc->ct_tag_type, &ctdst->ct_tag_val); ISP_IOXPUT_8(isp, ctsrc->ct_tag_val, &ctdst->ct_tag_type); } else { ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_iid); ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_lun); ISP_IOXPUT_8(isp, ctsrc->ct_tgt, &ctdst->ct_tgt); ISP_IOXPUT_8(isp, ctsrc->ct_reserved2, &ctdst->ct_reserved2); ISP_IOXPUT_8(isp, ctsrc->ct_scsi_status, &ctdst->ct_scsi_status); ISP_IOXPUT_8(isp, ctsrc->ct_status, &ctdst->ct_status); ISP_IOXPUT_8(isp, ctsrc->ct_tag_type, &ctdst->ct_tag_type); ISP_IOXPUT_8(isp, ctsrc->ct_tag_val, &ctdst->ct_tag_val); } ISP_IOXPUT_32(isp, ctsrc->ct_flags, &ctdst->ct_flags); ISP_IOXPUT_32(isp, ctsrc->ct_xfrlen, &ctdst->ct_xfrlen); ISP_IOXPUT_32(isp, ctsrc->ct_resid, &ctdst->ct_resid); ISP_IOXPUT_16(isp, ctsrc->ct_timeout, &ctdst->ct_timeout); ISP_IOXPUT_16(isp, ctsrc->ct_seg_count, &ctdst->ct_seg_count); for (i = 0; i < ISP_RQDSEG; i++) { ISP_IOXPUT_32(isp, ctsrc->ct_dataseg[i].ds_base, &ctdst->ct_dataseg[i].ds_base); ISP_IOXPUT_32(isp, ctsrc->ct_dataseg[i].ds_count, &ctdst->ct_dataseg[i].ds_count); }}static INLINE voidisp_get_ctio(struct ispsoftc *isp, ct_entry_t *ctsrc, ct_entry_t *ctdst){ int i; isp_copy_in_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header); ISP_IOXGET_16(isp, &ctsrc->ct_reserved, ctdst->ct_reserved); ISP_IOXGET_16(isp, &ctsrc->ct_fwhandle, ctdst->ct_fwhandle); if (ISP_IS_SBUS(isp)) { ISP_IOXGET_8(isp, &ctsrc->ct_lun, ctdst->ct_iid); ISP_IOXGET_8(isp, &ctsrc->ct_iid, ctdst->ct_lun); ISP_IOXGET_8(isp, &ctsrc->ct_reserved2, ctdst->ct_tgt); ISP_IOXGET_8(isp, &ctsrc->ct_tgt, ctdst->ct_reserved2); ISP_IOXGET_8(isp, &ctsrc->ct_status, ctdst->ct_scsi_status); ISP_IOXGET_8(isp, &ctsrc->ct_scsi_status, ctdst->ct_status); ISP_IOXGET_8(isp, &ctsrc->ct_tag_val, ctdst->ct_tag_type); ISP_IOXGET_8(isp, &ctsrc->ct_tag_type, ctdst->ct_tag_val); } else { ISP_IOXGET_8(isp, &ctsrc->ct_lun, ctdst->ct_lun); ISP_IOXGET_8(isp, &ctsrc->ct_iid, ctdst->ct_iid); ISP_IOXGET_8(isp, &ctsrc->ct_reserved2, ctdst->ct_reserved2); ISP_IOXGET_8(isp, &ctsrc->ct_tgt, ctdst->ct_tgt); ISP_IOXGET_8(isp, &ctsrc->ct_status, ctdst->ct_status); ISP_IOXGET_8(isp, &ctsrc->ct_scsi_status, ctdst->ct_scsi_status); ISP_IOXGET_8(isp, &ctsrc->ct_tag_val, ctdst->ct_tag_val); ISP_IOXGET_8(isp, &ctsrc->ct_tag_type, ctdst->ct_tag_type); } ISP_IOXGET_32(isp, &ctsrc->ct_flags, ctdst->ct_flags); ISP_IOXGET_32(isp, &ctsrc->ct_xfrlen, ctdst->ct_xfrlen); ISP_IOXGET_32(isp, &ctsrc->ct_resid, ctdst->ct_resid); ISP_IOXGET_16(isp, &ctsrc->ct_timeout, ctdst->ct_timeout); ISP_IOXGET_16(isp, &ctsrc->ct_seg_count, ctdst->ct_seg_count); for (i = 0; i < ISP_RQDSEG; i++) { ISP_IOXGET_32(isp, &ctsrc->ct_dataseg[i].ds_base, ctdst->ct_dataseg[i].ds_base); ISP_IOXGET_32(isp, &ctsrc->ct_dataseg[i].ds_count, ctdst->ct_dataseg[i].ds_count); }}static INLINE voidisp_put_ctio2(struct ispsoftc *isp, ct2_entry_t *ctsrc, ct2_entry_t *ctdst){ int i; isp_copy_out_hdr(isp, &ctsrc->ct_header, &ctdst->ct_header); ISP_IOXPUT_16(isp, ctsrc->ct_reserved, &ctdst->ct_reserved); ISP_IOXPUT_16(isp, ctsrc->ct_fwhandle, &ctdst->ct_fwhandle); ISP_IOXPUT_8(isp, ctsrc->ct_lun, &ctdst->ct_lun); ISP_IOXPUT_8(isp, ctsrc->ct_iid, &ctdst->ct_iid); ISP_IOXPUT_16(isp, ctsrc->ct_rxid, &ctdst->ct_rxid); ISP_IOXPUT_16(isp, ctsrc->ct_flags, &ctdst->ct_flags); ISP_IOXPUT_16(isp, ctsrc->ct_timeout, &ctdst->ct_timeout); ISP_IOXPUT_16(isp, ctsrc->ct_seg_count, &ctdst->ct_seg_count); ISP_IOXPUT_32(isp, ctsrc->ct_resid, &ctdst->ct_resid); ISP_IOXPUT_32(isp, ctsrc->ct_reloff, &ctdst->ct_reloff); if ((ctsrc->ct_flags & CT2_FLAG_MMASK) == CT2_FLAG_MODE0) { ISP_IOXPUT_32(isp, ctsrc->rsp.m0._reserved, &ctdst->rsp.m0._reserved); ISP_IOXPUT_16(isp, ctsrc->rsp.m0._reserved2, &ctdst->rsp.m0._reserved2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -