I have GENESYS USB2IDE Interface Card(GL641).  And I also have
same problem(umass0: BBB bulk-in clear stall failed, IOERROR)

NetBSD was aleady fixed 
http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=19971
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/usb/umass_scsipi.c

I created patch for FreeBSD-current. Try this one.

May I commit this changes?

---
MIHIRA, Sanpei Yoshiro
Tokyo, Japan.

Index: sys/dev/usb/umass.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/usb/umass.c,v
retrieving revision 1.71
diff -u -r1.71 umass.c
--- sys/dev/usb/umass.c 21 Jan 2003 08:55:44 -0000      1.71
+++ sys/dev/usb/umass.c 26 Jan 2003 17:54:45 -0000
@@ -373,6 +373,16 @@
          UMASS_PROTO_ATAPI | UMASS_PROTO_CBI_I,
          FORCE_SHORT_INQUIRY
        },
+       /* sanpei */
+       { USB_VENDOR_GENESYS,  0x0702 /* GENESYS_GL641USB2 */, RID_WILDCARD,
+         UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
+         FORCE_SHORT_INQUIRY | NO_START_STOP | IGNORE_RESIDUE 
+       },
+       /* sanpei */
+       { USB_VENDOR_GENESYS,  GL641USB, RID_WILDCARD,
+         UMASS_PROTO_SCSI | UMASS_PROTO_BBB,
+         FORCE_SHORT_INQUIRY | NO_START_STOP | IGNORE_RESIDUE 
+       },
 
        { VID_EOT, PID_EOT, RID_EOT, 0, 0 }
 };
@@ -2367,6 +2377,11 @@
                 */
 
                if (sc->transform(sc, cmd, cmdlen, &rcmd, &rcmdlen)) {
+#if 1 /* XXX sanpei */
+                       if ((sc->quirks & FORCE_SHORT_INQUIRY) && (rcmd[0] == 
+INQUIRY)) {
+                               csio->dxfer_len = SHORT_INQUIRY_LENGTH;
+                       }
+#endif
                        sc->transfer(sc, ccb->ccb_h.target_lun, rcmd, rcmdlen,
                                     csio->data_ptr,
                                     csio->dxfer_len, dir,
@@ -2559,6 +2574,11 @@
                                    (unsigned char *) &sc->cam_scsi_sense,
                                    sizeof(sc->cam_scsi_sense),
                                    &rcmd, &rcmdlen)) {
+#if 1 /* XXX sanpei */
+                               if ((sc->quirks & FORCE_SHORT_INQUIRY) && (rcmd[0] == 
+INQUIRY)) {
+                                       csio->sense_len = SHORT_INQUIRY_LENGTH;
+                               }
+#endif
                                sc->transfer(sc, ccb->ccb_h.target_lun,
                                             rcmd, rcmdlen,
                                             &csio->sense_data,
@@ -2750,6 +2770,18 @@
                        return 1;
                }
                /* fallthrough */
+#if 1 /* XXX sanpei */
+       case INQUIRY:
+               /* some drives wedge when asked for full inquiry information. */
+               if (sc->quirks & FORCE_SHORT_INQUIRY) {
+                       memset(*rcmd, 0, cmdlen);
+                       memcpy(*rcmd, cmd, cmdlen);
+                       *rcmdlen = cmdlen;
+                       (*rcmd)[4] = SHORT_INQUIRY_LENGTH;
+                       return 1;
+               }
+               /* fallthrough */
+#endif
        default:
                *rcmd = cmd;            /* We don't need to copy it */
                *rcmdlen = cmdlen;

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to