PERFORCE change 108100 for review
Matt Jacob
mjacob at FreeBSD.org
Thu Oct 19 09:16:35 PDT 2006
http://perforce.freebsd.org/chv.cgi?CH=108100
Change 108100 by mjacob at newisp on 2006/10/19 16:15:44
So, make sure we actually *do* retry the isp_update operation
if the mailbox command fails.
Affected files ...
.. //depot/projects/newisp/dev/isp/isp.c#19 edit
Differences ...
==== //depot/projects/newisp/dev/isp/isp.c#19 (text+ko) ====
@@ -3992,7 +3992,6 @@
target = fcp->portdb[i - 1].handle;
}
-#if 0
/*
* Next check to see if any HBA or Device parameters need to be updated.
*/
@@ -4000,8 +3999,6 @@
isp_update(isp);
}
-#endif
-
start_again:
if (isp_getrqentry(isp, &nxti, &optr, (void *)&qep)) {
@@ -6800,17 +6797,16 @@
*/
if (sdp->isp_devparam[tgt].dev_refresh) {
mbs.param[0] = MBOX_GET_TARGET_PARAMS;
- sdp->isp_devparam[tgt].dev_refresh = 0;
get = 1;
} else if (sdp->isp_devparam[tgt].dev_update) {
mbs.param[0] = MBOX_SET_TARGET_PARAMS;
+
/*
* Make sure goal_flags has "Renegotiate on Error"
* on and "Freeze Queue on Error" off.
*/
sdp->isp_devparam[tgt].goal_flags |= DPARM_RENEG;
sdp->isp_devparam[tgt].goal_flags &= ~DPARM_QFRZ;
-
mbs.param[2] = sdp->isp_devparam[tgt].goal_flags;
/*
@@ -6844,8 +6840,6 @@
"bus %d set tgt %d flags 0x%x off 0x%x period 0x%x",
bus, tgt, mbs.param[2], mbs.param[3] >> 8,
mbs.param[3] & 0xff);
- sdp->isp_devparam[tgt].dev_update = 0;
- sdp->isp_devparam[tgt].dev_refresh = 1;
get = 0;
} else {
continue;
@@ -6853,18 +6847,24 @@
mbs.param[1] = (bus << 15) | (tgt << 8);
mbs.logval = MBLOGALL;
isp_mboxcmd(isp, &mbs);
+ if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
+ continue;
+ }
if (get == 0) {
isp->isp_sendmarker |= (1 << bus);
- continue;
+ sdp->isp_devparam[tgt].dev_update = 0;
+ sdp->isp_devparam[tgt].dev_refresh = 1;
+ } else {
+ sdp->isp_devparam[tgt].dev_refresh = 0;
+ flags = mbs.param[2];
+ period = mbs.param[3] & 0xff;
+ offset = mbs.param[3] >> 8;
+ sdp->isp_devparam[tgt].actv_flags = flags;
+ sdp->isp_devparam[tgt].actv_period = period;
+ sdp->isp_devparam[tgt].actv_offset = offset;
+ get = (bus << 16) | tgt;
+ (void) isp_async(isp, ISPASYNC_NEW_TGT_PARAMS, &get);
}
- flags = mbs.param[2];
- period = mbs.param[3] & 0xff;
- offset = mbs.param[3] >> 8;
- sdp->isp_devparam[tgt].actv_flags = flags;
- sdp->isp_devparam[tgt].actv_period = period;
- sdp->isp_devparam[tgt].actv_offset = offset;
- get = (bus << 16) | tgt;
- (void) isp_async(isp, ISPASYNC_NEW_TGT_PARAMS, &get);
}
for (tgt = 0; tgt < MAX_TARGETS; tgt++) {
More information about the p4-projects
mailing list