Update for SCSIPI changes. Note that capabilities update is disabled
until Matt Jacob has a change to update the driver for the latest firmware, etc. since update device parameters seems to fail once the system is really up and running, and eventually causes the controller to wedge. This may be due to a firmware bug. Per discussion with Matt.
This commit is contained in:
parent
63b8530b4e
commit
fe12736867
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: isp_netbsd.c,v 1.15 1999/07/05 20:31:36 mjacob Exp $ */
|
||||
/* $NetBSD: isp_netbsd.c,v 1.16 1999/09/30 23:06:18 thorpej Exp $ */
|
||||
/* release_6_5_99 */
|
||||
/*
|
||||
* Platform (NetBSD) dependent common attachment code for Qlogic adapters.
|
||||
@ -179,7 +179,9 @@ ispcmd(xs)
|
||||
* majority of cases will have to do some pointer deferences
|
||||
* to find out that things don't need to be updated.
|
||||
*/
|
||||
if ((xs->flags & SCSI_AUTOCONF) == 0 && (isp->isp_type & ISP_HA_SCSI)) {
|
||||
#if 0 /* XXX THORPEJ */
|
||||
if ((xs->xs_control & XS_CTL_DISCOVERY) == 0 &&
|
||||
(isp->isp_type & ISP_HA_SCSI)) {
|
||||
sdparam *sdp = isp->isp_param;
|
||||
sdp += XS_CHANNEL(xs);
|
||||
if (sdp->isp_devparam[XS_TGT(xs)].dev_flags !=
|
||||
@ -198,6 +200,7 @@ ispcmd(xs)
|
||||
isp->isp_update |= (1 << XS_CHANNEL(xs));
|
||||
}
|
||||
}
|
||||
#endif /* XXX THORPEJ */
|
||||
|
||||
if (isp->isp_state < ISP_RUNSTATE) {
|
||||
DISABLE_INTS(isp);
|
||||
@ -217,7 +220,7 @@ ispcmd(xs)
|
||||
*/
|
||||
|
||||
if (isp->isp_osinfo.blocked) {
|
||||
if (xs->flags & SCSI_POLL) {
|
||||
if (xs->xs_control & XS_CTL_POLL) {
|
||||
xs->error = XS_DRIVER_STUFFUP;
|
||||
splx(s);
|
||||
return (TRY_AGAIN_LATER);
|
||||
@ -230,7 +233,7 @@ ispcmd(xs)
|
||||
DISABLE_INTS(isp);
|
||||
result = ispscsicmd(xs);
|
||||
ENABLE_INTS(isp);
|
||||
if (result != CMD_QUEUED || (xs->flags & SCSI_POLL) == 0) {
|
||||
if (result != CMD_QUEUED || (xs->xs_control & XS_CTL_POLL) == 0) {
|
||||
(void) splx(s);
|
||||
return (result);
|
||||
}
|
||||
@ -373,7 +376,7 @@ isp_internal_restart(arg)
|
||||
if (result != CMD_QUEUED) {
|
||||
printf("%s: botched command restart (0x%x)\n",
|
||||
isp->isp_name, result);
|
||||
xs->flags |= ITSDONE;
|
||||
xs->xs_status |= XS_STS_DONE;
|
||||
if (xs->error == XS_NOERROR)
|
||||
xs->error = XS_DRIVER_STUFFUP;
|
||||
scsipi_done(xs);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: isp_netbsd.h,v 1.16 1999/09/07 22:54:45 mjacob Exp $ */
|
||||
/* $NetBSD: isp_netbsd.h,v 1.17 1999/09/30 23:06:19 thorpej Exp $ */
|
||||
/* release_6_5_99 */
|
||||
/*
|
||||
* NetBSD Specific definitions for the Qlogic ISP Host Adapter
|
||||
@ -154,19 +154,19 @@ struct isposinfo {
|
||||
#define XS_ERR(xs) (xs)->error
|
||||
#define XS_NOERR(xs) (xs)->error == XS_NOERROR
|
||||
|
||||
#define XS_CMD_DONE(xs) (xs)->flags |= ITSDONE, scsipi_done(xs)
|
||||
#define XS_IS_CMD_DONE(xs) (((xs)->flags & ITSDONE) != 0)
|
||||
#define XS_CMD_DONE(xs) (xs)->xs_status |= XS_STS_DONE, scsipi_done(xs)
|
||||
#define XS_IS_CMD_DONE(xs) (((xs)->xs_status & XS_STS_DONE) != 0)
|
||||
|
||||
/*
|
||||
* We use whether or not we're a polled command to decide about tagging.
|
||||
*/
|
||||
#define XS_CANTAG(xs) (((xs)->flags & SCSI_POLL) != 0)
|
||||
#define XS_CANTAG(xs) (((xs)->xs_control & XS_CTL_POLL) != 0)
|
||||
|
||||
/*
|
||||
* This is our default tag (simple).
|
||||
*/
|
||||
#define XS_KINDOF_TAG(xs) \
|
||||
(((xs)->flags & SCSI_URGENT)? REQFLAG_HTAG : REQFLAG_OTAG)
|
||||
(((xs)->xs_control & XS_CTL_URGENT) ? REQFLAG_HTAG : REQFLAG_OTAG)
|
||||
|
||||
#define CMD_COMPLETE COMPLETE
|
||||
#define CMD_EAGAIN TRY_AGAIN_LATER
|
||||
|
Loading…
Reference in New Issue
Block a user