Subject: kern/2726: HP Scanjet driver patch for NetBSD/Amiga
To: None <gnats-bugs@NetBSD.ORG>
From: Kenneth Stailey <kstailey@dol-esa.gov>
List: netbsd-bugs
Date: 09/01/1996 12:31:36
>Number:         2726
>Category:       kern
>Synopsis:       HP Scanjet driver patch for NetBSD/Amiga
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people (Kernel Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Sep  1 12:35:00 1996
>Last-Modified:
>Originator:     Kenneth Stailey
>Organization:
US DOL/ESA/DASM
>Release:        1.2_BETA
>Environment:
System: NetBSD owl 1.2_BETA NetBSD 1.2_BETA (OWL) #3: Wed Aug 21 18:26:07 EDT 1996 kstailey@owl:/usr/src/sys/arch/i386/compile/OWL [960807] i386


>Description:
The scanjet_ctl_{read|write} routines do not set SCSI_POLL.  This seems to
have no effect on machines as fast as a i486DX2/66, but slower machines
hang probably because the SCSI operation is not done soon enough.
>How-To-Repeat:
Put an HP ScanJet on an amiga, rebooting will hang when scanjet_ctl_write()
calls scsi_scsi_cmd().
>Fix:
This was tested on i486 and amiga.  This is for /sys/scsi/ss_scanjet.c

The line numbers may be off if you have not yet applied my patch for
HP ScanJet 4P, kern/2663.

Note that amiga needed "loadbsd -I ff netbsd" too.

--- ss_scanjet.c.pre-amiga	Sat Aug 31 21:45:33 1996
+++ ss_scanjet.c	Sat Aug 31 21:46:12 1996
@@ -311,7 +311,7 @@
 	_lto3b(size, cmd.len);
 	return (scsi_scsi_cmd(ss->sc_link, (struct scsi_generic *) &cmd,
 	    sizeof(cmd), (u_char *) buf, size, 0, 100000, NULL,
-	    flags | SCSI_DATA_OUT));
+	    flags | SCSI_DATA_OUT | SCSI_POLL));
 }
 
 
@@ -332,7 +332,7 @@
 	_lto3b(size, cmd.len);
 	return (scsi_scsi_cmd(ss->sc_link, (struct scsi_generic *) &cmd,
 	    sizeof(cmd), (u_char *) buf, size, 0, 100000, NULL,
-	    flags | SCSI_DATA_IN));
+	    flags | SCSI_DATA_IN | SCSI_POLL));
 }
 
 
>Audit-Trail:
>Unformatted: