Author: will
Date: Wed Jan 21 20:32:36 2015
New Revision: 277515
URL: https://svnweb.freebsd.org/changeset/base/277515

Log:
  Fix SCSI status byte reporting on 4Gb and 8Gb Qlogic boards.
  
  The newer boards don't have the response field that indicates
  whether the SCSI status byte is present.  You have to just look to
  see whether it is non-zero.
  
  The code was looking to see whether the sense length was valid
  before propagating the SCSI status byte (and sense information) up
  the stack.  With a status like Reservation Conflict, there is no
  sense information, only the SCSI status byte.  So it wasn't getting
  correctly returned.
  
  isp.c:
        In isp_intr(), if we are on a 2400 or 2500 type board and
        get a response, look at the actual contents of the
        SCSI status value and set the RQSF_GOT_STATUS flag
        accordingly so that return any SCSI status value we get.  The
        RQSF_GOT_SENSE flag will get set later on if there is
        actual sense information returned.
  
  Submitted by: ken
  MFC after:    1 week
  Sponsored by: Spectra Logic
  MFSpectraBSD: 1112791 on 2015/01/15

Modified:
  head/sys/dev/isp/isp.c

Modified: head/sys/dev/isp/isp.c
==============================================================================
--- head/sys/dev/isp/isp.c      Wed Jan 21 20:27:11 2015        (r277514)
+++ head/sys/dev/isp/isp.c      Wed Jan 21 20:32:36 2015        (r277515)
@@ -5224,7 +5224,10 @@ again:
                        }
                        scsi_status = sp2->req_scsi_status;
                        completion_status = sp2->req_completion_status;
-                       req_state_flags = 0;
+                       if ((scsi_status & 0xff) != 0)
+                               req_state_flags = RQSF_GOT_STATUS;
+                       else
+                               req_state_flags = 0;
                        resid = sp2->req_resid;
                } else if (etype == RQSTYPE_RESPONSE) {
                        isp_get_response(isp, (ispstatusreq_t *) hp, sp);
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to