diff options
author | gibbs <gibbs@FreeBSD.org> | 1997-04-26 05:03:18 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1997-04-26 05:03:18 +0000 |
commit | 96efe480c0c091aecb2f359675c74aca30f36a4a (patch) | |
tree | 038638f1456d9b6b19c596968cc4344b7dddd72c | |
parent | f18676ff22d9297535b2acd920192c055db4ae2d (diff) | |
download | FreeBSD-src-96efe480c0c091aecb2f359675c74aca30f36a4a.zip FreeBSD-src-96efe480c0c091aecb2f359675c74aca30f36a4a.tar.gz |
Print out some more diagnostic information when we reject a message.
When we request sense, don't allow disconnection. This closes a window
where we might allow an overlapped tagged and non-tagged transaction.
The correct fix is to freeze the queue for the target that requests sense
which is what will happen in the new CAM framework.
-rw-r--r-- | sys/i386/scsi/aic7xxx.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sys/i386/scsi/aic7xxx.c b/sys/i386/scsi/aic7xxx.c index 77a9981..81af392 100644 --- a/sys/i386/scsi/aic7xxx.c +++ b/sys/i386/scsi/aic7xxx.c @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aic7xxx.c,v 1.116 1997/04/14 02:27:50 gibbs Exp $ + * $Id: aic7xxx.c,v 1.117 1997/04/18 16:34:36 gibbs Exp $ */ /* * TODO: @@ -961,8 +961,9 @@ ahc_handle_seqint(ahc, intstat) { u_int8_t rejbyte = ahc_inb(ahc, REJBYTE); printf("%s:%c:%d: Warning - unknown message received from " - "target (0x%x). Rejecting\n", - ahc_name(ahc), channel, target, rejbyte); + "target (0x%x). SEQ_FLAGS == 0x%x. Rejecting\n", + ahc_name(ahc), channel, target, rejbyte, + ahc_inb(ahc, SEQ_FLAGS)); break; } case NO_IDENT: @@ -1283,7 +1284,12 @@ ahc_handle_seqint(ahc, intstat) sg->addr = vtophys(&xs->sense); sg->len = sizeof(struct scsi_sense_data); - hscb->control &= DISCENB; + /* XXX should allow disconnection, but + * can't as it might allow overlapped + * tagged commands. + */ + /* hscb->control &= DISCENB; */ + hscb->control = 0; hscb->status = 0; hscb->SG_segment_count = 1; hscb->SG_list_pointer = vtophys(sg); |