svn commit: r240009 - stable/9/sys/dev/isp
Matt Jacob
mjacob at FreeBSD.org
Sun Sep 2 14:44:10 UTC 2012
Author: mjacob
Date: Sun Sep 2 14:44:09 2012
New Revision: 240009
URL: http://svn.freebsd.org/changeset/base/240009
Log:
MFC of 237210
Prepare for FC-Tape support.
Modified:
stable/9/sys/dev/isp/isp.c
stable/9/sys/dev/isp/isp_freebsd.h
stable/9/sys/dev/isp/isp_pci.c
stable/9/sys/dev/isp/ispmbox.h
stable/9/sys/dev/isp/ispreg.h
stable/9/sys/dev/isp/ispvar.h
Directory Properties:
stable/9/sys/ (props changed)
stable/9/sys/dev/ (props changed)
stable/9/sys/dev/isp/ (props changed)
Modified: stable/9/sys/dev/isp/isp.c
==============================================================================
--- stable/9/sys/dev/isp/isp.c Sun Sep 2 14:41:29 2012 (r240008)
+++ stable/9/sys/dev/isp/isp.c Sun Sep 2 14:44:09 2012 (r240009)
@@ -159,6 +159,8 @@ void
isp_reset(ispsoftc_t *isp, int do_load_defaults)
{
mbreg_t mbs;
+ char *buf;
+ uint64_t fwt;
uint32_t code_org, val;
int loops, i, dodnld = 1;
const char *btype = "????";
@@ -685,9 +687,7 @@ isp_reset(ispsoftc_t *isp, int do_load_d
* Do some sanity checking by running a NOP command.
* If it succeeds, the ROM firmware is now running.
*/
- ISP_MEMZERO(&mbs, sizeof (mbs));
- mbs.param[0] = MBOX_NO_OP;
- mbs.logval = MBLOGALL;
+ MBSINIT(&mbs, MBOX_NO_OP, MBLOGALL, 0);
isp_mboxcmd(isp, &mbs);
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
isp_prt(isp, ISP_LOGERR, "NOP command failed (%x)", mbs.param[0]);
@@ -700,29 +700,32 @@ isp_reset(ispsoftc_t *isp, int do_load_d
*/
if (IS_SCSI(isp) || IS_24XX(isp)) {
- ISP_MEMZERO(&mbs, sizeof (mbs));
- mbs.param[0] = MBOX_MAILBOX_REG_TEST;
- mbs.param[1] = 0xdead;
- mbs.param[2] = 0xbeef;
- mbs.param[3] = 0xffff;
- mbs.param[4] = 0x1111;
- mbs.param[5] = 0xa5a5;
- mbs.param[6] = 0x0000;
- mbs.param[7] = 0x0000;
- mbs.logval = MBLOGALL;
+ static const uint16_t patterns[MAX_MAILBOX] = {
+ 0x0000, 0xdead, 0xbeef, 0xffff,
+ 0xa5a5, 0x5a5a, 0x7f7f, 0x7ff7,
+ 0x3421, 0xabcd, 0xdcba, 0xfeef,
+ 0xbead, 0xdebe, 0x2222, 0x3333,
+ 0x5555, 0x6666, 0x7777, 0xaaaa,
+ 0xffff, 0xdddd, 0x9999, 0x1fbc,
+ 0x6666, 0x6677, 0x1122, 0x33ff,
+ 0x0000, 0x0001, 0x1000, 0x1010,
+ };
+ MBSINIT(&mbs, MBOX_MAILBOX_REG_TEST, MBLOGALL, 0);
+ for (i = 1; i < ISP_NMBOX(isp); i++) {
+ mbs.param[i] = patterns[i];
+ }
isp_mboxcmd(isp, &mbs);
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
ISP_RESET0(isp);
return;
}
- if (mbs.param[1] != 0xdead || mbs.param[2] != 0xbeef ||
- mbs.param[3] != 0xffff || mbs.param[4] != 0x1111 ||
- mbs.param[5] != 0xa5a5) {
- ISP_RESET0(isp);
- isp_prt(isp, ISP_LOGERR, "Register Test Failed (0x%x 0x%x 0x%x 0x%x 0x%x)", mbs.param[1], mbs.param[2], mbs.param[3], mbs.param[4], mbs.param[5]);
- return;
+ for (i = 1; i < ISP_NMBOX(isp); i++) {
+ if (mbs.param[i] != patterns[i]) {
+ ISP_RESET0(isp);
+ isp_prt(isp, ISP_LOGERR, "Register Test Failed at Register %d: should have 0x%04x but got 0x%04x", i, patterns[i], mbs.param[i]);
+ return;
+ }
}
-
}
/*
@@ -780,7 +783,7 @@ isp_reset(ispsoftc_t *isp, int do_load_d
}
MEMORYBARRIER(isp, SYNC_REQUEST, 0, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)), -1);
again:
- ISP_MEMZERO(&mbs, sizeof (mbs));
+ MBSINIT(&mbs, 0, MBLOGALL, 0);
if (la < 0x10000 && nw < 0x10000) {
mbs.param[0] = MBOX_LOAD_RISC_RAM_2100;
mbs.param[1] = la;
@@ -818,7 +821,6 @@ isp_reset(ispsoftc_t *isp, int do_load_d
mbs.param[8] = la >> 16;
isp_prt(isp, ISP_LOGDEBUG0, "LOAD RISC RAM %u words at load address 0x%x", nw, la);
}
- mbs.logval = MBLOGALL;
isp_mboxcmd(isp, &mbs);
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
if (mbs.param[0] == MBOX_HOST_INTERFACE_ERROR) {
@@ -872,7 +874,7 @@ isp_reset(ispsoftc_t *isp, int do_load_d
wl--;
}
MEMORYBARRIER(isp, SYNC_REQUEST, 0, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)), -1);
- ISP_MEMZERO(&mbs, sizeof (mbs));
+ MBSINIT(&mbs, 0, MBLOGALL, 0);
if (la < 0x10000) {
mbs.param[0] = MBOX_LOAD_RISC_RAM_2100;
mbs.param[1] = la;
@@ -893,7 +895,6 @@ isp_reset(ispsoftc_t *isp, int do_load_d
mbs.param[8] = la >> 16;
isp_prt(isp, ISP_LOGDEBUG1, "LOAD RISC RAM %u words at load address 0x%x\n", nw, la);
}
- mbs.logval = MBLOGALL;
isp_mboxcmd(isp, &mbs);
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
isp_prt(isp, ISP_LOGERR, "F/W Risc Ram Load Failed");
@@ -933,11 +934,9 @@ isp_reset(ispsoftc_t *isp, int do_load_d
isp->isp_mbxworkp = &ucd.np[1];
isp->isp_mbxwrk0 = ucd.np[3] - 1;
isp->isp_mbxwrk1 = code_org + 1;
- ISP_MEMZERO(&mbs, sizeof (mbs));
- mbs.param[0] = MBOX_WRITE_RAM_WORD;
+ MBSINIT(&mbs, MBOX_WRITE_RAM_WORD, MBLOGNONE, 0);
mbs.param[1] = code_org;
mbs.param[2] = ucd.np[0];
- mbs.logval = MBLOGNONE;
isp_prt(isp, ISP_LOGDEBUG1, "WRITE RAM %u words at load address 0x%x\n", ucd.np[3], code_org);
isp_mboxcmd(isp, &mbs);
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
@@ -954,7 +953,7 @@ isp_reset(ispsoftc_t *isp, int do_load_d
* If we loaded firmware, verify its checksum
*/
if (isp->isp_loaded_fw) {
- ISP_MEMZERO(&mbs, sizeof (mbs));
+ MBSINIT(&mbs, MBOX_VERIFY_CHECKSUM, MBLOGNONE, 0);
mbs.param[0] = MBOX_VERIFY_CHECKSUM;
if (IS_24XX(isp)) {
mbs.param[1] = code_org >> 16;
@@ -978,7 +977,7 @@ isp_reset(ispsoftc_t *isp, int do_load_d
*/
- MBSINIT(&mbs, MBOX_EXEC_FIRMWARE, MBLOGALL, 1000000);
+ MBSINIT(&mbs, MBOX_EXEC_FIRMWARE, MBLOGALL, 5000000);
if (IS_24XX(isp)) {
mbs.param[1] = code_org >> 16;
mbs.param[2] = code_org;
@@ -1071,9 +1070,6 @@ isp_reset(ispsoftc_t *isp, int do_load_d
isp->isp_fwrev[2] = mbs.param[3];
}
- isp_prt(isp, ISP_LOGCONFIG, "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d",
- btype, isp->isp_revision, dodnld? "loaded" : "resident", isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]);
-
if (IS_FC(isp)) {
/*
* We do not believe firmware attributes for 2100 code less
@@ -1090,9 +1086,12 @@ isp_reset(ispsoftc_t *isp, int do_load_d
#endif
} else {
isp->isp_fwattr = mbs.param[6];
- isp_prt(isp, ISP_LOGDEBUG0, "Firmware Attributes = 0x%x", mbs.param[6]);
}
- } else {
+ if (IS_24XX(isp) && (isp->isp_fwattr & ISP2400_FW_ATTR_EXTNDED)) {
+ isp->isp_fwattr ^= ISP2400_FW_ATTR_EXTNDED;
+ isp->isp_fwattr |= (((uint64_t) mbs.param[15]) << 16) | (((uint64_t) mbs.param[16]) << 32) | (((uint64_t) mbs.param[17]) << 48);
+ }
+ } else if (IS_SCSI(isp)) {
#ifndef ISP_TARGET_MODE
isp->isp_fwattr = ISP_FW_ATTR_TMODE;
#else
@@ -1100,6 +1099,95 @@ isp_reset(ispsoftc_t *isp, int do_load_d
#endif
}
+ isp_prt(isp, ISP_LOGCONFIG, "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d",
+ btype, isp->isp_revision, dodnld? "loaded" : "resident", isp->isp_fwrev[0], isp->isp_fwrev[1], isp->isp_fwrev[2]);
+
+ fwt = isp->isp_fwattr;
+ if (IS_24XX(isp)) {
+ buf = FCPARAM(isp, 0)->isp_scratch;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "Attributes:");
+ if (fwt & ISP2400_FW_ATTR_CLASS2) {
+ fwt ^=ISP2400_FW_ATTR_CLASS2;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s Class2", buf);
+ }
+ if (fwt & ISP2400_FW_ATTR_IP) {
+ fwt ^=ISP2400_FW_ATTR_IP;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s IP", buf);
+ }
+ if (fwt & ISP2400_FW_ATTR_MULTIID) {
+ fwt ^=ISP2400_FW_ATTR_MULTIID;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s MultiID", buf);
+ }
+ if (fwt & ISP2400_FW_ATTR_SB2) {
+ fwt ^=ISP2400_FW_ATTR_SB2;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s SB2", buf);
+ }
+ if (fwt & ISP2400_FW_ATTR_T10CRC) {
+ fwt ^=ISP2400_FW_ATTR_T10CRC;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s T10CRC", buf);
+ }
+ if (fwt & ISP2400_FW_ATTR_VI) {
+ fwt ^=ISP2400_FW_ATTR_VI;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VI", buf);
+ }
+ if (fwt & ISP2400_FW_ATTR_VP0) {
+ fwt ^= ISP2400_FW_ATTR_VP0;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VP0_Decoupling", buf);
+ }
+ if (fwt & ISP2400_FW_ATTR_EXPFW) {
+ fwt ^= ISP2400_FW_ATTR_EXPFW;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s (Experimental)", buf);
+ }
+ fwt &= ~ISP2400_FW_ATTR_EXTNDED;
+ if (fwt) {
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s (unknown 0x%jx)", buf, (uintmax_t)fwt);
+ }
+ isp_prt(isp, ISP_LOGCONFIG, "%s", buf);
+ } else if (IS_FC(isp)) {
+ buf = FCPARAM(isp, 0)->isp_scratch;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN, "Attributes:");
+ if (fwt & ISP_FW_ATTR_TMODE) {
+ fwt ^=ISP_FW_ATTR_TMODE;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s TargetMode", buf);
+ }
+ if (fwt & ISP_FW_ATTR_SCCLUN) {
+ fwt ^=ISP_FW_ATTR_SCCLUN;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s SCC-Lun", buf);
+ }
+ if (fwt & ISP_FW_ATTR_FABRIC) {
+ fwt ^=ISP_FW_ATTR_FABRIC;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s Fabric", buf);
+ }
+ if (fwt & ISP_FW_ATTR_CLASS2) {
+ fwt ^=ISP_FW_ATTR_CLASS2;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s Class2", buf);
+ }
+ if (fwt & ISP_FW_ATTR_FCTAPE) {
+ fwt ^=ISP_FW_ATTR_FCTAPE;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s FC-Tape", buf);
+ }
+ if (fwt & ISP_FW_ATTR_IP) {
+ fwt ^=ISP_FW_ATTR_IP;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s IP", buf);
+ }
+ if (fwt & ISP_FW_ATTR_VI) {
+ fwt ^=ISP_FW_ATTR_VI;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VI", buf);
+ }
+ if (fwt & ISP_FW_ATTR_VI_SOLARIS) {
+ fwt ^=ISP_FW_ATTR_VI_SOLARIS;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s VI_SOLARIS", buf);
+ }
+ if (fwt & ISP_FW_ATTR_2KLOGINS) {
+ fwt ^=ISP_FW_ATTR_2KLOGINS;
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s 2K-Login", buf);
+ }
+ if (fwt != 0) {
+ ISP_SNPRINTF(buf, ISP_FC_SCRLEN - strlen(buf), "%s (unknown 0x%jx)", buf, (uintmax_t)fwt);
+ }
+ isp_prt(isp, ISP_LOGCONFIG, "%s", buf);
+ }
+
if (!IS_24XX(isp)) {
MBSINIT(&mbs, MBOX_GET_FIRMWARE_STATUS, MBLOGALL, 0);
isp_mboxcmd(isp, &mbs);
@@ -1768,6 +1856,7 @@ isp_fibre_init_2400(ispsoftc_t *isp)
isp_icb_2400_t local, *icbp = &local;
mbreg_t mbs;
int chan;
+ int ownloopid = 0;
/*
* Check to see whether all channels have *some* kind of role
@@ -1831,7 +1920,6 @@ isp_fibre_init_2400(ispsoftc_t *isp)
* Get current resource count
*/
MBSINIT(&mbs, MBOX_GET_RESOURCE_COUNT, MBLOGALL, 0);
- mbs.obits = 0x4cf;
isp_mboxcmd(isp, &mbs);
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
return;
@@ -1840,27 +1928,18 @@ isp_fibre_init_2400(ispsoftc_t *isp)
}
+ ownloopid = (isp->isp_confopts & ISP_CFG_OWNLOOPID) != 0;
icbp->icb_hardaddr = fcp->isp_loopid;
if (icbp->icb_hardaddr >= LOCAL_LOOP_LIM) {
icbp->icb_hardaddr = 0;
+ ownloopid = 0;
}
- /*
- * Force this on.
- */
- icbp->icb_fwoptions1 |= ICB2400_OPT1_HARD_ADDRESS;
+ if (ownloopid)
+ icbp->icb_fwoptions1 |= ICB2400_OPT1_HARD_ADDRESS;
icbp->icb_fwoptions2 = fcp->isp_xfwoptions;
switch (isp->isp_confopts & ISP_CFG_PORT_PREF) {
-#if 0
- case ISP_CFG_NPORT:
- /*
- * XXX: This causes the f/w to crash.
- */
- icbp->icb_fwoptions2 &= ~ICB2400_OPT2_TOPO_MASK;
- icbp->icb_fwoptions2 |= ICB2400_OPT2_PTP_2_LOOP;
- break;
-#endif
case ISP_CFG_NPORT_ONLY:
icbp->icb_fwoptions2 &= ~ICB2400_OPT2_TOPO_MASK;
icbp->icb_fwoptions2 |= ICB2400_OPT2_PTP_ONLY;
@@ -1870,14 +1949,12 @@ isp_fibre_init_2400(ispsoftc_t *isp)
icbp->icb_fwoptions2 |= ICB2400_OPT2_LOOP_ONLY;
break;
default:
+ /* ISP_CFG_PTP_2_LOOP not available in 24XX/25XX */
icbp->icb_fwoptions2 &= ~ICB2400_OPT2_TOPO_MASK;
icbp->icb_fwoptions2 |= ICB2400_OPT2_LOOP_2_PTP;
break;
}
- /* force this on for now */
- icbp->icb_fwoptions2 |= ICB2400_OPT2_ZIO;
-
switch (icbp->icb_fwoptions2 & ICB2400_OPT2_TIMER_MASK) {
case ICB2400_OPT2_ZIO:
case ICB2400_OPT2_ZIO1:
@@ -1891,12 +1968,10 @@ isp_fibre_init_2400(ispsoftc_t *isp)
break;
}
- /*
- * We don't support FCTAPE, so clear it.
- */
- icbp->icb_fwoptions2 &= ~ICB2400_OPT2_FCTAPE;
-
icbp->icb_fwoptions3 = fcp->isp_zfwoptions;
+ if ((icbp->icb_fwoptions3 & ICB2400_OPT3_RSPSZ_MASK) == 0) {
+ icbp->icb_fwoptions3 |= ICB2400_OPT3_RSPSZ_24;
+ }
icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_AUTO;
if (isp->isp_confopts & ISP_CFG_ONEGB) {
icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_ONEGB;
@@ -1904,11 +1979,12 @@ isp_fibre_init_2400(ispsoftc_t *isp)
icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_TWOGB;
} else if (isp->isp_confopts & ISP_CFG_FOURGB) {
icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_FOURGB;
+ } else if (IS_25XX(isp) && (isp->isp_confopts & ISP_CFG_EIGHTGB)) {
+ icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_EIGHTGB;
} else {
icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_AUTO;
}
-
- if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0) {
+ if (ownloopid == 0) {
icbp->icb_fwoptions3 |= ICB2400_OPT3_SOFTID;
}
icbp->icb_logintime = ICB_LOGIN_TOV;
@@ -2569,11 +2645,7 @@ isp_fclink_test(ispsoftc_t *isp, int cha
* Get our Loop ID and Port ID.
*/
MBSINIT(&mbs, MBOX_GET_LOOP_ID, MBLOGALL, 0);
- if (ISP_CAP_MULTI_ID(isp)) {
- mbs.param[9] = chan;
- mbs.ibits = (1 << 9);
- mbs.obits = (1 << 7);
- }
+ mbs.param[9] = chan;
isp_mboxcmd(isp, &mbs);
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
return (-1);
@@ -2676,12 +2748,14 @@ isp_fclink_test(ispsoftc_t *isp, int cha
lp->new_portid = lp->portid;
lp->new_roles = lp->roles;
if (IS_24XX(isp)) {
- fcp->inorder = (mbs.param[7] & ISP24XX_INORDER) != 0;
- if (ISP_FW_NEWER_THAN(isp, 4, 0, 27)) {
- fcp->npiv_fabric = (mbs.param[7] & ISP24XX_NPIV_SAN) != 0;
- if (fcp->npiv_fabric) {
- isp_prt(isp, ISP_LOGCONFIG, "fabric supports NP-IV");
- }
+ if (check_for_fabric) {
+ /*
+ * The mbs is still hanging out from the MBOX_GET_LOOP_ID above.
+ */
+ fcp->isp_fabric_params = mbs.param[7];
+ isp_prt(isp, ISP_LOGCONFIG, "fabric params 0x%x", mbs.param[7]);
+ } else {
+ fcp->isp_fabric_params = 0;
}
if (chan) {
fcp->isp_sns_hdl = NPH_SNS_HDLBASE + chan;
@@ -4427,6 +4501,7 @@ isp_start(XS_T *xs)
t7->req_lun[0] |= 0x40;
}
t7->req_lun[1] = XS_LUN(xs);
+ FCP_NEXT_CRN(isp, xs, t7->req_crn, XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs));
tptr = &t7->req_time;
cdbp = t7->req_cdb;
cdblen = ISP_MIN(cdblen, sizeof (t7->req_cdb));
@@ -4907,7 +4982,7 @@ again:
if (isp->isp_mboxbsy) {
int obits = isp->isp_obits;
isp->isp_mboxtmp[0] = mbox;
- for (i = 1; i < MAX_MAILBOX(isp); i++) {
+ for (i = 1; i < ISP_NMBOX(isp); i++) {
if ((obits & (1 << i)) == 0) {
continue;
}
@@ -6667,105 +6742,106 @@ isp_mbox_continue(ispsoftc_t *isp)
return (0);
}
-#define HIWRD(x) ((x) >> 16)
-#define LOWRD(x) ((x) & 0xffff)
-#define ISPOPMAP(a, b) (((a) << 16) | (b))
-static const uint32_t mbpscsi[] = {
- ISPOPMAP(0x01, 0x01), /* 0x00: MBOX_NO_OP */
- ISPOPMAP(0x1f, 0x01), /* 0x01: MBOX_LOAD_RAM */
- ISPOPMAP(0x03, 0x01), /* 0x02: MBOX_EXEC_FIRMWARE */
- ISPOPMAP(0x1f, 0x01), /* 0x03: MBOX_DUMP_RAM */
- ISPOPMAP(0x07, 0x07), /* 0x04: MBOX_WRITE_RAM_WORD */
- ISPOPMAP(0x03, 0x07), /* 0x05: MBOX_READ_RAM_WORD */
- ISPOPMAP(0x3f, 0x3f), /* 0x06: MBOX_MAILBOX_REG_TEST */
- ISPOPMAP(0x07, 0x07), /* 0x07: MBOX_VERIFY_CHECKSUM */
- ISPOPMAP(0x01, 0x0f), /* 0x08: MBOX_ABOUT_FIRMWARE */
- ISPOPMAP(0x00, 0x00), /* 0x09: */
- ISPOPMAP(0x00, 0x00), /* 0x0a: */
- ISPOPMAP(0x00, 0x00), /* 0x0b: */
- ISPOPMAP(0x00, 0x00), /* 0x0c: */
- ISPOPMAP(0x00, 0x00), /* 0x0d: */
- ISPOPMAP(0x01, 0x05), /* 0x0e: MBOX_CHECK_FIRMWARE */
- ISPOPMAP(0x00, 0x00), /* 0x0f: */
- ISPOPMAP(0x1f, 0x1f), /* 0x10: MBOX_INIT_REQ_QUEUE */
- ISPOPMAP(0x3f, 0x3f), /* 0x11: MBOX_INIT_RES_QUEUE */
- ISPOPMAP(0x0f, 0x0f), /* 0x12: MBOX_EXECUTE_IOCB */
- ISPOPMAP(0x03, 0x03), /* 0x13: MBOX_WAKE_UP */
- ISPOPMAP(0x01, 0x3f), /* 0x14: MBOX_STOP_FIRMWARE */
- ISPOPMAP(0x0f, 0x0f), /* 0x15: MBOX_ABORT */
- ISPOPMAP(0x03, 0x03), /* 0x16: MBOX_ABORT_DEVICE */
- ISPOPMAP(0x07, 0x07), /* 0x17: MBOX_ABORT_TARGET */
- ISPOPMAP(0x07, 0x07), /* 0x18: MBOX_BUS_RESET */
- ISPOPMAP(0x03, 0x07), /* 0x19: MBOX_STOP_QUEUE */
- ISPOPMAP(0x03, 0x07), /* 0x1a: MBOX_START_QUEUE */
- ISPOPMAP(0x03, 0x07), /* 0x1b: MBOX_SINGLE_STEP_QUEUE */
- ISPOPMAP(0x03, 0x07), /* 0x1c: MBOX_ABORT_QUEUE */
- ISPOPMAP(0x03, 0x4f), /* 0x1d: MBOX_GET_DEV_QUEUE_STATUS */
- ISPOPMAP(0x00, 0x00), /* 0x1e: */
- ISPOPMAP(0x01, 0x07), /* 0x1f: MBOX_GET_FIRMWARE_STATUS */
- ISPOPMAP(0x01, 0x07), /* 0x20: MBOX_GET_INIT_SCSI_ID */
- ISPOPMAP(0x01, 0x07), /* 0x21: MBOX_GET_SELECT_TIMEOUT */
- ISPOPMAP(0x01, 0xc7), /* 0x22: MBOX_GET_RETRY_COUNT */
- ISPOPMAP(0x01, 0x07), /* 0x23: MBOX_GET_TAG_AGE_LIMIT */
- ISPOPMAP(0x01, 0x03), /* 0x24: MBOX_GET_CLOCK_RATE */
- ISPOPMAP(0x01, 0x07), /* 0x25: MBOX_GET_ACT_NEG_STATE */
- ISPOPMAP(0x01, 0x07), /* 0x26: MBOX_GET_ASYNC_DATA_SETUP_TIME */
- ISPOPMAP(0x01, 0x07), /* 0x27: MBOX_GET_PCI_PARAMS */
- ISPOPMAP(0x03, 0x4f), /* 0x28: MBOX_GET_TARGET_PARAMS */
- ISPOPMAP(0x03, 0x0f), /* 0x29: MBOX_GET_DEV_QUEUE_PARAMS */
- ISPOPMAP(0x01, 0x07), /* 0x2a: MBOX_GET_RESET_DELAY_PARAMS */
- ISPOPMAP(0x00, 0x00), /* 0x2b: */
- ISPOPMAP(0x00, 0x00), /* 0x2c: */
- ISPOPMAP(0x00, 0x00), /* 0x2d: */
- ISPOPMAP(0x00, 0x00), /* 0x2e: */
- ISPOPMAP(0x00, 0x00), /* 0x2f: */
- ISPOPMAP(0x03, 0x03), /* 0x30: MBOX_SET_INIT_SCSI_ID */
- ISPOPMAP(0x07, 0x07), /* 0x31: MBOX_SET_SELECT_TIMEOUT */
- ISPOPMAP(0xc7, 0xc7), /* 0x32: MBOX_SET_RETRY_COUNT */
- ISPOPMAP(0x07, 0x07), /* 0x33: MBOX_SET_TAG_AGE_LIMIT */
- ISPOPMAP(0x03, 0x03), /* 0x34: MBOX_SET_CLOCK_RATE */
- ISPOPMAP(0x07, 0x07), /* 0x35: MBOX_SET_ACT_NEG_STATE */
- ISPOPMAP(0x07, 0x07), /* 0x36: MBOX_SET_ASYNC_DATA_SETUP_TIME */
- ISPOPMAP(0x07, 0x07), /* 0x37: MBOX_SET_PCI_CONTROL_PARAMS */
- ISPOPMAP(0x4f, 0x4f), /* 0x38: MBOX_SET_TARGET_PARAMS */
- ISPOPMAP(0x0f, 0x0f), /* 0x39: MBOX_SET_DEV_QUEUE_PARAMS */
- ISPOPMAP(0x07, 0x07), /* 0x3a: MBOX_SET_RESET_DELAY_PARAMS */
- ISPOPMAP(0x00, 0x00), /* 0x3b: */
- ISPOPMAP(0x00, 0x00), /* 0x3c: */
- ISPOPMAP(0x00, 0x00), /* 0x3d: */
- ISPOPMAP(0x00, 0x00), /* 0x3e: */
- ISPOPMAP(0x00, 0x00), /* 0x3f: */
- ISPOPMAP(0x01, 0x03), /* 0x40: MBOX_RETURN_BIOS_BLOCK_ADDR */
- ISPOPMAP(0x3f, 0x01), /* 0x41: MBOX_WRITE_FOUR_RAM_WORDS */
- ISPOPMAP(0x03, 0x07), /* 0x42: MBOX_EXEC_BIOS_IOCB */
- ISPOPMAP(0x00, 0x00), /* 0x43: */
- ISPOPMAP(0x00, 0x00), /* 0x44: */
- ISPOPMAP(0x03, 0x03), /* 0x45: SET SYSTEM PARAMETER */
- ISPOPMAP(0x01, 0x03), /* 0x46: GET SYSTEM PARAMETER */
- ISPOPMAP(0x00, 0x00), /* 0x47: */
- ISPOPMAP(0x01, 0xcf), /* 0x48: GET SCAM CONFIGURATION */
- ISPOPMAP(0xcf, 0xcf), /* 0x49: SET SCAM CONFIGURATION */
- ISPOPMAP(0x03, 0x03), /* 0x4a: MBOX_SET_FIRMWARE_FEATURES */
- ISPOPMAP(0x01, 0x03), /* 0x4b: MBOX_GET_FIRMWARE_FEATURES */
- ISPOPMAP(0x00, 0x00), /* 0x4c: */
- ISPOPMAP(0x00, 0x00), /* 0x4d: */
- ISPOPMAP(0x00, 0x00), /* 0x4e: */
- ISPOPMAP(0x00, 0x00), /* 0x4f: */
- ISPOPMAP(0xdf, 0xdf), /* 0x50: LOAD RAM A64 */
- ISPOPMAP(0xdf, 0xdf), /* 0x51: DUMP RAM A64 */
- ISPOPMAP(0xdf, 0xff), /* 0x52: INITIALIZE REQUEST QUEUE A64 */
- ISPOPMAP(0xef, 0xff), /* 0x53: INITIALIZE RESPONSE QUEUE A64 */
- ISPOPMAP(0xcf, 0x01), /* 0x54: EXECUCUTE COMMAND IOCB A64 */
- ISPOPMAP(0x07, 0x01), /* 0x55: ENABLE TARGET MODE */
- ISPOPMAP(0x03, 0x0f), /* 0x56: GET TARGET STATUS */
- ISPOPMAP(0x00, 0x00), /* 0x57: */
- ISPOPMAP(0x00, 0x00), /* 0x58: */
- ISPOPMAP(0x00, 0x00), /* 0x59: */
- ISPOPMAP(0x03, 0x03), /* 0x5a: SET DATA OVERRUN RECOVERY MODE */
- ISPOPMAP(0x01, 0x03), /* 0x5b: GET DATA OVERRUN RECOVERY MODE */
- ISPOPMAP(0x0f, 0x0f), /* 0x5c: SET HOST DATA */
- ISPOPMAP(0x01, 0x01) /* 0x5d: GET NOST DATA */
+#define ISP_SCSI_IBITS(op) (mbpscsi[((op)<<1)])
+#define ISP_SCSI_OBITS(op) (mbpscsi[((op)<<1) + 1])
+#define ISP_SCSI_OPMAP(in, out) in, out
+static const uint8_t mbpscsi[] = {
+ ISP_SCSI_OPMAP(0x01, 0x01), /* 0x00: MBOX_NO_OP */
+ ISP_SCSI_OPMAP(0x1f, 0x01), /* 0x01: MBOX_LOAD_RAM */
+ ISP_SCSI_OPMAP(0x03, 0x01), /* 0x02: MBOX_EXEC_FIRMWARE */
+ ISP_SCSI_OPMAP(0x1f, 0x01), /* 0x03: MBOX_DUMP_RAM */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x04: MBOX_WRITE_RAM_WORD */
+ ISP_SCSI_OPMAP(0x03, 0x07), /* 0x05: MBOX_READ_RAM_WORD */
+ ISP_SCSI_OPMAP(0x3f, 0x3f), /* 0x06: MBOX_MAILBOX_REG_TEST */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x07: MBOX_VERIFY_CHECKSUM */
+ ISP_SCSI_OPMAP(0x01, 0x0f), /* 0x08: MBOX_ABOUT_FIRMWARE */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x09: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x0a: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x0b: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x0c: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x0d: */
+ ISP_SCSI_OPMAP(0x01, 0x05), /* 0x0e: MBOX_CHECK_FIRMWARE */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x0f: */
+ ISP_SCSI_OPMAP(0x1f, 0x1f), /* 0x10: MBOX_INIT_REQ_QUEUE */
+ ISP_SCSI_OPMAP(0x3f, 0x3f), /* 0x11: MBOX_INIT_RES_QUEUE */
+ ISP_SCSI_OPMAP(0x0f, 0x0f), /* 0x12: MBOX_EXECUTE_IOCB */
+ ISP_SCSI_OPMAP(0x03, 0x03), /* 0x13: MBOX_WAKE_UP */
+ ISP_SCSI_OPMAP(0x01, 0x3f), /* 0x14: MBOX_STOP_FIRMWARE */
+ ISP_SCSI_OPMAP(0x0f, 0x0f), /* 0x15: MBOX_ABORT */
+ ISP_SCSI_OPMAP(0x03, 0x03), /* 0x16: MBOX_ABORT_DEVICE */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x17: MBOX_ABORT_TARGET */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x18: MBOX_BUS_RESET */
+ ISP_SCSI_OPMAP(0x03, 0x07), /* 0x19: MBOX_STOP_QUEUE */
+ ISP_SCSI_OPMAP(0x03, 0x07), /* 0x1a: MBOX_START_QUEUE */
+ ISP_SCSI_OPMAP(0x03, 0x07), /* 0x1b: MBOX_SINGLE_STEP_QUEUE */
+ ISP_SCSI_OPMAP(0x03, 0x07), /* 0x1c: MBOX_ABORT_QUEUE */
+ ISP_SCSI_OPMAP(0x03, 0x4f), /* 0x1d: MBOX_GET_DEV_QUEUE_STATUS */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x1e: */
+ ISP_SCSI_OPMAP(0x01, 0x07), /* 0x1f: MBOX_GET_FIRMWARE_STATUS */
+ ISP_SCSI_OPMAP(0x01, 0x07), /* 0x20: MBOX_GET_INIT_SCSI_ID */
+ ISP_SCSI_OPMAP(0x01, 0x07), /* 0x21: MBOX_GET_SELECT_TIMEOUT */
+ ISP_SCSI_OPMAP(0x01, 0xc7), /* 0x22: MBOX_GET_RETRY_COUNT */
+ ISP_SCSI_OPMAP(0x01, 0x07), /* 0x23: MBOX_GET_TAG_AGE_LIMIT */
+ ISP_SCSI_OPMAP(0x01, 0x03), /* 0x24: MBOX_GET_CLOCK_RATE */
+ ISP_SCSI_OPMAP(0x01, 0x07), /* 0x25: MBOX_GET_ACT_NEG_STATE */
+ ISP_SCSI_OPMAP(0x01, 0x07), /* 0x26: MBOX_GET_ASYNC_DATA_SETUP_TIME */
+ ISP_SCSI_OPMAP(0x01, 0x07), /* 0x27: MBOX_GET_PCI_PARAMS */
+ ISP_SCSI_OPMAP(0x03, 0x4f), /* 0x28: MBOX_GET_TARGET_PARAMS */
+ ISP_SCSI_OPMAP(0x03, 0x0f), /* 0x29: MBOX_GET_DEV_QUEUE_PARAMS */
+ ISP_SCSI_OPMAP(0x01, 0x07), /* 0x2a: MBOX_GET_RESET_DELAY_PARAMS */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x2b: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x2c: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x2d: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x2e: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x2f: */
+ ISP_SCSI_OPMAP(0x03, 0x03), /* 0x30: MBOX_SET_INIT_SCSI_ID */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x31: MBOX_SET_SELECT_TIMEOUT */
+ ISP_SCSI_OPMAP(0xc7, 0xc7), /* 0x32: MBOX_SET_RETRY_COUNT */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x33: MBOX_SET_TAG_AGE_LIMIT */
+ ISP_SCSI_OPMAP(0x03, 0x03), /* 0x34: MBOX_SET_CLOCK_RATE */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x35: MBOX_SET_ACT_NEG_STATE */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x36: MBOX_SET_ASYNC_DATA_SETUP_TIME */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x37: MBOX_SET_PCI_CONTROL_PARAMS */
+ ISP_SCSI_OPMAP(0x4f, 0x4f), /* 0x38: MBOX_SET_TARGET_PARAMS */
+ ISP_SCSI_OPMAP(0x0f, 0x0f), /* 0x39: MBOX_SET_DEV_QUEUE_PARAMS */
+ ISP_SCSI_OPMAP(0x07, 0x07), /* 0x3a: MBOX_SET_RESET_DELAY_PARAMS */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x3b: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x3c: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x3d: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x3e: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x3f: */
+ ISP_SCSI_OPMAP(0x01, 0x03), /* 0x40: MBOX_RETURN_BIOS_BLOCK_ADDR */
+ ISP_SCSI_OPMAP(0x3f, 0x01), /* 0x41: MBOX_WRITE_FOUR_RAM_WORDS */
+ ISP_SCSI_OPMAP(0x03, 0x07), /* 0x42: MBOX_EXEC_BIOS_IOCB */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x43: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x44: */
+ ISP_SCSI_OPMAP(0x03, 0x03), /* 0x45: SET SYSTEM PARAMETER */
+ ISP_SCSI_OPMAP(0x01, 0x03), /* 0x46: GET SYSTEM PARAMETER */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x47: */
+ ISP_SCSI_OPMAP(0x01, 0xcf), /* 0x48: GET SCAM CONFIGURATION */
+ ISP_SCSI_OPMAP(0xcf, 0xcf), /* 0x49: SET SCAM CONFIGURATION */
+ ISP_SCSI_OPMAP(0x03, 0x03), /* 0x4a: MBOX_SET_FIRMWARE_FEATURES */
+ ISP_SCSI_OPMAP(0x01, 0x03), /* 0x4b: MBOX_GET_FIRMWARE_FEATURES */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x4c: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x4d: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x4e: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x4f: */
+ ISP_SCSI_OPMAP(0xdf, 0xdf), /* 0x50: LOAD RAM A64 */
+ ISP_SCSI_OPMAP(0xdf, 0xdf), /* 0x51: DUMP RAM A64 */
+ ISP_SCSI_OPMAP(0xdf, 0xff), /* 0x52: INITIALIZE REQUEST QUEUE A64 */
+ ISP_SCSI_OPMAP(0xef, 0xff), /* 0x53: INITIALIZE RESPONSE QUEUE A64 */
+ ISP_SCSI_OPMAP(0xcf, 0x01), /* 0x54: EXECUCUTE COMMAND IOCB A64 */
+ ISP_SCSI_OPMAP(0x07, 0x01), /* 0x55: ENABLE TARGET MODE */
+ ISP_SCSI_OPMAP(0x03, 0x0f), /* 0x56: GET TARGET STATUS */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x57: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x58: */
+ ISP_SCSI_OPMAP(0x00, 0x00), /* 0x59: */
+ ISP_SCSI_OPMAP(0x03, 0x03), /* 0x5a: SET DATA OVERRUN RECOVERY MODE */
+ ISP_SCSI_OPMAP(0x01, 0x03), /* 0x5b: GET DATA OVERRUN RECOVERY MODE */
+ ISP_SCSI_OPMAP(0x0f, 0x0f), /* 0x5c: SET HOST DATA */
+ ISP_SCSI_OPMAP(0x01, 0x01) /* 0x5d: GET NOST DATA */
};
+#define MAX_SCSI_OPCODE 0x5d
static const char *scsi_mbcmd_names[] = {
"NO-OP",
@@ -6864,135 +6940,142 @@ static const char *scsi_mbcmd_names[] =
"GET NOST DATA",
};
+#define ISP_FC_IBITS(op) ((mbpfc[((op)<<3) + 0] << 24) | (mbpfc[((op)<<3) + 1] << 16) | (mbpfc[((op)<<3) + 2] << 8) | (mbpfc[((op)<<3) + 3]))
+#define ISP_FC_OBITS(op) ((mbpfc[((op)<<3) + 4] << 24) | (mbpfc[((op)<<3) + 5] << 16) | (mbpfc[((op)<<3) + 6] << 8) | (mbpfc[((op)<<3) + 7]))
+
+#define ISP_FC_OPMAP(in0, out0) 0, 0, 0, in0, 0, 0, 0, out0
+#define ISP_FC_OPMAP_HALF(in1, in0, out1, out0) 0, 0, in1, in0, 0, 0, out1, out0
+#define ISP_FC_OPMAP_FULL(in3, in2, in1, in0, out3, out2, out1, out0) in3, in2, in1, in0, out3, out2, out1, out0
static const uint32_t mbpfc[] = {
- ISPOPMAP(0x01, 0x01), /* 0x00: MBOX_NO_OP */
- ISPOPMAP(0x1f, 0x01), /* 0x01: MBOX_LOAD_RAM */
- ISPOPMAP(0x0f, 0x01), /* 0x02: MBOX_EXEC_FIRMWARE */
- ISPOPMAP(0xdf, 0x01), /* 0x03: MBOX_DUMP_RAM */
- ISPOPMAP(0x07, 0x07), /* 0x04: MBOX_WRITE_RAM_WORD */
- ISPOPMAP(0x03, 0x07), /* 0x05: MBOX_READ_RAM_WORD */
- ISPOPMAP(0xff, 0xff), /* 0x06: MBOX_MAILBOX_REG_TEST */
- ISPOPMAP(0x07, 0x07), /* 0x07: MBOX_VERIFY_CHECKSUM */
- ISPOPMAP(0x01, 0x4f), /* 0x08: MBOX_ABOUT_FIRMWARE */
- ISPOPMAP(0xdf, 0x01), /* 0x09: MBOX_LOAD_RISC_RAM_2100 */
- ISPOPMAP(0xdf, 0x01), /* 0x0a: DUMP RAM */
- ISPOPMAP(0x1ff, 0x01), /* 0x0b: MBOX_LOAD_RISC_RAM */
- ISPOPMAP(0x00, 0x00), /* 0x0c: */
- ISPOPMAP(0x10f, 0x01), /* 0x0d: MBOX_WRITE_RAM_WORD_EXTENDED */
- ISPOPMAP(0x01, 0x05), /* 0x0e: MBOX_CHECK_FIRMWARE */
- ISPOPMAP(0x103, 0x0d), /* 0x0f: MBOX_READ_RAM_WORD_EXTENDED */
- ISPOPMAP(0x1f, 0x11), /* 0x10: MBOX_INIT_REQ_QUEUE */
- ISPOPMAP(0x2f, 0x21), /* 0x11: MBOX_INIT_RES_QUEUE */
- ISPOPMAP(0x0f, 0x01), /* 0x12: MBOX_EXECUTE_IOCB */
- ISPOPMAP(0x03, 0x03), /* 0x13: MBOX_WAKE_UP */
- ISPOPMAP(0x01, 0xff), /* 0x14: MBOX_STOP_FIRMWARE */
- ISPOPMAP(0x4f, 0x01), /* 0x15: MBOX_ABORT */
- ISPOPMAP(0x07, 0x01), /* 0x16: MBOX_ABORT_DEVICE */
- ISPOPMAP(0x07, 0x01), /* 0x17: MBOX_ABORT_TARGET */
- ISPOPMAP(0x03, 0x03), /* 0x18: MBOX_BUS_RESET */
- ISPOPMAP(0x07, 0x05), /* 0x19: MBOX_STOP_QUEUE */
- ISPOPMAP(0x07, 0x05), /* 0x1a: MBOX_START_QUEUE */
- ISPOPMAP(0x07, 0x05), /* 0x1b: MBOX_SINGLE_STEP_QUEUE */
- ISPOPMAP(0x07, 0x05), /* 0x1c: MBOX_ABORT_QUEUE */
- ISPOPMAP(0x07, 0x03), /* 0x1d: MBOX_GET_DEV_QUEUE_STATUS */
- ISPOPMAP(0x00, 0x00), /* 0x1e: */
- ISPOPMAP(0x01, 0x07), /* 0x1f: MBOX_GET_FIRMWARE_STATUS */
- ISPOPMAP(0x01, 0x4f), /* 0x20: MBOX_GET_LOOP_ID */
- ISPOPMAP(0x00, 0x00), /* 0x21: */
- ISPOPMAP(0x01, 0x07), /* 0x22: MBOX_GET_RETRY_COUNT */
- ISPOPMAP(0x00, 0x00), /* 0x23: */
- ISPOPMAP(0x00, 0x00), /* 0x24: */
- ISPOPMAP(0x00, 0x00), /* 0x25: */
- ISPOPMAP(0x00, 0x00), /* 0x26: */
- ISPOPMAP(0x00, 0x00), /* 0x27: */
- ISPOPMAP(0x01, 0x03), /* 0x28: MBOX_GET_FIRMWARE_OPTIONS */
- ISPOPMAP(0x03, 0x07), /* 0x29: MBOX_GET_PORT_QUEUE_PARAMS */
- ISPOPMAP(0x00, 0x00), /* 0x2a: */
- ISPOPMAP(0x00, 0x00), /* 0x2b: */
- ISPOPMAP(0x00, 0x00), /* 0x2c: */
- ISPOPMAP(0x00, 0x00), /* 0x2d: */
- ISPOPMAP(0x00, 0x00), /* 0x2e: */
- ISPOPMAP(0x00, 0x00), /* 0x2f: */
- ISPOPMAP(0x00, 0x00), /* 0x30: */
- ISPOPMAP(0x00, 0x00), /* 0x31: */
- ISPOPMAP(0x07, 0x07), /* 0x32: MBOX_SET_RETRY_COUNT */
- ISPOPMAP(0x00, 0x00), /* 0x33: */
- ISPOPMAP(0x00, 0x00), /* 0x34: */
- ISPOPMAP(0x00, 0x00), /* 0x35: */
- ISPOPMAP(0x00, 0x00), /* 0x36: */
- ISPOPMAP(0x00, 0x00), /* 0x37: */
- ISPOPMAP(0x0f, 0x01), /* 0x38: MBOX_SET_FIRMWARE_OPTIONS */
- ISPOPMAP(0x0f, 0x07), /* 0x39: MBOX_SET_PORT_QUEUE_PARAMS */
- ISPOPMAP(0x00, 0x00), /* 0x3a: */
- ISPOPMAP(0x00, 0x00), /* 0x3b: */
- ISPOPMAP(0x00, 0x00), /* 0x3c: */
- ISPOPMAP(0x00, 0x00), /* 0x3d: */
- ISPOPMAP(0x00, 0x00), /* 0x3e: */
- ISPOPMAP(0x00, 0x00), /* 0x3f: */
- ISPOPMAP(0x03, 0x01), /* 0x40: MBOX_LOOP_PORT_BYPASS */
- ISPOPMAP(0x03, 0x01), /* 0x41: MBOX_LOOP_PORT_ENABLE */
- ISPOPMAP(0x03, 0x07), /* 0x42: MBOX_GET_RESOURCE_COUNT */
- ISPOPMAP(0x01, 0x01), /* 0x43: MBOX_REQUEST_OFFLINE_MODE */
- ISPOPMAP(0x00, 0x00), /* 0x44: */
- ISPOPMAP(0x00, 0x00), /* 0x45: */
- ISPOPMAP(0x00, 0x00), /* 0x46: */
- ISPOPMAP(0xcf, 0x03), /* 0x47: GET PORT_DATABASE ENHANCED */
- ISPOPMAP(0xcd, 0x01), /* 0x48: MBOX_INIT_FIRMWARE_MULTI_ID */
- ISPOPMAP(0xcd, 0x01), /* 0x49: MBOX_GET_VP_DATABASE */
- ISPOPMAP(0x2cd, 0x01), /* 0x4a: MBOX_GET_VP_DATABASE_ENTRY */
- ISPOPMAP(0x00, 0x00), /* 0x4b: */
- ISPOPMAP(0x00, 0x00), /* 0x4c: */
- ISPOPMAP(0x00, 0x00), /* 0x4d: */
- ISPOPMAP(0x00, 0x00), /* 0x4e: */
- ISPOPMAP(0x00, 0x00), /* 0x4f: */
- ISPOPMAP(0x00, 0x00), /* 0x50: */
- ISPOPMAP(0x00, 0x00), /* 0x51: */
- ISPOPMAP(0x00, 0x00), /* 0x52: */
- ISPOPMAP(0x00, 0x00), /* 0x53: */
- ISPOPMAP(0xcf, 0x01), /* 0x54: EXECUTE IOCB A64 */
- ISPOPMAP(0x00, 0x00), /* 0x55: */
- ISPOPMAP(0x00, 0x00), /* 0x56: */
- ISPOPMAP(0x00, 0x00), /* 0x57: */
- ISPOPMAP(0x00, 0x00), /* 0x58: */
- ISPOPMAP(0x00, 0x00), /* 0x59: */
- ISPOPMAP(0x00, 0x00), /* 0x5a: */
- ISPOPMAP(0x03, 0x01), /* 0x5b: MBOX_DRIVER_HEARTBEAT */
- ISPOPMAP(0xcf, 0x01), /* 0x5c: MBOX_FW_HEARTBEAT */
- ISPOPMAP(0x07, 0x03), /* 0x5d: MBOX_GET_SET_DATA_RATE */
- ISPOPMAP(0x00, 0x00), /* 0x5e: */
- ISPOPMAP(0x00, 0x00), /* 0x5f: */
- ISPOPMAP(0xcd, 0x01), /* 0x60: MBOX_INIT_FIRMWARE */
- ISPOPMAP(0x00, 0x00), /* 0x61: */
- ISPOPMAP(0x01, 0x01), /* 0x62: MBOX_INIT_LIP */
- ISPOPMAP(0xcd, 0x03), /* 0x63: MBOX_GET_FC_AL_POSITION_MAP */
- ISPOPMAP(0xcf, 0x01), /* 0x64: MBOX_GET_PORT_DB */
- ISPOPMAP(0x07, 0x01), /* 0x65: MBOX_CLEAR_ACA */
- ISPOPMAP(0x07, 0x01), /* 0x66: MBOX_TARGET_RESET */
- ISPOPMAP(0x07, 0x01), /* 0x67: MBOX_CLEAR_TASK_SET */
- ISPOPMAP(0x07, 0x01), /* 0x68: MBOX_ABORT_TASK_SET */
- ISPOPMAP(0x01, 0x07), /* 0x69: MBOX_GET_FW_STATE */
- ISPOPMAP(0x03, 0xcf), /* 0x6a: MBOX_GET_PORT_NAME */
- ISPOPMAP(0xcf, 0x01), /* 0x6b: MBOX_GET_LINK_STATUS */
- ISPOPMAP(0x0f, 0x01), /* 0x6c: MBOX_INIT_LIP_RESET */
- ISPOPMAP(0x00, 0x00), /* 0x6d: */
- ISPOPMAP(0xcf, 0x03), /* 0x6e: MBOX_SEND_SNS */
- ISPOPMAP(0x0f, 0x07), /* 0x6f: MBOX_FABRIC_LOGIN */
- ISPOPMAP(0x03, 0x01), /* 0x70: MBOX_SEND_CHANGE_REQUEST */
- ISPOPMAP(0x03, 0x03), /* 0x71: MBOX_FABRIC_LOGOUT */
- ISPOPMAP(0x0f, 0x0f), /* 0x72: MBOX_INIT_LIP_LOGIN */
- ISPOPMAP(0x00, 0x00), /* 0x73: */
- ISPOPMAP(0x07, 0x01), /* 0x74: LOGIN LOOP PORT */
- ISPOPMAP(0xcf, 0x03), /* 0x75: GET PORT/NODE NAME LIST */
- ISPOPMAP(0x4f, 0x01), /* 0x76: SET VENDOR ID */
- ISPOPMAP(0xcd, 0x01), /* 0x77: INITIALIZE IP MAILBOX */
- ISPOPMAP(0x00, 0x00), /* 0x78: */
- ISPOPMAP(0x00, 0x00), /* 0x79: */
- ISPOPMAP(0x00, 0x00), /* 0x7a: */
- ISPOPMAP(0x00, 0x00), /* 0x7b: */
- ISPOPMAP(0x4f, 0x03), /* 0x7c: Get ID List */
- ISPOPMAP(0xcf, 0x01), /* 0x7d: SEND LFA */
- ISPOPMAP(0x0f, 0x01) /* 0x7e: LUN RESET */
+ ISP_FC_OPMAP(0x01, 0x01), /* 0x00: MBOX_NO_OP */
+ ISP_FC_OPMAP(0x1f, 0x01), /* 0x01: MBOX_LOAD_RAM */
+ ISP_FC_OPMAP(0x0f, 0x01), /* 0x02: MBOX_EXEC_FIRMWARE */
+ ISP_FC_OPMAP(0xdf, 0x01), /* 0x03: MBOX_DUMP_RAM */
+ ISP_FC_OPMAP(0x07, 0x07), /* 0x04: MBOX_WRITE_RAM_WORD */
+ ISP_FC_OPMAP(0x03, 0x07), /* 0x05: MBOX_READ_RAM_WORD */
+ ISP_FC_OPMAP_FULL(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff), /* 0x06: MBOX_MAILBOX_REG_TEST */
+ ISP_FC_OPMAP(0x07, 0x07), /* 0x07: MBOX_VERIFY_CHECKSUM */
+ ISP_FC_OPMAP_FULL(0x0, 0x0, 0x0, 0x01, 0x0, 0x3, 0x80, 0x4f), /* 0x08: MBOX_ABOUT_FIRMWARE */
+ ISP_FC_OPMAP(0xdf, 0x01), /* 0x09: MBOX_LOAD_RISC_RAM_2100 */
+ ISP_FC_OPMAP(0xdf, 0x01), /* 0x0a: DUMP RAM */
+ ISP_FC_OPMAP_HALF(0x1, 0xff, 0x0, 0x01), /* 0x0b: MBOX_LOAD_RISC_RAM */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x0c: */
+ ISP_FC_OPMAP_HALF(0x1, 0x0f, 0x0, 0x01), /* 0x0d: MBOX_WRITE_RAM_WORD_EXTENDED */
+ ISP_FC_OPMAP(0x01, 0x05), /* 0x0e: MBOX_CHECK_FIRMWARE */
+ ISP_FC_OPMAP_HALF(0x1, 0x03, 0x0, 0x0d), /* 0x0f: MBOX_READ_RAM_WORD_EXTENDED */
+ ISP_FC_OPMAP(0x1f, 0x11), /* 0x10: MBOX_INIT_REQ_QUEUE */
+ ISP_FC_OPMAP(0x2f, 0x21), /* 0x11: MBOX_INIT_RES_QUEUE */
+ ISP_FC_OPMAP(0x0f, 0x01), /* 0x12: MBOX_EXECUTE_IOCB */
+ ISP_FC_OPMAP(0x03, 0x03), /* 0x13: MBOX_WAKE_UP */
+ ISP_FC_OPMAP(0x01, 0xff), /* 0x14: MBOX_STOP_FIRMWARE */
+ ISP_FC_OPMAP(0x4f, 0x01), /* 0x15: MBOX_ABORT */
+ ISP_FC_OPMAP(0x07, 0x01), /* 0x16: MBOX_ABORT_DEVICE */
+ ISP_FC_OPMAP(0x07, 0x01), /* 0x17: MBOX_ABORT_TARGET */
+ ISP_FC_OPMAP(0x03, 0x03), /* 0x18: MBOX_BUS_RESET */
+ ISP_FC_OPMAP(0x07, 0x05), /* 0x19: MBOX_STOP_QUEUE */
+ ISP_FC_OPMAP(0x07, 0x05), /* 0x1a: MBOX_START_QUEUE */
+ ISP_FC_OPMAP(0x07, 0x05), /* 0x1b: MBOX_SINGLE_STEP_QUEUE */
+ ISP_FC_OPMAP(0x07, 0x05), /* 0x1c: MBOX_ABORT_QUEUE */
+ ISP_FC_OPMAP(0x07, 0x03), /* 0x1d: MBOX_GET_DEV_QUEUE_STATUS */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x1e: */
+ ISP_FC_OPMAP(0x01, 0x07), /* 0x1f: MBOX_GET_FIRMWARE_STATUS */
+ ISP_FC_OPMAP_HALF(0x2, 0x01, 0x0, 0xcf), /* 0x20: MBOX_GET_LOOP_ID */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x21: */
+ ISP_FC_OPMAP(0x01, 0x07), /* 0x22: MBOX_GET_RETRY_COUNT */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x23: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x24: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x25: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x26: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x27: */
+ ISP_FC_OPMAP(0x01, 0x03), /* 0x28: MBOX_GET_FIRMWARE_OPTIONS */
+ ISP_FC_OPMAP(0x03, 0x07), /* 0x29: MBOX_GET_PORT_QUEUE_PARAMS */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x2a: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x2b: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x2c: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x2d: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x2e: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x2f: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x30: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x31: */
+ ISP_FC_OPMAP(0x07, 0x07), /* 0x32: MBOX_SET_RETRY_COUNT */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x33: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x34: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x35: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x36: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x37: */
+ ISP_FC_OPMAP(0x0f, 0x01), /* 0x38: MBOX_SET_FIRMWARE_OPTIONS */
+ ISP_FC_OPMAP(0x0f, 0x07), /* 0x39: MBOX_SET_PORT_QUEUE_PARAMS */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x3a: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x3b: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x3c: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x3d: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x3e: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x3f: */
+ ISP_FC_OPMAP(0x03, 0x01), /* 0x40: MBOX_LOOP_PORT_BYPASS */
+ ISP_FC_OPMAP(0x03, 0x01), /* 0x41: MBOX_LOOP_PORT_ENABLE */
+ ISP_FC_OPMAP_HALF(0x3, 0xcf, 0x0, 0x07), /* 0x42: MBOX_GET_RESOURCE_COUNT */
+ ISP_FC_OPMAP(0x01, 0x01), /* 0x43: MBOX_REQUEST_OFFLINE_MODE */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x44: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x45: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x46: */
+ ISP_FC_OPMAP(0xcf, 0x03), /* 0x47: GET PORT_DATABASE ENHANCED */
+ ISP_FC_OPMAP(0xcd, 0x01), /* 0x48: MBOX_INIT_FIRMWARE_MULTI_ID */
+ ISP_FC_OPMAP(0xcd, 0x01), /* 0x49: MBOX_GET_VP_DATABASE */
+ ISP_FC_OPMAP_HALF(0x2, 0xcd, 0x0, 0x01), /* 0x4a: MBOX_GET_VP_DATABASE_ENTRY */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x4b: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x4c: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x4d: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x4e: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x4f: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x50: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x51: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x52: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x53: */
+ ISP_FC_OPMAP(0xcf, 0x01), /* 0x54: EXECUTE IOCB A64 */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x55: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x56: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x57: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x58: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x59: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x5a: */
+ ISP_FC_OPMAP(0x03, 0x01), /* 0x5b: MBOX_DRIVER_HEARTBEAT */
+ ISP_FC_OPMAP(0xcf, 0x01), /* 0x5c: MBOX_FW_HEARTBEAT */
+ ISP_FC_OPMAP(0x07, 0x03), /* 0x5d: MBOX_GET_SET_DATA_RATE */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x5e: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x5f: */
+ ISP_FC_OPMAP(0xcd, 0x01), /* 0x60: MBOX_INIT_FIRMWARE */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x61: */
+ ISP_FC_OPMAP(0x01, 0x01), /* 0x62: MBOX_INIT_LIP */
+ ISP_FC_OPMAP(0xcd, 0x03), /* 0x63: MBOX_GET_FC_AL_POSITION_MAP */
+ ISP_FC_OPMAP(0xcf, 0x01), /* 0x64: MBOX_GET_PORT_DB */
+ ISP_FC_OPMAP(0x07, 0x01), /* 0x65: MBOX_CLEAR_ACA */
+ ISP_FC_OPMAP(0x07, 0x01), /* 0x66: MBOX_TARGET_RESET */
+ ISP_FC_OPMAP(0x07, 0x01), /* 0x67: MBOX_CLEAR_TASK_SET */
+ ISP_FC_OPMAP(0x07, 0x01), /* 0x68: MBOX_ABORT_TASK_SET */
+ ISP_FC_OPMAP(0x01, 0x07), /* 0x69: MBOX_GET_FW_STATE */
+ ISP_FC_OPMAP(0x03, 0xcf), /* 0x6a: MBOX_GET_PORT_NAME */
+ ISP_FC_OPMAP(0xcf, 0x01), /* 0x6b: MBOX_GET_LINK_STATUS */
+ ISP_FC_OPMAP(0x0f, 0x01), /* 0x6c: MBOX_INIT_LIP_RESET */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x6d: */
+ ISP_FC_OPMAP(0xcf, 0x03), /* 0x6e: MBOX_SEND_SNS */
+ ISP_FC_OPMAP(0x0f, 0x07), /* 0x6f: MBOX_FABRIC_LOGIN */
+ ISP_FC_OPMAP(0x03, 0x01), /* 0x70: MBOX_SEND_CHANGE_REQUEST */
+ ISP_FC_OPMAP(0x03, 0x03), /* 0x71: MBOX_FABRIC_LOGOUT */
+ ISP_FC_OPMAP(0x0f, 0x0f), /* 0x72: MBOX_INIT_LIP_LOGIN */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x73: */
+ ISP_FC_OPMAP(0x07, 0x01), /* 0x74: LOGIN LOOP PORT */
+ ISP_FC_OPMAP(0xcf, 0x03), /* 0x75: GET PORT/NODE NAME LIST */
+ ISP_FC_OPMAP(0x4f, 0x01), /* 0x76: SET VENDOR ID */
+ ISP_FC_OPMAP(0xcd, 0x01), /* 0x77: INITIALIZE IP MAILBOX */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x78: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x79: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x7a: */
+ ISP_FC_OPMAP(0x00, 0x00), /* 0x7b: */
+ ISP_FC_OPMAP(0x4f, 0x03), /* 0x7c: Get ID List */
+ ISP_FC_OPMAP(0xcf, 0x01), /* 0x7d: SEND LFA */
+ ISP_FC_OPMAP(0x0f, 0x01) /* 0x7e: LUN RESET */
};
+#define MAX_FC_OPCODE 0x7e
/*
* Footnotes
*
@@ -7136,19 +7219,18 @@ static void
isp_mboxcmd_qnw(ispsoftc_t *isp, mbreg_t *mbp, int nodelay)
{
unsigned int ibits, obits, box, opcode;
- const uint32_t *mcp;
+ opcode = mbp->param[0];
if (IS_FC(isp)) {
- mcp = mbpfc;
+ ibits = ISP_FC_IBITS(opcode);
+ obits = ISP_FC_OBITS(opcode);
} else {
- mcp = mbpscsi;
+ ibits = ISP_SCSI_IBITS(opcode);
+ obits = ISP_SCSI_OBITS(opcode);
}
- opcode = mbp->param[0];
- ibits = HIWRD(mcp[opcode]) & NMBOX_BMASK(isp);
- obits = LOWRD(mcp[opcode]) & NMBOX_BMASK(isp);
ibits |= mbp->ibits;
obits |= mbp->obits;
- for (box = 0; box < MAX_MAILBOX(isp); box++) {
+ for (box = 0; box < ISP_NMBOX(isp); box++) {
if (ibits & (1 << box)) {
ISP_WRITE(isp, MBOX_OFF(box), mbp->param[box]);
}
@@ -7181,26 +7263,27 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mb
{
const char *cname, *xname;
char tname[16], mname[16];
- unsigned int lim, ibits, obits, box, opcode;
- const uint32_t *mcp;
+ unsigned int ibits, obits, box, opcode;
+ opcode = mbp->param[0];
if (IS_FC(isp)) {
- mcp = mbpfc;
- lim = (sizeof (mbpfc) / sizeof (mbpfc[0]));
+ if (opcode > MAX_FC_OPCODE) {
+ mbp->param[0] = MBOX_INVALID_COMMAND;
+ isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode);
+ return;
+ }
+ ibits = ISP_FC_IBITS(opcode);
+ obits = ISP_FC_OBITS(opcode);
} else {
- mcp = mbpscsi;
- lim = (sizeof (mbpscsi) / sizeof (mbpscsi[0]));
- }
-
- if ((opcode = mbp->param[0]) >= lim) {
- mbp->param[0] = MBOX_INVALID_COMMAND;
- isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode);
- return;
+ if (opcode > MAX_SCSI_OPCODE) {
+ mbp->param[0] = MBOX_INVALID_COMMAND;
+ isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode);
+ return;
+ }
+ ibits = ISP_SCSI_IBITS(opcode);
+ obits = ISP_SCSI_OBITS(opcode);
}
- ibits = HIWRD(mcp[opcode]) & NMBOX_BMASK(isp);
- obits = LOWRD(mcp[opcode]) & NMBOX_BMASK(isp);
-
/*
* Pick up any additional bits that the caller might have set.
*/
@@ -7221,7 +7304,7 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mb
goto out;
}
- for (box = 0; box < MAX_MAILBOX(isp); box++) {
+ for (box = 0; box < ISP_NMBOX(isp); box++) {
if (ibits & (1 << box)) {
isp_prt(isp, ISP_LOGDEBUG3, "IN mbox %d = 0x%04x", box,
mbp->param[box]);
@@ -7264,7 +7347,7 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mb
/*
* Copy back output registers.
*/
- for (box = 0; box < MAX_MAILBOX(isp); box++) {
+ for (box = 0; box < ISP_NMBOX(isp); box++) {
if (obits & (1 << box)) {
mbp->param[box] = isp->isp_mboxtmp[box];
isp_prt(isp, ISP_LOGDEBUG3, "OUT mbox %d = 0x%04x", box,
@@ -7964,8 +8047,7 @@ isp_parse_nvram_1020(ispsoftc_t *isp, ui
(ISP_NVRAM_FIFO_THRESHOLD_128(nvram_data) << 2);
if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0)
- sdp->isp_initiator_id =
- ISP_NVRAM_INITIATOR_ID(nvram_data);
+ sdp->isp_initiator_id = ISP_NVRAM_INITIATOR_ID(nvram_data);
sdp->isp_bus_reset_delay =
ISP_NVRAM_BUS_RESET_DELAY(nvram_data);
@@ -8076,8 +8158,7 @@ isp_parse_nvram_1080(ispsoftc_t *isp, in
ISP1080_NVRAM_FIFO_THRESHOLD(nvram_data);
if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0)
- sdp->isp_initiator_id =
- ISP1080_NVRAM_INITIATOR_ID(nvram_data, bus);
+ sdp->isp_initiator_id = ISP1080_NVRAM_INITIATOR_ID(nvram_data, bus);
sdp->isp_bus_reset_delay =
ISP1080_NVRAM_BUS_RESET_DELAY(nvram_data, bus);
@@ -8152,8 +8233,7 @@ isp_parse_nvram_12160(ispsoftc_t *isp, i
ISP12160_NVRAM_FIFO_THRESHOLD(nvram_data);
if ((isp->isp_confopts & ISP_CFG_OWNLOOPID) == 0)
- sdp->isp_initiator_id =
- ISP12160_NVRAM_INITIATOR_ID(nvram_data, bus);
+ sdp->isp_initiator_id = ISP12160_NVRAM_INITIATOR_ID(nvram_data, bus);
sdp->isp_bus_reset_delay =
ISP12160_NVRAM_BUS_RESET_DELAY(nvram_data, bus);
Modified: stable/9/sys/dev/isp/isp_freebsd.h
==============================================================================
--- stable/9/sys/dev/isp/isp_freebsd.h Sun Sep 2 14:41:29 2012 (r240008)
+++ stable/9/sys/dev/isp/isp_freebsd.h Sun Sep 2 14:44:09 2012 (r240009)
@@ -145,6 +145,7 @@ struct isp_pcmd {
bus_dmamap_t dmap; /* dma map for this command */
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-stable-9
mailing list