summaryrefslogtreecommitdiff
path: root/sys/dev/isp/isp.c
diff options
context:
space:
mode:
authorMatt Jacob <mjacob@FreeBSD.org>2001-06-05 17:11:06 +0000
committerMatt Jacob <mjacob@FreeBSD.org>2001-06-05 17:11:06 +0000
commit6a23026c6ee0bf76729d493db447cc04143b80d2 (patch)
treef7c08e4267b4734627144e0c0bf1b83c87b1c8ec /sys/dev/isp/isp.c
parent7528c356f5debb40701327951e13e63e22ad367c (diff)
Notes
Diffstat (limited to 'sys/dev/isp/isp.c')
-rw-r--r--sys/dev/isp/isp.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c
index 7797a97a6fbb..6680fc457e69 100644
--- a/sys/dev/isp/isp.c
+++ b/sys/dev/isp/isp.c
@@ -1685,7 +1685,7 @@ isp_pdb_sync(struct ispsoftc *isp)
if (pdb.pdb_loopid == lp->loopid && lp->portid ==
(u_int32_t) BITS2WORD(pdb.pdb_portid_bits) &&
nwwnn == lp->node_wwn && nwwpn == lp->port_wwn &&
- lp->roles == nrole) {
+ lp->roles == nrole && lp->force_logout == 0) {
lp->loggedin = lp->valid = 1;
isp_prt(isp, ISP_LOGINFO, lretained,
(int) (lp - fcp->portdb),
@@ -1694,6 +1694,8 @@ isp_pdb_sync(struct ispsoftc *isp)
}
}
+ lp->force_logout = 0;
+
if (fcp->isp_fwstate != FW_READY ||
fcp->isp_loopstate != LOOP_SYNCING_PDB) {
return (-1);
@@ -2075,6 +2077,8 @@ isp_scan_loop(struct ispsoftc *isp)
* No need to notify anyone- go for the next one.
*/
if (i < hival) {
+ isp_prt(isp, ISP_LOGINFO, retained,
+ fcp->portdb[i].loopid, i, fcp->portdb[i].portid);
continue;
}
@@ -3791,7 +3795,6 @@ isp_parse_status(struct ispsoftc *isp, ispstatusreq_t *sp, XS_T *xs)
XS_SETERR(xs, HBA_SELTIMEOUT);
}
return;
-
case RQCS_PORT_LOGGED_OUT:
/*
* It was there (maybe)- treat as a selection timeout.