isp.c (291163) | isp.c (291188) |
---|---|
1/*- 2 * Copyright (c) 1997-2009 by Matthew Jacob 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 33 unchanged lines hidden (view full) --- 42 */ 43#ifdef __NetBSD__ 44#include <sys/cdefs.h> 45__KERNEL_RCSID(0, "$NetBSD$"); 46#include <dev/ic/isp_netbsd.h> 47#endif 48#ifdef __FreeBSD__ 49#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1997-2009 by Matthew Jacob 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * --- 33 unchanged lines hidden (view full) --- 42 */ 43#ifdef __NetBSD__ 44#include <sys/cdefs.h> 45__KERNEL_RCSID(0, "$NetBSD$"); 46#include <dev/ic/isp_netbsd.h> 47#endif 48#ifdef __FreeBSD__ 49#include <sys/cdefs.h> |
50__FBSDID("$FreeBSD: head/sys/dev/isp/isp.c 291163 2015-11-22 17:03:38Z mav $"); | 50__FBSDID("$FreeBSD: head/sys/dev/isp/isp.c 291188 2015-11-23 10:06:19Z mav $"); |
51#include <dev/isp/isp_freebsd.h> 52#endif 53#ifdef __OpenBSD__ 54#include <dev/ic/isp_openbsd.h> 55#endif 56#ifdef __linux__ 57#include "isp_linux.h" 58#endif --- 1025 unchanged lines hidden (view full) --- 1084 if (IS_24XX(isp)) { 1085 isp->isp_fwattr |= ((uint64_t) mbs.param[15]) << 16; 1086 if (isp->isp_fwattr & ISP2400_FW_ATTR_EXTNDED) { 1087 isp->isp_fwattr |= 1088 (((uint64_t) mbs.param[16]) << 32) | 1089 (((uint64_t) mbs.param[17]) << 48); 1090 } 1091 } | 51#include <dev/isp/isp_freebsd.h> 52#endif 53#ifdef __OpenBSD__ 54#include <dev/ic/isp_openbsd.h> 55#endif 56#ifdef __linux__ 57#include "isp_linux.h" 58#endif --- 1025 unchanged lines hidden (view full) --- 1084 if (IS_24XX(isp)) { 1085 isp->isp_fwattr |= ((uint64_t) mbs.param[15]) << 16; 1086 if (isp->isp_fwattr & ISP2400_FW_ATTR_EXTNDED) { 1087 isp->isp_fwattr |= 1088 (((uint64_t) mbs.param[16]) << 32) | 1089 (((uint64_t) mbs.param[17]) << 48); 1090 } 1091 } |
1092 } else if (IS_SCSI(isp)) { 1093#ifndef ISP_TARGET_MODE 1094 isp->isp_fwattr = ISP_FW_ATTR_TMODE; 1095#else | 1092 } else { |
1096 isp->isp_fwattr = 0; | 1093 isp->isp_fwattr = 0; |
1097#endif | |
1098 } 1099 1100 isp_prt(isp, ISP_LOGCONFIG, "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d", 1101 btype, isp->isp_revision, dodnld? "loaded" : "resident", isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]); 1102 1103 fwt = isp->isp_fwattr; 1104 if (IS_24XX(isp)) { 1105 buf = FCPARAM(isp, 0)->isp_scratch; --- 796 unchanged lines hidden (view full) --- 1902 isp_mboxcmd(isp, &mbs); 1903 if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { 1904 return; 1905 } 1906 } 1907 icbp->icb_logintime = ICB_LOGIN_TOV; 1908 1909#ifdef ISP_TARGET_MODE | 1094 } 1095 1096 isp_prt(isp, ISP_LOGCONFIG, "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d", 1097 btype, isp->isp_revision, dodnld? "loaded" : "resident", isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]); 1098 1099 fwt = isp->isp_fwattr; 1100 if (IS_24XX(isp)) { 1101 buf = FCPARAM(isp, 0)->isp_scratch; --- 796 unchanged lines hidden (view full) --- 1898 isp_mboxcmd(isp, &mbs); 1899 if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { 1900 return; 1901 } 1902 } 1903 icbp->icb_logintime = ICB_LOGIN_TOV; 1904 1905#ifdef ISP_TARGET_MODE |
1910 if (IS_23XX(isp) && (icbp->icb_fwoptions & ICBOPT_TGT_ENABLE)) { | 1906 if (icbp->icb_fwoptions & ICBOPT_TGT_ENABLE) { |
1911 icbp->icb_lunenables = 0xffff; | 1907 icbp->icb_lunenables = 0xffff; |
1912 icbp->icb_ccnt = DFLT_CMND_CNT; 1913 icbp->icb_icnt = DFLT_INOT_CNT; | 1908 icbp->icb_ccnt = 0xff; 1909 icbp->icb_icnt = 0xff; |
1914 icbp->icb_lunetimeout = ICB_LUN_ENABLE_TOV; 1915 } 1916#endif 1917 if (fcp->isp_wwnn && fcp->isp_wwpn) { 1918 icbp->icb_fwoptions |= ICBOPT_BOTH_WWNS; 1919 MAKE_NODE_NAME_FROM_WWN(icbp->icb_nodename, fcp->isp_wwnn); 1920 MAKE_NODE_NAME_FROM_WWN(icbp->icb_portname, fcp->isp_wwpn); 1921 isp_prt(isp, ISP_LOGDEBUG1, --- 2217 unchanged lines hidden (view full) --- 4139 isp_prt(isp, ISP_LOGDEBUG1, 4140 "%d.%d.%jx bad db port state 0x%x", 4141 XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs), lp->state); 4142 XS_SETERR(xs, HBA_SELTIMEOUT); 4143 return (CMD_COMPLETE); 4144 } 4145 } else { 4146 sdparam *sdp = SDPARAM(isp, XS_CHANNEL(xs)); | 1910 icbp->icb_lunetimeout = ICB_LUN_ENABLE_TOV; 1911 } 1912#endif 1913 if (fcp->isp_wwnn && fcp->isp_wwpn) { 1914 icbp->icb_fwoptions |= ICBOPT_BOTH_WWNS; 1915 MAKE_NODE_NAME_FROM_WWN(icbp->icb_nodename, fcp->isp_wwnn); 1916 MAKE_NODE_NAME_FROM_WWN(icbp->icb_portname, fcp->isp_wwpn); 1917 isp_prt(isp, ISP_LOGDEBUG1, --- 2217 unchanged lines hidden (view full) --- 4135 isp_prt(isp, ISP_LOGDEBUG1, 4136 "%d.%d.%jx bad db port state 0x%x", 4137 XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs), lp->state); 4138 XS_SETERR(xs, HBA_SELTIMEOUT); 4139 return (CMD_COMPLETE); 4140 } 4141 } else { 4142 sdparam *sdp = SDPARAM(isp, XS_CHANNEL(xs)); |
4147 if ((sdp->role & ISP_ROLE_INITIATOR) == 0) { 4148 isp_prt(isp, ISP_LOGDEBUG1, 4149 "%d.%d.%jx I am not an initiator", 4150 XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs)); 4151 XS_SETERR(xs, HBA_SELTIMEOUT); 4152 return (CMD_COMPLETE); 4153 } 4154 | |
4155 if (isp->isp_state != ISP_RUNSTATE) { 4156 isp_prt(isp, ISP_LOGERR, "Adapter not at RUNSTATE"); 4157 XS_SETERR(xs, HBA_BOTCH); 4158 return (CMD_COMPLETE); 4159 } 4160 4161 if (sdp->update) { 4162 isp_spi_update(isp, XS_CHANNEL(xs)); --- 591 unchanged lines hidden (view full) --- 4754 p->handle = r >> 16; 4755 r = 0; 4756 break; 4757 } 4758 } while ((r & 0xffff) == MBOX_LOOP_ID_USED); 4759 return (r); 4760 } 4761 case ISPCTL_CHANGE_ROLE: | 4143 if (isp->isp_state != ISP_RUNSTATE) { 4144 isp_prt(isp, ISP_LOGERR, "Adapter not at RUNSTATE"); 4145 XS_SETERR(xs, HBA_BOTCH); 4146 return (CMD_COMPLETE); 4147 } 4148 4149 if (sdp->update) { 4150 isp_spi_update(isp, XS_CHANNEL(xs)); --- 591 unchanged lines hidden (view full) --- 4742 p->handle = r >> 16; 4743 r = 0; 4744 break; 4745 } 4746 } while ((r & 0xffff) == MBOX_LOOP_ID_USED); 4747 return (r); 4748 } 4749 case ISPCTL_CHANGE_ROLE: |
4762 { 4763 int role, r; 4764 4765 va_start(ap, ctl); 4766 chan = va_arg(ap, int); 4767 role = va_arg(ap, int); 4768 va_end(ap); | |
4769 if (IS_FC(isp)) { | 4750 if (IS_FC(isp)) { |
4751 int role, r; 4752 4753 va_start(ap, ctl); 4754 chan = va_arg(ap, int); 4755 role = va_arg(ap, int); 4756 va_end(ap); |
|
4770 r = isp_fc_change_role(isp, chan, role); | 4757 r = isp_fc_change_role(isp, chan, role); |
4771 } else { 4772 SDPARAM(isp, chan)->role = role; 4773 r = 0; | 4758 return (r); |
4774 } | 4759 } |
4775 return (r); 4776 } | 4760 break; |
4777 default: 4778 isp_prt(isp, ISP_LOGERR, "Unknown Control Opcode 0x%x", ctl); 4779 break; 4780 4781 } 4782 return (-1); 4783} 4784 --- 2656 unchanged lines hidden (view full) --- 7441 7442static void 7443isp_setdfltsdparm(ispsoftc_t *isp) 7444{ 7445 int tgt; 7446 sdparam *sdp, *sdp1; 7447 7448 sdp = SDPARAM(isp, 0); | 4761 default: 4762 isp_prt(isp, ISP_LOGERR, "Unknown Control Opcode 0x%x", ctl); 4763 break; 4764 4765 } 4766 return (-1); 4767} 4768 --- 2656 unchanged lines hidden (view full) --- 7425 7426static void 7427isp_setdfltsdparm(ispsoftc_t *isp) 7428{ 7429 int tgt; 7430 sdparam *sdp, *sdp1; 7431 7432 sdp = SDPARAM(isp, 0); |
7449 sdp->role = GET_DEFAULT_ROLE(isp, 0); 7450 if (IS_DUALBUS(isp)) { | 7433 if (IS_DUALBUS(isp)) |
7451 sdp1 = sdp + 1; | 7434 sdp1 = sdp + 1; |
7452 sdp1->role = GET_DEFAULT_ROLE(isp, 1); 7453 } else { | 7435 else |
7454 sdp1 = NULL; | 7436 sdp1 = NULL; |
7455 } | |
7456 7457 /* 7458 * Establish some default parameters. 7459 */ 7460 sdp->isp_cmd_dma_burst_enable = 0; 7461 sdp->isp_data_dma_burst_enabl = 1; 7462 sdp->isp_fifo_threshold = 0; 7463 sdp->isp_initiator_id = DEFAULT_IID(isp, 0); --- 117 unchanged lines hidden (view full) --- 7581static void 7582isp_setdfltfcparm(ispsoftc_t *isp, int chan) 7583{ 7584 fcparam *fcp = FCPARAM(isp, chan); 7585 7586 /* 7587 * Establish some default parameters. 7588 */ | 7437 7438 /* 7439 * Establish some default parameters. 7440 */ 7441 sdp->isp_cmd_dma_burst_enable = 0; 7442 sdp->isp_data_dma_burst_enabl = 1; 7443 sdp->isp_fifo_threshold = 0; 7444 sdp->isp_initiator_id = DEFAULT_IID(isp, 0); --- 117 unchanged lines hidden (view full) --- 7562static void 7563isp_setdfltfcparm(ispsoftc_t *isp, int chan) 7564{ 7565 fcparam *fcp = FCPARAM(isp, chan); 7566 7567 /* 7568 * Establish some default parameters. 7569 */ |
7589 fcp->role = GET_DEFAULT_ROLE(isp, chan); | 7570 fcp->role = DEFAULT_ROLE(isp, chan); |
7590 fcp->isp_maxalloc = ICB_DFLT_ALLOC; 7591 fcp->isp_retry_delay = ICB_DFLT_RDELAY; 7592 fcp->isp_retry_count = ICB_DFLT_RCOUNT; 7593 fcp->isp_loopid = DEFAULT_LOOPID(isp, chan); 7594 fcp->isp_wwnn_nvram = DEFAULT_NODEWWN(isp, chan); 7595 fcp->isp_wwpn_nvram = DEFAULT_PORTWWN(isp, chan); 7596 fcp->isp_fwoptions = 0; 7597 fcp->isp_lasthdl = NIL_HANDLE; --- 710 unchanged lines hidden --- | 7571 fcp->isp_maxalloc = ICB_DFLT_ALLOC; 7572 fcp->isp_retry_delay = ICB_DFLT_RDELAY; 7573 fcp->isp_retry_count = ICB_DFLT_RCOUNT; 7574 fcp->isp_loopid = DEFAULT_LOOPID(isp, chan); 7575 fcp->isp_wwnn_nvram = DEFAULT_NODEWWN(isp, chan); 7576 fcp->isp_wwpn_nvram = DEFAULT_PORTWWN(isp, chan); 7577 fcp->isp_fwoptions = 0; 7578 fcp->isp_lasthdl = NIL_HANDLE; --- 710 unchanged lines hidden --- |