PERFORCE change 108242 for review
Matt Jacob
mjacob at FreeBSD.org
Sat Oct 21 13:40:55 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=108242
Change 108242 by mjacob at newisp on 2006/10/21 20:40:27
Affected files ...
.. //depot/projects/newisp/dev/isp/isp.c#21 edit
.. //depot/projects/newisp/dev/isp/isp_target.c#9 edit
.. //depot/projects/newisp/dev/isp/ispvar.h#9 edit
Differences ...
==== //depot/projects/newisp/dev/isp/isp.c#21 (text+ko) ====
@@ -961,6 +961,7 @@
MEMZERO(&mbs, sizeof (mbs));
+ mbs.timeout = 1000000;
mbs.param[0] = MBOX_EXEC_FIRMWARE;
if (IS_24XX(isp)) {
mbs.param[1] = code_org >> 16;
@@ -982,7 +983,6 @@
}
mbs.logval = MBLOGALL;
- mbs.timeout = 2000000;
isp_mboxcmd(isp, &mbs);
if (IS_2322(isp) || IS_24XX(isp)) {
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
@@ -993,7 +993,7 @@
/*
* Give it a chance to finish starting up.
*/
- USEC_DELAY(1000);
+ USEC_DELAY(250000);
if (IS_SCSI(isp)) {
/*
@@ -1043,7 +1043,7 @@
isp->isp_fwrev[2] = mbs.param[3];
}
- isp_prt(isp, ISP_LOGCONFIG,
+ isp_prt(isp, ISP_LOGALL,
"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]);
@@ -2288,18 +2288,18 @@
return (0);
case MBOX_COMMAND_ERROR:
- isp_prt(isp, ISP_LOGERR,
+ isp_prt(isp, ISP_LOGINFO,
"isp_port_login: error 0x%x in PLOGI to port 0x%06x",
mbs.param[1], portid);
return (MBOX_COMMAND_ERROR);
case MBOX_ALL_IDS_USED:
- isp_prt(isp, ISP_LOGERR,
+ isp_prt(isp, ISP_LOGINFO,
"isp_port_login: all IDs used for fabric login");
return (MBOX_ALL_IDS_USED);
default:
- isp_prt(isp, ISP_LOGERR,
+ isp_prt(isp, ISP_LOGINFO,
"isp_port_login: error 0x%x on port login of 0x%06x at 0x%0x",
mbs.param[0], portid, handle);
return (mbs.param[0]);
@@ -2384,12 +2384,12 @@
static uint64_t
isp_get_portname(ispsoftc_t *isp, int loopid, int nodename)
{
- uint64_t wwn = 0;
+ uint64_t wwn = (uint64_t) -1;
mbreg_t mbs;
MEMZERO(&mbs, sizeof (mbs));
mbs.param[0] = MBOX_GET_PORT_NAME;
- if (FCPARAM(isp)->isp_2klogin) {
+ if (FCPARAM(isp)->isp_2klogin || IS_24XX(isp)) {
mbs.param[1] = loopid;
mbs.ibits = (1 << 10);
if (nodename) {
@@ -2402,8 +2402,22 @@
}
}
mbs.logval = MBLOGALL & ~MBOX_COMMAND_PARAM_ERROR;
+ mbs.timeout = 30000;
isp_mboxcmd(isp, &mbs);
- if (mbs.param[0] == MBOX_COMMAND_COMPLETE) {
+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
+ return (wwn);
+ }
+ if (IS_24XX(isp)) {
+ wwn =
+ (((uint64_t)(mbs.param[2] >> 8)) << 56) |
+ (((uint64_t)(mbs.param[2] & 0xff)) << 48) |
+ (((uint64_t)(mbs.param[3] >> 8)) << 40) |
+ (((uint64_t)(mbs.param[3] & 0xff)) << 32) |
+ (((uint64_t)(mbs.param[6] >> 8)) << 24) |
+ (((uint64_t)(mbs.param[6] & 0xff)) << 16) |
+ (((uint64_t)(mbs.param[7] >> 8)) << 8) |
+ (((uint64_t)(mbs.param[7] & 0xff)));
+ } else {
wwn =
(((uint64_t)(mbs.param[2] & 0xff)) << 56) |
(((uint64_t)(mbs.param[2] >> 8)) << 48) |
@@ -3713,7 +3727,7 @@
}
if (i == lim) {
- isp_prt(isp, ISP_LOGERR, "PLOGI 0x%06x failed", portid);
+ isp_prt(isp, ISP_LOGINFO, "PLOGI 0x%06x failed", portid);
return (-1);
}
@@ -3734,7 +3748,7 @@
if (p->handle != handle || p->portid != portid) {
isp_prt(isp, ISP_LOGERR,
- "new device 0x%06x at 0x%x changed (0x%06x at 0x%0x",
+ "new device 0x%06x at 0x%x changed (0x%06x at 0x%0x)",
portid, handle, p->portid, p->handle);
return (-1);
}
@@ -4363,6 +4377,17 @@
}
break;
+ case ISPCTL_GET_PORTNAME:
+ {
+ uint64_t *wwnp = arg;
+ int loopid = *wwnp;
+ *wwnp = isp_get_portname(isp, loopid, 0);
+ if (*wwnp == (uint64_t) -1) {
+ break;
+ } else {
+ return (0);
+ }
+ }
case ISPCTL_RUN_MBOXCMD:
isp_mboxcmd(isp, arg);
==== //depot/projects/newisp/dev/isp/isp_target.c#9 (text+ko) ====
@@ -183,7 +183,7 @@
len = at7iop->at_ta_len & 0xfffff;
if (len > (QENTRY_LEN - 8)) {
len -= (QENTRY_LEN - 8);
- isp_prt(isp, ISP_LOGWARN,
+ isp_prt(isp, ISP_LOGINFO,
"long IU length (%d) ignored", len);
while (len > 0) {
*optrp = ISP_NXT_QENTRY(*optrp,
@@ -273,7 +273,7 @@
&local);
break;
default:
- isp_prt(isp, ISP_LOGERR,
+ isp_prt(isp, ISP_LOGINFO,
"isp_target_notify: unknown status (0x%x)",
status);
isp_notify_ack(isp, local);
@@ -316,7 +316,7 @@
}
break;
case IN_RSRC_UNAVAIL:
- isp_prt(isp, ISP_LOGWARN, "Firmware out of ATIOs");
+ isp_prt(isp, ISP_LOGINFO, "Firmware out of ATIOs");
isp_notify_ack(isp, local);
break;
case IN_RESET:
@@ -345,7 +345,7 @@
(void) isp_async(isp, ISPASYNC_TARGET_ACTION, &local);
break;
default:
- isp_prt(isp, ISP_LOGERR,
+ isp_prt(isp, ISP_LOGINFO,
"isp_target_notify: unknown status (0x%x)",
status);
isp_notify_ack(isp, local);
@@ -363,7 +363,7 @@
(na_fcentry_24xx_t *) local);
nack_24xx = (na_fcentry_24xx_t *) local;
if (nack_24xx->na_status != NA_OK) {
- level = ISP_LOGERR;
+ level = ISP_LOGINFO;
} else {
level = ISP_LOGTDEBUG1;
}
@@ -381,7 +381,7 @@
}
nack_fcp = (na_fcentry_t *)local;
if (nack_fcp->na_status != NA_OK) {
- level = ISP_LOGERR;
+ level = ISP_LOGINFO;
} else {
level = ISP_LOGTDEBUG1;
}
@@ -392,7 +392,7 @@
isp_get_notify_ack(isp, nackp, (na_entry_t *)local);
nackp = (na_entry_t *)local;
if (nackp->na_status != NA_OK) {
- level = ISP_LOGERR;
+ level = ISP_LOGINFO;
} else {
level = ISP_LOGTDEBUG1;
}
@@ -409,10 +409,11 @@
case RQSTYPE_ABTS_RSP:
isp_get_abts_rsp(isp, abts_rsp, (abts_rsp_t *)local);
abts_rsp = (abts_rsp_t *) local;
- if (abts_rsp->abts_rsp_status)
- level = ISP_LOGERR;
- else
+ if (abts_rsp->abts_rsp_status) {
+ level = ISP_LOGINFO;
+ } else {
level = ISP_LOGTDEBUG0;
+ }
isp_prt(isp, level,
"ABTS RSP response[0x%x]: status=0x%x sub=(0x%x 0x%x)",
abts_rsp->abts_rsp_rxid_task, abts_rsp->abts_rsp_status,
@@ -658,6 +659,10 @@
cto->rsp.m1.ct_resp[12] = (code >> 24) & 0xff;
cto->rsp.m1.ct_resp[13] = (code >> 16) & 0xff;
}
+ if (aep->at_cmnd.cdb_dl.sf.fcp_cmnd_dl) {
+ cto->ct_resid = aep->at_cmnd.cdb_dl.sf.fcp_cmnd_dl;
+ cto->ct_scsi_status |= CT2_DATA_UNDER;
+ }
cto->ct_syshandle = hdl;
} else if (IS_FC(isp)) {
at2_entry_t *aep = arg;
@@ -730,8 +735,8 @@
if (!IS_24XX(isp)) {
return (-1);
}
- isp_prt(isp, ISP_LOGTDEBUG0,
- "isp_terminate_cmd: tag 0x%0x is being terminated",
+ isp_prt(isp, ISP_LOGINFO,
+ "isp_terminate_cmd: [0x%0x] is being terminated",
tmd->cd_tagval);
MEMZERO(&local, sizeof (local));
cto->ct_header.rqs_entry_type = RQSTYPE_CTIO7;
@@ -1738,7 +1743,7 @@
*/
if (ct->ct_syshandle == 0) {
if (ct->ct_flags & CT7_TERMINATE) {
- isp_prt(isp, ISP_LOGALL,
+ isp_prt(isp, ISP_LOGINFO,
"termination of 0x%x complete",
ct->ct_rxid);
} else if ((ct->ct_flags & CT7_SENDSTATUS) == 0) {
==== //depot/projects/newisp/dev/isp/ispvar.h#9 (text+ko) ====
@@ -755,6 +755,7 @@
ISPCTL_SCAN_LOOP, /* (Re)scan Local Loop */
ISPCTL_PDB_SYNC, /* Synchronize Port Database */
ISPCTL_SEND_LIP, /* Send a LIP */
+ ISPCTL_GET_PORTNAME, /* get portname from an N-port handle */
ISPCTL_RUN_MBOXCMD, /* run a mailbox command */
ISPCTL_TOGGLE_TMODE, /* toggle target mode */
ISPCTL_GET_PDB /* get a single port database entry */
More information about the p4-projects
mailing list