Make Fibre Channel cards correctly note the presence/absence
of ARQ data and punt the dealing with its presence/absence to the platform layers.
This commit is contained in:
parent
79e2d3b5b3
commit
3da7ba4d41
@ -2407,11 +2407,14 @@ isp_intr(arg)
|
||||
isp->isp_update |= (1 << XS_CHANNEL(xs));
|
||||
}
|
||||
} else {
|
||||
if (XS_STS(xs) == SCSI_CHECK) {
|
||||
if (sp->req_scsi_status & RQCS_SV) {
|
||||
int amt = min(XS_SNSLEN(xs), sp->req_sense_len);
|
||||
MEMCPY(XS_SNSP(xs), sp->req_sense_data, amt);
|
||||
XS_SNS_IS_VALID(xs);
|
||||
MEMCPY(XS_SNSP(xs), sp->req_sense_data,
|
||||
XS_SNSLEN(xs));
|
||||
sp->req_state_flags |= RQSF_GOT_SENSE;
|
||||
} else if (XS_STS(xs) == SCSI_CHECK) {
|
||||
IDPRINTF(1, ("%s: check condition with no sense"
|
||||
" data\n", isp->isp_name));
|
||||
}
|
||||
}
|
||||
if (XS_NOERR(xs) && XS_STS(xs) == SCSI_BUSY) {
|
||||
@ -2453,6 +2456,10 @@ isp_intr(arg)
|
||||
if (XS_XFRLEN(xs)) {
|
||||
ISP_DMAFREE(isp, xs, sp->req_handle);
|
||||
}
|
||||
/*
|
||||
* Let the platforms cope.
|
||||
*/
|
||||
#if 0
|
||||
/*
|
||||
* XXX: If we have a check condition, but no Sense Data,
|
||||
* XXX: mark it as an error (ARQ failed). We need to
|
||||
@ -2466,6 +2473,7 @@ isp_intr(arg)
|
||||
XS_SETERR(xs, HBA_ARQFAIL);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if ((isp->isp_dblev >= 5) ||
|
||||
(isp->isp_dblev > 2 && !XS_NOERR(xs))) {
|
||||
PRINTF("%s(%d.%d): FIN dl%d resid%d STS %x",
|
||||
|
Loading…
Reference in New Issue
Block a user