Remove ISP2100_FABRIC (we're always fabric now). Fix usage of isp_lastmbxcmd

to report the mailbox command that times out. Fix isp_unswizzle_sns_rsp
which for reasons *I* find obscurer just doesn't work correctly on sparc64
with words past 128. I have no idea why this *does* work on SparcLinux.
This commit is contained in:
mjacob 2001-02-12 23:32:11 +00:00
parent 25bc760687
commit 4409fa23b2
1 changed files with 10 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: isp_netbsd.h,v 1.35 2001/01/05 07:03:54 mjacob Exp $ */ /* $NetBSD: isp_netbsd.h,v 1.36 2001/02/12 23:32:11 mjacob Exp $ */
/* /*
* This driver, which is contained in NetBSD in the files: * This driver, which is contained in NetBSD in the files:
* *
@ -116,7 +116,6 @@ struct isposinfo {
#define INLINE inline #define INLINE inline
#define ISP2100_FABRIC 1
#define ISP2100_SCRLEN 0x400 #define ISP2100_SCRLEN 0x400
#define MEMZERO bzero #define MEMZERO bzero
@ -394,7 +393,7 @@ isp_wait_complete(isp)
if (isp->isp_mboxbsy != 0) { if (isp->isp_mboxbsy != 0) {
isp_prt(isp, ISP_LOGWARN, isp_prt(isp, ISP_LOGWARN,
"Polled Mailbox Command (0x%x) Timeout", "Polled Mailbox Command (0x%x) Timeout",
isp->isp_mboxtmp[0]); isp->isp_lastmbxcmd);
} }
} else { } else {
int rv = 0; int rv = 0;
@ -416,7 +415,7 @@ isp_wait_complete(isp)
isp->isp_osinfo.mboxwaiting = 0; isp->isp_osinfo.mboxwaiting = 0;
isp_prt(isp, ISP_LOGWARN, isp_prt(isp, ISP_LOGWARN,
"Interrupting Mailbox Command (0x%x) Timeout", "Interrupting Mailbox Command (0x%x) Timeout",
isp->isp_mboxtmp[0]); isp->isp_lastmbxcmd);
} }
} }
} }
@ -584,6 +583,13 @@ static inline void
isp_unswizzle_sns_rsp(struct ispsoftc *isp, sns_scrsp_t *resp, int nwords) isp_unswizzle_sns_rsp(struct ispsoftc *isp, sns_scrsp_t *resp, int nwords)
{ {
int index; int index;
/*
* Don't even think about asking. This. Is. So. Lame.
*/
if (IS_2200(isp) &&
ISP_FW_REVX(isp->isp_fwrev) == ISP_FW_REV(2, 1, 26)) {
nwords = 128;
}
for (index = 0; index < nwords; index++) { for (index = 0; index < nwords; index++) {
resp->snscb_data[index] = bswap16(resp->snscb_data[index]); resp->snscb_data[index] = bswap16(resp->snscb_data[index]);
} }